본문 바로가기

Program/Android

Android Project Auto Create

** 개인적 메모입니다. 태클 사절 **

0. Android project create.  
1. R.java create.
2. compile.
3. Dalvik dx.
4. make package file.
5. signing.


직접 android package 만들기

0. Create Android Project
<sdk>\tools>android create project -t "android-7" -n PROJECT_NAME -p PROJECT_PATH -a BASIC_ACTIVITY_NAME -k PACKAGE_NAME
 
 
1. R.java 생성하기
1.1 R.java
먼저 R.java라는 파일을 생성해야 한다. 이 R.java 에 대한 설명은 http://code.google.com/android/intro/hello-android.html 에 나와 있다.

A project's R.java file is an index into all the resources defined in the file. You use this class in your source code as a sort of short-hand way to refer to resources you've included in your project.

요약하면, project에서 쓰이는 resource 의 index라고 할 수 있다. 실제로 위의 경로에 가보면 R.java 의 example을 보여주는데 각 변수에 해당 resource 에 대한 주소값이 할당되어 있다.

1.2 R.java 생성
aapt 라는 android sdk 안에 있는 android asset packaging tool 을 이용한다.

>aapt package -m -J src -M AndroidManifest.xml -S res -I "c:\Program Files\Android\android-sdk-windows-1.0_r1\android.jar"

이러면 project/src 에 R.java 가 생겼을 것이다.
이제 *.java 를 compile 해보자.

2. compile .java files
각 .java 에 대해 아래와 같이 명령어를 실행하면 된다. 여기서는 Hello.java 와 R.java 밖에 없기 때문에 2개의 file 만 실행한다.

>javac -d bin\classes -classpath bin\classes -bootclasspath "c:\Program Files\Android\android-sdk-windows-1.0_r1\android.jar" src\com\kmaru\helloroid\R.java

>javac -d bin\classes -classpath bin\classes -bootclassp
ath "c:\Program Files\Android\android-sdk-windows-1.0_r1\android.jar" src\com\km
aru\helloroid\Hello.java

3. .class 를 Dalvik JVM 용으로 변환하기
android 는 일반적인 JVM 을 쓰지 않는다. Dalvik 이라는 새로운 JVM을 만들어서 사용하는데 이것에 대해서 알고 싶다면 아래를 참고하자.
http://ko.wikipedia.org/wiki/%EB%8B%AC%EB%B9%85_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0

D:\Project\eclipse\Hello>dx --dex --output="D:\Project\eclipse\Hello\bin\classes.dex" --positions=lines "D:\Project\eclipse\Hello\bin\classes"

4. .apk 만들기 - package file 만들기
다음은 .apk 를 만들어야 한다. 이 .dex file 들을 하나로 묶어주는 역할을 한다고 보면 된다.
이 하나의 package가 하나의 app이 되는 것이다.
aapt의 설명은 help 에도 잘 나와 있다. aapt package 는 package와 관련된 작업을 할 때 사용한다.

D:\Project\eclipse\Hello>aapt package -f -M AndroidManifest.xml -S res -I "c:\Program Files\Android\android-sdk-windows-1.0_r1\android.jar" -F bin\Hello.apk

이제 만들어진 package 의 내용을 확인해 보자. 이때 사용하는 것이
aapt list 이다.

//.apk 내용 확인
D:\Project\eclipse\Hello>aapt list bin\Hello.apk
res/layout/main.xml
AndroidManifest.xml
resources.arsc


5. apkbuilder를 이용해 Hello-debug.apk만들기
이제 거의 다 되었다. 마지막으로 우리가 만든 package에 signing 을 해야 한다.
보통 자신이 만든 application 에 sign 을 해서 publishing 이 이루어진다.
지금 같은 경우는 test를 위해 debug 용의 debug.keystore 를 이용해 publishing 을 한 것이다.
나중에 직접 배포하게 될때는 개인의 key를 이용해야 할 것이다. 자세한 사항은 밑을 참고하자.
http://code.google.com/android/devel/sign-publish.html#signing

D:\Project\eclipse\Hello>apkbuilder d:\Project\eclipse\Hello\bin\Hello-debug.apk -z d:\Project\eclipse\Hello\bin\Hello.apk -f d:\Project\eclipse\Hello\bin\classes.dex -rf d:\Project\eclipse\Hello\src -rj d:\Project\eclipse\Hello\libs

Using keystore: C:\Documents and Settings\user\Local Settings\Application Data\Android\debug.keystore

D:\Project\eclipse\Hello>aapt list bin\Hello-debug.apk
res/layout/main.xml
AndroidManifest.xml
resources.arsc
classes.dex
META-INF/MANIFEST.MF
META-INF/CERT.SF
META-INF/CERT.RSA

여기서 주의할점은 path를 fullpath로 적어줘야 한다.
apkbuilder 가 있는 위치에서 path를 찾기 때문에 상대경로를 적으려면 apkbuilder 의 위치에서 찾아야 할 것이다.
위에서 보이는 것 처럼 apkbuilder를 사용하면 META-INF 관련 file이 더 생기게 된다.

참고로 sign 을 하지 않으면 emulator 에서도 돌아가지 않는다.
아마 설치를 하면 아래와 같은 error를 보게 될 것이다.
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]


6. emulator 구동하기
c:\Program Files\Android\android-sdk-windows-1.0_r1\tools\emulator.exe
를 실행하면 된다. 이것도 갖가지 옵션을 붙여서 실행가능한데 옵션에 관한 설명은 아래를 참고하자.
http://code.google.com/android/reference/emulator.html#startup-options

여기서 사용할 것은 사용자가 만든 application 부분만 지우는 작업이 필요한다.
그때사용할 것이 -wipe-data라는 option이다.
>emulator -wipe-data
로 실행하면 된다.

7. .apk 설치하기
//adb install
이 emulator 에 만든 hello 라는 program을 설치 해야 한다.
이때 쓰이는 것이 android debug bridge(adb) 이다.

D:\Project\eclipse\Hello>adb install bin\Hello-debug.apk
271 KB/s (0 bytes in 4346.000s)
pkg: /data/local/tmp/Hello-debug.apk
Success

이러면 성공이다.
이 작업은 emulator가 돌고 있는 상황에서 해줘야 한다.
당연히 설치하고 난 후 바로 emulator에서 확인이 가능하다.
linux 에서 module을 올리는 작업과 비슷하다고 여기면 될 듯 하다.