Linux環境でIonicを使ってAndroidのリリース用apkを作成

Linux環境でIonic frameworkを利用してAndroid用アプリのリリース用apkファイルをコマンドライン操作で作成する手順について覚え書きを記しておく。アップデートを公開する場合も手順は同じ。

作業環境は、Ubuntu Studio 18.04を使用。

準備

テスト環境を構築してパッケージのバージョンがデフォルトと異なっている場合は、変更したパッケージのバージョンを戻す。”@ionic/app-scripts”を”3.1.9″に、”typescript”を”~2.6.2″にする。

デバッグビルドのときには問題にならないが、モジュールの読み込みがapp.module.tsと各ページのmodule.tsで重複するとエラーになるので、リリース用にビルドする前にコードの整理を行う。app.module.tsに各モジュールをインポートする部分を削除するか、不要なmodule.tsファイルと”@Component”の前に記述してある”@IonicPage()”を削除する。

Ionicでビルドしたapkファイルの最適化と署名に使うコマンドラインツールはAndroid SDKのbuild-toolsに含まれるので、Pathを通しておく。~/.profileに以下を追加。
export PATH=${PATH}:/PathToAndroidSDK/build-tools/XX.X.X

リリース用にビルド

Ionicのプロジェクトをリリース用にビルド。

cd /PathToProject/
ionic cordova build android --release --prod

自分の作成したプロジェクトでは、原因がハッキリとは分からないがビルド実行時に下記のエラーが出た。

Error: Entry module not found: Error: Can't resolve '@angular-devkit/build-optimizer/webpack-loader'

Ionicのコマンドで作成したプロジェクトのPackage.jsonに”@angular-devkit/build-optimizer”は含まれていなので、cordovaのプラグイン等の依存関係によるものかもしれないが、足りないパッケージを追加した。

npm install --save-dev @angular-devkit/build-optimizer

ビルドに成功すると”/PathToProject/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk”が出来上がる。

署名用のキーの作成

Google Playでアプリを公開するためにはapkファイルに署名をする必要があるので、署名用のキーを作成する。アプリをアップデートする際も同じキーで署名する必要がある。

keytool -genkey -v -keystore /PathToReleaseKey/my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

apkを最適化する

apkの最適化を行うと、アプリが使用するRAMの量が削減される。

cd /PathToProject/platforms/android/app/build/outputs/apk/release/
zipalign -v -p 4 app-release-unsigned.apk app-release-unsigned-aligned.apk

署名をする

apksigner sign --ks /PathToReleaseKey/my-release-key.jks --out my-app-release.apk app-release-unsigned-aligned.apk

コマンドを実行するとキーストアのパスワードを求められるので、パスワードを入力する。署名したapkファイルをGoogle Play Consoleでアップロードして公開する。

コメントを残す

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