2019-11-08に投稿

Godotで古いkeystoreのAndroidアプリをリリースする

昔作った古いアプリを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はいくつか適当に試したら署名に成功したので見つかった。

apkファイルの最適化

しかしリリースしようとアップロードしてみると、zipalignされていないのでだめ、ということで突っ返された。なんだかよくわからないがzipalignしてapkを最適化しないといけないらしい。

もしかしたら正常にGodot側で署名できていたら勝手にzipalignもしてくれてたのかもしれないが、自分で署名した以上は最後に自分でzipalignしないといけない。

これは普通にやり方があるようなので実行。ただしzipalignがどこにあるのか探すのに手間取った(僕のPCの場合Android SDKが複数の場所にあってzipalignが無なかったりしたので)。

zipalign -f -v 4 myapp.apk myapp_release.apk

あとはいい感じの説明文を書いてリリースするだけ。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント