8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【ReactNative】Androidリリースビルド時のメモ(2019/10/28 追記あり)

Last updated at Posted at 2019-08-01

はじめに

ReactNativeで開発しているアプリが完成の運びとなりました。
ストア公開はまだ先なのですが、リリースビルド時の手順を備忘として書いていきます。

keystore作成

リリースビルド作成に先立ち、keystoreファイルの作成が必要です。
keystoreファイルとはざっくり説明すると「開発者である個人または法人を特定するもの」です。

作成にはプロジェクトルートで下記のコマンドを実行します。

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

対話形式でいくつかの質問(名前やらパスワードやら)に回答します。
回答し終えるとrelease-key.keystoreが作成されるので、これを
android/appに移動します。

gradle.propertiesを修正

android/gradle.propertiesに先ほど入力したパスワード等を記入します。PC全体の設定としたい場合は~/.gradle/gradle.propertiesの方を修正してください。

gradle.properties
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=【ストアパスワード】
MYAPP_RELEASE_KEY_PASSWORD=【キーパスワード】

build.gradleを修正

android/app/build.gradlegradle.propertiesの値を参照するように修正します。

build.gradle
...
android {
    /* 略 */
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            /* 略 */
            signingConfig signingConfigs.release
        }
    }
}

android直下でリリースコマンドを実行

cmd
cd android
gradlew assembleRelease

これでandroid/app/build/outputs/apk/releaseapp-release.apkが作成される...はずでしたが、自分の場合は下記のエラーに遭遇しました。

cmd
Execution failed for task ':app:mergeReleaseResources'.
...
com.android.builder.internal.aapt.v2.Aapt2Eception: Android resource compilation failed
【対象リソースパス】: error: failed to read PNG signature: file does not start with PNG signature.

どうやらプロジェクト内で使っていたPNGファイルのフォーマットがおかしかったようです(思えばスプラッシュのテストに使う画像の拡張子をjpgからpngにリネームしただけだった)。

上記を修正したところ正常にapkファイルが書き出されました。
やったー!

追記.GooglePlayStoreに公開できる状態にする

GooglePlayStoreに公開するためには、最適化と署名が必要になります。

Android直下でzipalignを実行

cmd
zipalign -f -v 4 app/build/outputs/apk/release/app-release.apk my-app.apk

zipalignしたAPKファイルに署名する

cmd
apksigner sign --ks app/my-release-key.keystore --ks-key-alias my-key-alias my-app.apk

keystore作成時に設定したパスワードを求められるので入力します。

これでGooglePlayStore公開可能なAPKファイルが作成されました!

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?