れさくのブログ

れさくのブログ

*

おまけ:本当は大変なAndroid開発

   

スクールで作ったapkファイルがあれば、「新規で」アプリリリースするなら簡単。

ここから先は自力で可能です。

しかし自分の場合、かなりやっかいな事情がありました。

アプリはすでに3年前にリリース済みなので、新規ではなく「アップグレード」となります。

つまり今回作ったアプリが、3年前のアプリのバージョンアップ版であることを「証明」する必要があります。

しかし3年前は、「ある方に無署名のapkファイル作ってもらい」「れさくの環境で署名し」「れさくの環境でzipalignし」「れさくのアカウントでストアにアップ」していました。

そして現在、3年前とはPCの環境も違えば当時の情報もほとんどない、という状態です。

たぶん分かる人がここまで読むと、目を背けたくなるような光景が頭に浮かぶハズdeath。

・・・・・・・・・・・・・・・・・。

・・・・・・・・・・・。

・・・・・。

~apkファイルをストアでリリースするまで~

パターン1:全部自分で&全部eclipseで作るよ!
1.eclipseで開発!
2.eclipseで署名apk出力!
3.そのapkをストアにアップ!
4.おわり!猫でもできるよめっさ簡単!

パターン2:apkは作ってもらうよ!でもリリースは自分のアカウントだよ!eclipse?なにそれ美味しいの?
1.誰かがeclipseか何かで開発!
2.誰かが「署名なし」のapk出力!
3.そのapkを自分が受け取る!
4.みんな大好き黒い画面のコマンドプロンプトでkeystoreファイル作る!
5.みんな大好き黒い画面のコマンドプロンプトでkeystoreをもとにapkを署名!
6.みんな大好き黒い画面のコマンドプロンプトでそのapkファイルをzipalign!
7.そのapkをストアにアップ!
8.おわり!猫にはちょっと難しいよ!

・・・・・・・・・・・・・・・・・。

・・・・・・・・・・・。

・・・・・。

さて。
3年前はパターン2。今回はパターン1。
それを新規ではなくアップグレードで行うには?


作戦1
パターン1で開発して「2」の段階で「署名なしのapk」を出力して、その「後パターン2」の「5」に持ち込む!
新規ではなくアップグレードだから、「4」はやっちゃダメ。
3年前の熟成されたkeystoreで署名をするのです。

結果
署名とかzipalignのコマンドプロンプトでの処理はJAVAでやるのですが、JAVAの時代はすでにJDK7。
JDK7は暗号化の仕様が変わったので、古いkeystoreはコマンドプロンプトでは署名できないのでした。


作戦2
じゃあパターン2の「4」をJDK7でやればいいんじゃね?

結果
4.みんな大好き黒い画面のコマンドプロンプトでJDK7でkeystoreファイル作る! ←成功!
5.みんな大好き黒い画面のコマンドプロンプトでJDK7でkeystoreをもとにapkを署名! ←成功!
6.みんな大好き黒い画面のコマンドプロンプトでJDK7でそのapkファイルをzipalign! ←成功!
7.そのapkをストアにアップ! ←証明書が違うよエラー

そうです。
パターン2の「4」をやった時点で、それは新しいkeystore。
3年前のkeystoreとは違います。
たとえエイリアスや組織単位名などの入力内容が3年前と同じであっても、もはや違う世界線のkeystoreなのでした。


作戦3
コマンドプロンプトを使う限り、JDK7の問題からは逃れられない。
でもeclipseならどうだろう?
そういえばパターン1の「2」の時、「新しいkeystoreを使うか?」「古いkeystoreを使うか?」って聞かれるよね?この時3年前のkeystoreを読み込ませればいいんじゃない?

結果
2.eclipseで3年前のkeystoreで署名apk出力! ←成功!
3.そのapkをストアにアップ! ←証明書が違うよエラー

たぶんパターン1とパターン2のそれぞれの「1」が違ってる時点で無理があると思う。
フィンガープリントとか違うだろうし。


作戦4
そのフィンガープリントが違うなら、3年前のkeystoreから証明書を抜いて新しいkeystoreを作れば?
あるいはeclipseに読み込ませたりできるのかな?

結果
この3年前のkeystoreがどんなものなのかよく分かりません。謎。
証明書を抜く方法が謎。
抜けたとしてもその後が謎。


作戦5
JDK7が諸悪の根源。JDK6でやればいいじゃん。

結果
JDK6に戻すだけで一苦労。そもそもJAVA環境変える時点でeclipseにどんな影響が出るか分かったもんじゃない。ここが壊れると致命傷。あとJDK6に戻すのは、そもそもの解決じゃない気がする。


・・・・・・・・・・・・・・・・・。

・・・・・・・・・・・。

・・・・・。

という訳で、今回は「パターン1」+「新規」で進めたのでした。

おかげでサクサクつくれて、ドサクサにまぎれて昨年よりアプリ配信が増えてるのは気のせいかもしれません(汗

ic_launcher

ic_launcher

 - 5日間でできるAndroidアプリ開発

adpc

adpc

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

unnamed
APKファイル署名のデッドロック?

Androidアプリリリース直前の段階で最大の疑問。 【課題】 大昔に「署名なし …

4日目の前日:ところで駅コレのAndroid版って

そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …

unnamed
プロローグ:ジオの奇妙な冒険

2010年! それは位置ゲーとジオメディアの発展が起業家の思想と生活を変えた時代 …

5日目:クラウドナインアップスAndroid教室最終日

一部で好評! 八幡山ってどんなところよ?シリーズ。 京王線の八幡山駅を出て左に進 …

Androidアプリにプッシュ通知を実装する

運営から限定イベントのお知らせが届いたり、新着ニュースが届いたり。 そんな通知を …

いよいよ本番:eclipse上でプロジェクトをコピーする

クラウドナインアップス卒業後も先生に質問しまくったりサンプルコード頂いたりしまく …

4日目:地図アプリを作る~人生の位置情報を求めて~

「そもそも八幡山ってどんなところよ?」 そんな声が聞こえてきそうです。 こんなと …

eclips2
0日目:Androidアプリ開発環境をMacに設定しかけて途中からWindowsに設定する

~前回までのあらすじ~ 「ちょっと!蕎麦の出前まだなの?」 「すみませんねェ、今 …

1日目:計算機を作ろうとしたらUSBドライバの勉強が進んだの巻

~前回までのあらすじ~ AndroidSDKは重い。 AndroidSDKは複雑 …

manifes2
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!

あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …