2015年11月11日水曜日

HSP3Dishでの署名apk(リリースビルド)が生成されない場合について

やあ、セルディアです。

「ぷちぎるど」を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の改造なんていらなかったんや。ご対応ありがとうございます。

2 件のコメント:

  1. こんにちは。
    偶然にも先日同じ問題でつまづいておりました。
    私の場合は、「/sdk/build-tools/19.1.0」に入っていた zipalign.exe を「/sdk/tools」にコピーしてあげたところ、Dish Helperはそのまま設定で署名APKが出来ました。

    返信削除
  2. こんにちは。
    なんと…コピーだけで済むなら、コードを改造なんて無茶するよりスマートですね。
    そっちの解決方法を採用したほうがいい気が…考慮してみます。(コピーするブツがzipalign.exeだけで十分なのかがちょっと気になります)
    ありがとうございます。

    返信削除