[ 부록 ] 안드로이드마켓에앱배포하기 먼저, 안드로이드마켓에앱을등록하여배포하는데필요한절차를요약해봅니다. 1 개발자등록 2 앱인증키발급 3 앱업로드 4 앱배포 5 실물단말기테스트 1 개발자등록 안드로이드앱을등록하여배포하려면먼저, " 안드로이드마켓 " 에개발자로등록해야합니다. 스텝 1 "http://www.android.com" 사이트에접속하고, 하단오른쪽 "Android Market" 버튼을클릭하여 " 안드로이드마켓 " 페이지로이동합니다. 부록 : 안드로이드마켓에앱배포하기 1
스텝 2 " 안드로이드마켓 " 페이지의하단에있는 "if you are a developer, leam about publishing your application here." 버튼을클릭합니다. 스텝 3 " 안드로이드마켓 " 에계정이없어로그인하지않았다면, 안내문과함께로그인창이나타납니다. 안드로이드마켓에등록하려면, 먼저구글계정이있어야합니다. 구글계정이있다면, " 로그인폼 (Google Account)" 에서 "Email" 란에구글에등록되어있는 email을입력하고, "Password" 란에암호를입력한후, "Sign in" 버튼을클릭하여로그인합니다. 구글계정이없다면, " 로그인폼 (Google Account)" 아래에있는 "Create an account now" 버튼을클릭하고, 구글계정을등록한후에다시시도합니다. 2 안드로이드앱개발완벽가이드
스텝 4 구글계정이없을경우, 구글계정등록페이지로이동하여필요한정보를입력하고안드로이드마켓에사용할구글계정을등록합니다. 부록 : 안드로이드마켓에앱배포하기 3
스텝 5 " 구글계정등록 " 이완료되면, 자동으로로그인되어그림과같이나타날수있습니다. 이는구글계정을사용할이메일이올바른소유자인지를확인해야한다는것을의미합니다. 스텝 6 다시 " 안드로이드마켓 " 에서방금등록한계정으로로그인하면, 그림과같이등록한이메일계정에대한 " 인증안내문 " 이나타납니다. "To have the verification email resent to xxx@xxx.xx click here" 버튼을클릭하여지정한이메일로인증요청메일을발송하도록합니다. 4 안드로이드앱개발완벽가이드
참고계정인증방식에대한계몽인터넷이보급되면서사용자에대한신용과서비스공급자에대한신뢰가서로부합해야정상적인거래가이루어질수있는문제에봉착했고, 이러한문제는시대의흐름에따라요구되는신뢰의방식이달라지고있습니다. 하지만, 신뢰와낙인은다른개념입니다. 목적이신뢰였는데, 좀더심사숙고할필요없이확실한방법인것같다는저차원적인접근으로낙인을사용하는것은근본의목적을잊어버린무책임한처사가아닐수없습니다. 한국의개인인증방식이그러한역사를잘보여줍니다. 수치스러운현상이아닐수없습니다. 필자도인터넷개발 1세대라이문제에극구반대를했지만, 결국사회를움직이는지배세력의움직임은철학과근본을상실한단기적인이익을위주로움직였습니다. 인터넷상에회원을가입하는데한국에서만사용하고, 노출되면안되며국가에서만관리되어야할주민번호등의개인정보를남발하는체계가자리잡은데대해한탄스러운결과라생각하며, 본인도이에대해아무런영향을미치지못한데무한한책임을느낍니다. 인터넷은한국에서만사용하는것이아니고전세계를대상으로움직이는네트웍입니다. 이러한간단한개념만잘이해하고있다면, 지금같이단순하고근시안적이며노예의낙인과같은인증방식은사용하지않았을것입니다. 국가에서도인터넷에대한심도있는연구가부족하여주민번호등의개인정보를사용하는데에대한규제가없었고, 이제는전세계에한국인의주민번호가떠돌아다니는상황에까지이르렀습니다. 그렇다고상황이끝났다고생각하며할수없는일이아니냐는생각을가진다면십수년전의상황은그대로반복될것입니다. 의식을가진지위권자가근본부터심도있게연구하고사회적인캠페인을일으켜하나하나교정해가야합니다. 또한, 의식있는지도자가나타나기위해서는의식있는사용자와개발자즉, 대중이이에대한요구가절실해야함을잊지않고기반부터탄탄한계몽이필요합니다. 계몽은근대에만존재해야하는역사가아닙니다. 역사는수수방관하면개탄스러운결과를보여준다는사실을잊지말아야합니다. 스텝 7 구글은계정으로등록한이메일에인증코드와함께링크주소를발송하고이메일발송결과를웹화면에출력합니다. 부록 : 안드로이드마켓에앱배포하기 5
스텝 8 구글계정으로등록한이메일을수신해보면, 구글자동메일시스템이인증키와함께구글시스템이인증을확인할수있는링크주소가이메일내용에있을것입니다. 인터넷이연결상태에서이링크주소를클릭합니다. 스텝 9 수신된이메일의인증링크를클릭하여구글에인증키가전달되면웹화면에이메일인증이완료되었다는메시지가나타납니다. 화면하단에있는 "Click here to continue" 버튼을클릭하거나 " 안드로이드마켓 " 페이지로다시돌아가로그인을합니다. 6 안드로이드앱개발완벽가이드
스텝 " 안드로이드마켓 " 페이지로돌아가로그인을하면, 그림과같이 " 안드로이드마켓 " 에개발자로등록하는화면이나타납니다. 이화면에서필요한정보를입력하고 "Continue" 버튼을클릭합니다. 물론, 이미안드로이드개발자로등록되어있다면이화면은나타나지않고자신의마켓관리페이지로이동합니다. 안드로이드개발자를등록하려면, 다음과같이수행해야할 3 가지조건이있습니다. 1 개발자프로필등록 2 개발자등록비신용카드결제 3 안드로이드마켓에대한배포계약 안드로이드개발자등록에필요한항목을살펴보면다음과같습니다. 1 Developer name : 개발자이름 ( 임의로주시면됩니다.) 부록 : 안드로이드마켓에앱배포하기 7
2 Email Address : 이메일주소 ( 로그인한구글계정으로잡혀있습니다.) 3 Website URL : 홈페이지주소 ( 자신의홈페이지주소를기록합니다.) 4 Phone Number : 전화번호 ( 자신의핸드폰번호또는집전화번호를입력합니다.) 참고전화번호기재전화번호기재사항에서주의해야할것은맨앞부분에 "+" 기호를반드시붙여주어야합니다. 예 ) 본인의핸드폰번호가 010-1234-5678 이라면 [+821012345678] 을기재합니다. 앞의숫자 82는한국국가번호입니다. 핸드폰의경우 010의앞자리 0을제외한나머지 10과뒤의번호를그대로기재해주면됩니다. 지역번호경우도마찬가지로서울일경우 02 지역번호에서 0을제외한 2부터기재하여주면됩니다. 스텝 개발자등록비결제에대해안내하는창이나옵니다. 안내문을확인하고 "Continue" 버튼을클릭합니다. 스텝 등록비결제화면이나타나면, 필요한정보를입력하고, "Agree and Continue" 버튼을클릭합니다. 8 안드로이드앱개발완벽가이드
부록 : 안드로이드마켓에앱배포하기 9
스텝 등록비결제에대한정보가올바르면, 그림과같이나타나고, 결제를승인하려면, "Place your order now" 버튼을클릭합니다. 스텝 결제가진행되는데약간의시간이소요됩니다. 10 안드로이드앱개발완벽가이드
스텝 결제가성공하면, 결제완료창이나타납니다. 원하는대로결제가완료되었으면, "Return to Android Market" 버튼을클릭하여 " 안드로이드마켓 " 으로다시돌아갑니다. 스텝 " 안드로이드마켓 " 으로이동하면안드로이드개발자의응용프로그램배포에대한동의페이지가나타납니다. 동의여부에체크한후 "I agree, Continue" 버튼을클릭합니다. 부록 : 안드로이드마켓에앱배포하기 11
스텝 그림과같이안드로이드등록완료메시지가나타나면, 안드로이드개발자등록신청이완료되고, 안드로이드에서승인해주기를기다립니다. 필요하다면 "Upload Application" 버튼을이용하여승인되기전에개발자가개발한응용프로그램을업로드할수있습니다. 참고개발자등록이완료되면, 개발자가제작한앱을업로드는할수있지만, 곧바로퍼블리싱을할수는없습니다. 등록이되었어도진행중이기때문입니다. 등록완료안내문에안내하듯이곧바로배포할수는없습니다. 안드로이드관리자가신청사항을검토하고승인해주는데, 하루정도의시간이소요됩니다. 2 안드로이드앱인증키발급 안드로이드앱은 ".apk" 파일형식으로배포하며, 안드로이드앱을배포하려면, 개발한안드로이드앱에대한신뢰를보증할수있는인증키를앱에설정해야합니다. 개발당시에가상기기에설치할수있었던것은디버깅용인증키가자동으로사용되었기때문입니다. 이상태에서안드로이드마켓에등록하면안됩니다. 디버깅용인증키를배포용인증키로교체해야합니다. 자바기반의응용프로그램개발은모두터미널을이용하여구현할수도있지만, 명령어를일일이외워야하고입력해야하는비효율적인면이있습니다. 응용프로그램이복잡해지면복잡해질수록이 12 안드로이드앱개발완벽가이드
러한상황은더심해지고대중적인개발도구로자리잡기는어렵습니다. 다행히이러한배경에서이클립스에서는앱인증키를손쉽게생성할수있도록지원하고있습니다. 2.1 이클립스를이용한앱인증키생성 스텝 1 적당한위치 ("C:\Users\owl") 에앱키폴더 ("Keytools") 를생성하고, 앱키폴더 ("Keytools") 에앱배포폴더 ("Test") 를생성합니다. " 앱배포폴더 " 는배포할 ".apk" 파일과인증키파일을보관하는데사용됩니다. 스텝 2 이클립스에서배포할패키지를선택하고마우스오른쪽버튼을클릭하여콘텍스트메뉴를연후, [ Android tools > Export signed Application Package ] 메뉴를실행합니다. 부록 : 안드로이드마켓에앱배포하기 13
스텝 3 이미선택된프로젝트명이기본값으로잡혀있습니다. 필요하다면, "Browse..." 버튼을이용하여패키지를변경할수있습니다. 배포할패키지를확인하고, "Next" 를클릭합니다. 스텝 4 처음으로배포하는상황이므로 "Keystore selection" 화면에서 "Ceate New Keystore" 를선택하고, "Browse..." 버튼을이용하여앞서생성한 " 앱배포폴더 " 를지정합니다. 앱배포를보호할암호를입력한후 "Next" 버튼을클릭합니다. 14 안드로이드앱개발완벽가이드
"Keystore selection" 화면의항목을살펴보면다음과같습니다. Location : 키를저장할위치를설정합니다. 앞서생성한폴더를선택하고, 그림과같이확장자를 ".keystore" 로저장합니다. Password : 암호를 6 자리이상으로임의로설정합니다. Confirm : 암호를재입력하여줍니다. 스텝 5 "Key Creation" 화면이나타나면, 새로생성할앱인증키에대한정보를입력하고, "Next" 버튼을클릭합니다. 부록 : 안드로이드마켓에앱배포하기 15
"Key Creation" 화면의항목을살펴보면다음과같습니다. Alias : 인증키정보에대한별명을입력합니다. Password : 인증키에대한암호를입력합니다. Confirm : 인증키암호를재입력합니다. Validity (years) : 인증키의유효기간을입력합니다. 단위는 1년이며, 최대 1000년까지입력할수있습니다. First and Last Name : 개발자의이름을입력합니다. Organizational Unit : 소속단체에대한부서명을입력합니다. Organization : 소속단체명을입력합니다. City or Locality : 시또는지역명을입력합니다. State or Province : 주또는도명을입력합니다. Country Code (XX) : 국가코드를입력합니다. 대한민국의경우 KR을입력합니다. 스텝 6 "Destination and key/certificate checks" 화면이나타나면, "Browse..." 버튼을이용하여배포파일을저장할위치와파일명을정의하고, "Finish" 버튼을클릭합니다. 16 안드로이드앱개발완벽가이드
스텝 7 앱배포폴더를확인해보면그림과같이앱배포본 (Test.apk) 과인증키파일 (test-key.keystore) 이생성된것을확인할수있습니다. 이미생성한인증정보를이용하여다시배포본을만들려면다음과같이합니다. 스텝 8 [ Android tools > Export signed Application Package ] 메뉴를실행하여 "Export Android Application" 창을열고, "Next" 버튼을클릭하여다음으로넘어갑니다. 배포할패키지를선택한후, "Next" 버튼을클릭합니다. 부록 : 안드로이드마켓에앱배포하기 17
스텝 9 "Use existing keystore" 를선택하고, 앞서설명한것과같이필요한정보를입력한후 "Next" 버튼을클릭합니다. 스텝 "Alias" 항목에서이미생성했던키를선택하고, "Password" 를입력한후, "Next" 버튼을클릭합니다. 18 안드로이드앱개발완벽가이드
스텝 "Destination APK file" 을지정하고, "Finish" 버튼을클릭합니다. 2.2 터미널을이용한앱인증키생성 터미널명령에익숙한개발자라면, 다음에서설명하는바와같이앱인증키를터미널명령으로생성할수있습니다. "MS Windows" 에서는명령프롬프트 (CMD.exe) 를실행하고, "Mac OS X" 와같은유닉스계열에서는터미널을실행합니다. 스텝 1 명령프롬프트또는터미널을실행합니다. 스텝 2 "mkdir" 명령으로 " 앱키폴더 (C:\User\owl\Keytools)" 를생성하고, "cd" 명령으로 " 앱키폴더 " 로이동합니다. 스텝 3 다음과같이 "keytool" 명령을이용하여 " 앱키생성 " 을시작합니다. 부록 : 안드로이드마켓에앱배포하기 19
앱키생성명령형식 : keytool -genkey -v -keystore " 앱키파일명 " -alias -alias_owl -keyalg RSA -validity " 유효기간 ( 년 )" 앱키생성명령사례 : keytool -genkey -v -keystore test/test-key.keystore -alias -alias_ owl -keyalg RSA -validity 10000 스텝 4 앱키가올바르게생성되면, 그림과같이나타나고, 파일탐색기에서생성된앱키파일을확인할수있습니다. 20 안드로이드앱개발완벽가이드
스텝 5 [ Andoird Tools > Export Unsigned Application Package ] 메뉴를실행하여배포할패키지파일을생성합니다. 스텝 6 "Export Project" 창이나타나면, " 앱키파일 " 이있는폴더에적절한파일명으로저장합니다. 부록 : 안드로이드마켓에앱배포하기 21
스텝 7 안드로이드플러그인이배포본을생성하면, 그림과같이확인창이나타납니다. 지정한저장폴더에서생성된배포본파일을확인할수있습니다. 스텝 8 명령프롬프트또는터미널로돌아가다음과같이배포본에앱키를적용합니다. 앱키적용명령형식 : jarsigner -verbose -keystore test/test-key.keystore test/test.apk alias_owl 앱키적용명령사례 : jarsigner -verbose -keystore " 앱키파일명 " " 앱배포파일 " " 키별명 " 22 안드로이드앱개발완벽가이드
3 앱업로드와앱배포 앱인증키가탑재된배포본을준비했다면, " 안드로이드마켓 " 에배포파일을업로드할수있습니다. 스텝 1 웹브라우저로 " 안드로이드마켓 " 에접속하여로그인하면, 앱을업로드할수있는화면이나타납니다. 화면아래쪽에있는 "Upload Application" 버튼을클릭합니다. 그림에서보는바와같이 "Your Registration to the Android Market is approved!" 라는문구가나타나면, 안드로이드사이트에서개발자로승인이되었다는의미이므로앱을업로드한후에배포처리까지할수있는권한이부여된것입니다. 스텝 2 "Upload an Application" 화면이나타나면, 안드로이드앱배포파일 (XXX.apk) 과홍보용이미지파일을업로드하고, 응용프로그램에대한설명을입력한후에 "Save" 버튼을클릭합니다. 부록 : 안드로이드마켓에앱배포하기 23
안드로이드앱을업로드하는데필요한항목을살펴보면, 다음과같습니다. 스텝 3 "Upload assets" 은앱관련파일을업로드하는곳입니다. "Application.apk file" 항목에서 " 찾아보기 " 버튼을클릭합니다. 24 안드로이드앱개발완벽가이드
스텝 4 그림과같이미리준비한배포파일 (Test.apk) 을선택하고 " 열기 " 버튼을클릭합니다. 스텝 5 "Upload" 버튼을클릭하여업로드를실행합니다. 스텝 6 업로드를실행하면업로드폼이유지된상태에서 " 업로드중 " 화면이나옵니다. 스텝 7 업로드가완료되면, 그림과같이등록된애플리케이션의버전이나오며업로드된것을확인할수있습니다. 부록 : 안드로이드마켓에앱배포하기 25
스텝 8 "Screenshots" 항목은마켓에서응용프로그램에대한홍보장면으로게시할이미지를업로드하는항목입니다. 안내문에나타나는바와같이이미지파일을준비할때는 "24 비트 PNG" 또는 "JPEG" 로해야하며, 이미지의크기는 " 가로x세로 " 를 "320w x 480h" 또는 "480w x 854h" 로준비해야합니다. 스텝 9 이미지가업로드되어그림과같이화면에서확인할수있습니다. 필요에따라 "Replace this image" 버튼과 "delete" 버튼으로다시다른이미지로교체할수있습니다. 스크린샷이미지는화면에서안내하는바와같이, 2개까지가능하며 "add another" 버튼을이용하여이미지를더추가할수있습니다. 스텝 "Promotional Graphic" 항목은응용프로그램을소개할때사용하는이미지를등록하는곳입니다. "2 4 비트 PNG" 또는 "JPEG" 이미지의 " 가로x세로 " 를 "180w x 120h" 크기로준비하여업로드합니다. 26 안드로이드앱개발완벽가이드
스텝 프로모션이미지가업로드되면그림과같이나타납니다. 스텝 "Listing details" 항목은응용프로그램에대한상세내용을작성하는곳입니다. Language : 기본값으로 "English (en_us)" 영어가설정되어있습니다. "add language" 버튼을이용하여언어를추가할수있습니다. Title : 등록할애플리케이션의제목을기재합니다. 최대 30 글자로되어있습니다. Description : 등록할애플리케이션에대한설명을작성합니다. 최대 325 글자입니다. Promo Text : Promo(Promotion의약자 ) 로홍보용글을작성하는곳입니다. 최대 80 글자입니다. 부록 : 안드로이드마켓에앱배포하기 27
Application Type : 응용프로그램유형을선택합니다. Category : "Application Type" 에따라카테고리는달라지며, 응용프로그램에대한분류를선택하 는항목입니다. 스텝 Publishing options : 배포옵션을설정합니다. Copy Protection : 복사방지설정에대한여부를설정합니다. - "Off" 이면, 단말기에서응용프로그램복사를허용합니다. - "On" 이면, 단말기에서응용프로그램을복사하지못하도록합니다. 이옵션은응용프로그램을설치하는데필요한메모리자원을좀더소모합니다. 28 안드로이드앱개발완벽가이드
Locations : 배포할국가를선택합니다. 스텝 Contact information : 배포할응용프로그램에대한연락정보를입력합니다. Website : 배포할응용프로그램에대한관련사이트주소를입력합니다. Email : 배포할응용프로그램에대한이메일주소를입력합니다. Phone : 배포할응용프로그램에대한전화번호를입력합니다. 부록 : 안드로이드마켓에앱배포하기 29
스텝 Consent : 배포할응용프로그램이 " 안드로이드콘텐트가이드라인 (Android Content Guidelines)" 에부합하는지를서명하고, 약관에동의하는지를체크합니다. 물론, 이두사항에동의하지않으면다음스텝으로진행할수없습니다. "Publish" 버튼을클릭하여작성한내용을저장합니다. 스텝 등록이완료되면, "All Android Market Listings" 에서업로드한응용프로그램을확인할수있습니다. 그림과같이등록한앱이 "Unpublished" 라고나타나면, 아직공개되지않은상태임을의미합니다. 이경우앱을실제배포하려면, 목록에서앱의제목을클릭하여, 다시앱의수정화면으로이동합니다. 30 안드로이드앱개발완벽가이드
스텝 앱수정화면에서다시 "Publish" 버튼을클릭하여배포처리합니다. 스텝 올바르게배포되었다면, 목록에서해당앱이 "Published" 로표시됩니다. 배포된앱목록에서 "Errors" 버튼을클릭해봅니다. 부록 : 안드로이드마켓에앱배포하기 31
스텝 안드로이드에서는 "Application Error Reports" 화면을통해배포에대한오류상태를보여줍니다. 스텝 배포된앱을배포중지하려면, 앱목록에서앱의제목을클릭하고, 앱수정폼으로이동하여그림과같이 "Unpublish" 버튼을클릭합니다. 32 안드로이드앱개발완벽가이드
스텝 21 배포중지가올바르게적용되었다면그림과같이앱목록에 "Unpublished" 라고나타나는것을확인할수있습니다. 4 배포실무및단말기실험 이전과정은실험을목적으로안드로이드마켓에앱을등록하는방법을살펴보았으나, 실무에서는여러가지고려해야할사항들이많이있습니다. 실제배포된앱을실물단말기에서다운받아설치해보는과정을수행해야완전히배포를완료했다고볼수있습니다. 본서에서는 Android 2.2(API Level 8) 버전을기준으로개발했지만, 실제배포할때는 Android 2.1 버전사용자를위해 2.1 버전으로다운그레이드 (Downgrade) 하기로합니다. 앱을개발하다보면이런경우가종종발생합니다. 다운그레이드과정은앱의특성에따라각양각색이겠지만, 다음과정을통해간접경험을얻을수있을것입니다. 4.1 앱의버전변경하기 앱버전을변경하기전에 [Refactor > Rename] 메뉴를이용하여프로젝트명을 "appsitemarket" 으로변경합니다. 앱의버전은현재 2.2이므로배포정책에따라버전을다음과같이 2.1로바꾸어줍니다. 부록 : 안드로이드마켓에앱배포하기 33
스텝 1 "Package Explorer" 창에서 "appsitemarket" 를선택하고, " 콘텍스트메뉴 > Properties" 메뉴를실행합니다. 스텝 2 그림과같이 "Properties for..." 창을열고, [Android > Google APIs 2.1] 을체크하고, "OK" 버튼을클릭합니다. 34 안드로이드앱개발완벽가이드
스텝 3 버전을변경하고나면, 버전의차이로인해발생하는오류가나타납니다. 본사례의경우 "src/com.owl.app/cmshttp.java" 파일에오류표시가나타납니다. 스텝 4 "src/com.owl.app/cmshttp.java" 파일을열고 "Problems" 창을열어오류원인을파악해보면, 그림과같이 "setpluginstate()" 메소드에오류가있음을알수있습니다. 스텝 5 안드로이드매뉴얼에서 android.webkit.websettings.setpluginstate() 메소드에대한정의를살펴봅니다. 그림에서보는바와같이이메소드는 "API Level 8(2.2 버전 )" 이상에서만지원한다는것을알수있습니다. 부록 : 안드로이드마켓에앱배포하기 35
스텝 6 버전차이때문에발생한문제이므로 2.1 버전에서지원하는 setpluginsenabled() 로대체하고, 그림과같이 setpluginstate() 메소드는주석처리합니다. 4.2 AndroidManifest.xml 의 API Level 정의 스텝 1 앱배포를위해서반드시 "AndroidManifest.xml" 에서 "Min SDK Version" 과 "Target SDK version" 을정의합니다. 36 안드로이드앱개발완벽가이드
"Manifest > Uses Sdk" 를선택하고, "Min SDK version" 과 "Target SDK version" 값으로각각 2.1 버전의 "API Level" 인 "7" 을입력합니다. 스텝 2 AndroidManifest.xml 파일을소스에서확인하면, 다음과같습니다. 4.3 배포키발급 스텝 1 앞서 " 앱인증키생성 " 과정에서와같은방식으로 "appsitemarket.keystore" 라는앱키파일을생성합니다. 부록 : 안드로이드마켓에앱배포하기 37
- 앱키생성명령 : keytool -genkey -v -keystore " 앱키파일명 " -alias " 별명 " -keyalg " 암호화알고리즘 " -validity " 유효기간 " 사례 : keytool -genkey -v -keystore appsitemarket.keystore -alias alias_owl -keyalg RSA -validity 10000 스텝 2 생성된 "appsitemarket.keystore" 를이용하여다음과같이 " 인증서지문 (MD5 fingerprint)" 을구합니다. - 명령어 : keytool -list -alias " 별명 " -keystore " 인증키 " 사례 : keytool -list -alias alias_owl -keystore appsitemarket.keystore 38 안드로이드앱개발완벽가이드
스텝 3 배포본 (XXX.apk) 에앱인증키 (appsitemarket.keystore) 를적용합니다. 이과정을일명 " 앱인증키사인 " 이라고합니다. - 명령어 : jarsigner -verbose -keystore [ 앱인증키 ] [ 배포본 ] [ 별명 ] 사례 : jarsigner -verbose -keystore appsitemarket.keystore appsitemarket.apk alias_owl 4.4 단말기실험 스텝 1 앞서설명한바와같이마켓에 "appsitemarket.apk" 파일을업로드하고, 그림과같이 "Published" 처리합니다. 주의배포버전관리안드로이드마켓은소프트웨어에대한일반적인배포규칙을따릅니다. 따라서한번배포된파일의버전에대한번복을허용하지않습니다. 만일, 배포후에예기치않은문제가발견되어디버깅한후재배포하려면, AndroidManifest.xml에서버전을올려야합니다. 부록 : 안드로이드마켓에앱배포하기 39
주의배포패키지의고유성안드로이드마켓에배포할패키지는고유해야합니다. 따라서본서에서는패키지명으로 com.owl.app. XXX를사용하고있습니다. 만일이패키지명을이미마켓에다른배포자가사용중이라면, 패키지명을바꾸어배포해야합니다. 스텝 2 그림과같이실험할단말기에서마켓으로들어가자신이배포한앱을검색을하고, 실험할앱을선택합니다. 스텝 3 선택한앱에대한상세정보가나타납니다. 앱을배포할때정의한앱의정보가올바르게나타나는지를확인하고, 설치버튼을클릭하여앱을단말기에설치합니다. 40 안드로이드앱개발완벽가이드
스텝 4 그림과같이설치하는과정에앱에서사용권한에대한경고가나타납니다. 사용권한에대한수락의의미로 " 확인 " 을클릭합니다. 스텝 5 설치가완료되면, 단말기에앱아이콘이나타납니다. 그런데, 본사례에서는그림에서보는바와같이앱아이콘이안드로이드기본아이콘으로출력됩니다. 나중에디버깅할계획을잡고, 다음실험을위해앱아이콘을클릭하여앱을실행합니다. 부록 : 안드로이드마켓에앱배포하기 41
스텝 6 앱이실행되면, 각화면이의도대로출력되는지확인하고특히, 지도기능이있는앱이라면지도가잘나타나는지확인해야합니다. 주의구글맵배포키구글맵기능을탑재한앱의경우, 그림과같이구글맵키를 " 디버그키 " 에서 " 배포키 " 로변경해야합니다. 구글맵배포키를발급받는방식은본서 28장에서언급한바와같이, 디버그용구글맵인증키를발급받는방식과동일하되, 디버그용앱키 (debug.keystore) 대신배포용앱키 ( 사례 : appsitemarket.keystore) 를사용하여만든 " 인증서지문 (MD5)" 를사용해야합니다. 42 안드로이드앱개발완벽가이드
4.5 디버깅및 2 차배포 앞단락에서발견된오류를디버깅하고앱버전을교정한후재배포하는과정을살펴봅니다. 스텝 1 앱아이콘으로사용할이미지를준비합니다. 본사례에서는그림과같이 "logo.png" 파일을준비합니다. 스텝 2 "Package Explorer" 창에서 "res/drawable" 폴더에 "logo.png" 파일을 " 드래그앤드롭 (Drag&Drop)" 하여등록합니다. 스텝 3 AndroidManifest.xml 파일을열고, 버전코드 (versioncode) 를 "02" 로올리고, 준비한앱아이콘 (@ drawable/logo) 을등록합니다. 부록 : 안드로이드마켓에앱배포하기 43
스텝 4 [ 프로젝트선택 > 콘텍스트메뉴 > Android tools > Export unsigned application...] 을이용하여 "appsitemarket.apk" 파일을새로생성합니다. 스텝 5 터미널에서그림과같이새로만든배포본에앱키를적용합니다. 스텝 6 마켓목록에서업그레이드할앱을선택하고, 그림과같이 [Upload Upgrade] 버튼을클릭합니다. 스텝 7 "Upload an Application" 항목에서업그레이드할앱파일 (.apk) 을찾아다시업로드합니다. 44 안드로이드앱개발완벽가이드
스텝 8 업그레이드한앱이성공적으로등록되면그림과같이앱아이콘이미지가원하는대로나타나며 VersionCode도업그레이드된것을확인하고, "Publish" 처리합니다. 스텝 9 단말기에서다시업그레이드한앱을검색하면아래의왼쪽그림과같이 " 업데이트가있습니다." 라는안내문이나타납니다. 이앱을클릭하여업그레이드합니다. 스텝 오른쪽그림과같이업그레이드한앱의아이콘이개발자의의도에맞게나타납니다. 부록 : 안드로이드마켓에앱배포하기 45