昔作った古いアプリをGodotで作り直しapkを作成したところ、どうもログをみるとエラーが出ており、jarsignerでうまいことkeystoreでの署名ができていないよ、とのこと。adb installしてみても確かにインストールできない。ちなみにGodotは3.1.1
原因としてはどうもkeystoreが古いので今のGodotで利用している署名のアルゴリズムと異なっていてうまく行っていないらしい。
ということで自分でjarsignerを実行して署名しないといけない。
困ったなーと思いつつGodotのソースを検索してみると、署名を実行している箇所を発見。
https://github.com/godotengine/godot/blob/master/platform/android/export/export.cpp#L2345
パラメータも全部書かれているのでコマンドを組み立てた。
jarsigner -digestalg SHA1 -sigalg SHA1withDSA -verbose -keystore .keystore -storepass password myapp.apk username
SHA1とSHA1withDSAはいくつか適当に試したら署名に成功したので見つかった。
しかしリリースしようとアップロードしてみると、zipalignされていないのでだめ、ということで突っ返された。なんだかよくわからないがzipalignしてapkを最適化しないといけないらしい。
もしかしたら正常にGodot側で署名できていたら勝手にzipalignもしてくれてたのかもしれないが、自分で署名した以上は最後に自分でzipalignしないといけない。
これは普通にやり方があるようなので実行。ただしzipalignがどこにあるのか探すのに手間取った(僕のPCの場合Android SDKが複数の場所にあってzipalignが無なかったりしたので)。
zipalign -f -v 4 myapp.apk myapp_release.apk
あとはいい感じの説明文を書いてリリースするだけ。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント