본문 바로가기

Android

앤드로이드 어플리케이션 설치 및 환경 설정 #2 - install the Android App. & set the configuration #2


2. Android App. public deploy 하기

Android App.를 개발하여 에뮬레이터에서도 돌려보고 자신의 디바이스에서도 돌려봤다면

이제 더 넓은 세계로 나가보자~~^^

 다른 사용자에게 apk. 형태로 배포하기 위한 방법(Android Market 포함)을 알아보겠다.

이번에 예제로 사용될 어플리케이션은 Lotto Generato(2008년 10월경에 Notepad 어플리케이션을

참고하여 제작) 이다. 


<Versioning>

배포하기 위한 어플리케이션이므로 배포이후에 업그레이드/유지를 위한 버젼관리는 필수이다.

AndroidManifest.xml 파일에 아래의 정보가 필수적으로 필요하다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://kepricon.tistory.com/script/powerEditor/pages/"
      package="com.tistory.kepricon"
      android:versionCode="1"
      android:versionName="1.0.0">

  <uses-sdk android:minSdkVersion="1" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Lotto"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
-AndroidManifest.xml 파일

Android Market에 배포하기 위해선 빨간 글씨로 된 4개의 태그가 정의 되어야 하며

실행 가능한 sdk 버젼의 정의가 필요하면 녹색 글씨로된 태그를 사용하여 표현하면 된다.

각 필수 태그의 의미와 목적은 여기에서 정확히 확인할 수 있다.(이것도 설명하면 너무 길어짐)


<Signing>

모든 앤드로이드 어플리케이션은 deploy되기 전에 Digital Signed가 필요하다. 

다른 모바일 플랫폼과는 달리 Certificate Authority(CA)로 부터 Digital Certificates를 구매할 필요없이 

자신의 personal certificate를 생성하여 앤드로이드 어플리케이션에 sign하면 된다.

즉 F11을 눌러 애뮬레이터에 app.를 배포하면 자동으로 이클립스가 sign 후 애뮬레이터에서 돌아갔던것이다.
(그 증거로, 이클립스에서 window - Preferences - Android - Build 에 가보면 Default debug keystore가 지정되어 있는것을 알 수 있다.)

자 이제 배포할 어플리케이션을 apk로 만들어 보자

이클립스 패키지 익스플로어 -> 배포할 app.(Lotto Generator)에서 우클릭 -> Android Tools -> Export Unsigned Application Package.. 클릭 -> 적당한 경로에 apk 저장(lotto.apk 로 저장함)

기쁜 마음에 바로 adb install c:\lotto.apk 명령어를 이용하여 인스톨을 시도해 보았다.

certificates 되지 않았기 때문에 error 발생



하지만 위의 그림과 같이 에러가 발생한다. 이유는 역시 signing이 되지 않은 app. 이기 때문이다.

어플리케이션을 배포하기 위해서는 keystore(private keystore/key를 생성하기 위해), jarsigner(app.에 keystore를 sign 하기 위해)를 사용해야 한다.

두개의 실행 파일 모두 jdk에 포함되어서 나온다. 사용하기 편리하기 위해서는 path 설정을 해두면 편리하다.(%JAVA_HOME%\bin 경로에 있음)

cmd창에서 아래와 같이 입력하여 key를 생성한다.
=> C:\lotto>keytool -genkey -v -keystore lotto.keystore -alias lotto -keyalg RSA -validity 10000

아래 그림과 같이 비밀번호 및 해당하는 정보를 입력한다.


위 명령이 제대로 처리 되었다면 lotto.keystore 가 생성되었을 것이다.

cmd창에 아래와 같이 입력하여 lotto.apk에 생성된 key를 signing 한다.
=> C:\lotto>jarsigner -verbose -keystore lotto.keystore lotto.apk lotto

lotto.keystore에서 설정한 비밀번호를 입력하게 되면 아래 그림과 같이 lotto.apk에 lotto.keystore을 통해 signing을 하게된다.

또한 signing한 apk가 verify되었는지도 같이 검사해준다.

cmd창에 아래왁 ㅏㅌ이 입력하여 lotto.apk가 verfied한지 검사한다.
=> C:\lotto>jarsigner -verify -verbose lotto.apk 



이렇게해서 생성된 apk는 public하게 배포하여 다른 사용자들의 피드백을 받을 수 있을것이다.

현재까지 포스팅 내용을 적용한 apk 파일이다.     

<참고 : apk install & uninsatll>

이제 adb를 이용하여 연결된 G1폰에 올려보겠다.

cmd창에 아래와 같이 입력한다.
=> C:\lotto>adb install  lotto.apk 

success 라는 결과를 보게 될것이다.

참고로 apk를 지우는 방법은 아래와 같은 명령어를 입력하면 된다.
=>  C:\lotto>adb uninstall  com.tistory.kepricon

어플리케이션 이름을 입력하는게 아니라 패키지 이름을 입력해야 한다.

출저 :
http://www.androidside.com/bbs/board.php?bo_table=03_2&wr_id=163