「ぷちぎるど」をAndroidで動かせるようにビルドして、いろいろデバッグしていましたが、現段階でのテストもほどほどに済ませたので、そろそろGoogle Playに登録してみようとしています。
署名されたapkが作れないぞ! なぜだ!
しかし、リリース版をビルドしようとしたときに1つハマったので、また備忘録として記録しておきます。
基本的には、次のURL先のドキュメント通りに処理すれば進められます。
http://www.onionsoft.net/hsp/v35/doclib/hsp3dish_ndk.htm#RELEASE
しかし、「リリース」ボタンからビルドしようとしたときに、なぜか「プロジェクト名.apk」のファイルが生成されません。
なんでや。
コマンドプロンプトの画面が出て、パスワードを入力して、署名されたファイルがどばーっと出るまではいいんですが…なんか一瞬警告かエラーを出して画面が消えます。
よく調べると、1つ目は警告でした。警告ならいいだろ(いいかげん)。
2つ目は、「zipalign」コマンドがないというエラー。何者…と思って調べてみると、apkファイルの最適化を行うコマンドみたいです。最適化という割には、最適化前のapkファイルを持って行っても実行できない気が…まあいいか。
zipalign.exeはAndroid SDKに含まれています。SDKのインストールフォルダから辿って「build-tools\23.0.1」ディレクトリにあります。(23.0.1以外もあるけど、一番大きい数字を頼れば大丈夫だろ…SDKのバージョンによって違うかもしれないので臨機応変に)
そして、またもや「hsp3dh.hsp」を改造します。「zipalign」コマンドを使うコードは1168行目にあります。今回はめんどくさいのでexeファイルのパスを直指定しました(環境変数Pathに入れても反応しない…なぜ)。あまりよくない。
解決方法
ということで、以下のように変更しましょう。
hsp3dh.hsp:1168行目
tmp+="zipalign -v 4 bin\\"+and_name+"-release-unsigned.apk bin\\"+and_name+".apk\n"
↓
tmp+="<インストールフォルダ>\\build-tools\23.0.1\\zipalign -v 4 bin\\"+and_name+"-release-unsigned.apk bin\\"+and_name+".apk\n"
文字列内だから「\」は「\\」で書くぞ!
無事署名apkファイルを作成できたので今回はここまで。
apkファイルを作っただけでは全然公開できない…なんかたくさん項目があってめんどくさいぞ…。
HSPはなぜこんなむごいことを…
HSP作者は何らかの原因でzipalignをパス指定なしで実行できるようにしてて気づかないのでは…そういうのよくありそうだけど、ユーザにとっては非常につらたん。
(2016年5月29日追記)
今さらですが、HSP3ベータ版最新では、「zipalignがありません、ここにコピーしてください」という旨のメッセージが出ます。hsp3dhの改造なんていらなかったんや。ご対応ありがとうございます。
こんにちは。
返信削除偶然にも先日同じ問題でつまづいておりました。
私の場合は、「/sdk/build-tools/19.1.0」に入っていた zipalign.exe を「/sdk/tools」にコピーしてあげたところ、Dish Helperはそのまま設定で署名APKが出来ました。
こんにちは。
返信削除なんと…コピーだけで済むなら、コードを改造なんて無茶するよりスマートですね。
そっちの解決方法を採用したほうがいい気が…考慮してみます。(コピーするブツがzipalign.exeだけで十分なのかがちょっと気になります)
ありがとうございます。