React Nativeのインストールからリリースビルドまでの備忘録
準備
node.jsをインストール
Android Studioをインストール
PATHを通す
-
C:/Program Files/Android/Android Studio/jre/bin
- keytool.exe
- jarsigner.exe
-
%USERPROFILE%/AppData/Local/Android/SDK/tools
- android.bat
- emulator.exe
-
%USERPROFILE%/AppData/Local/Android/SDK/platform-tools
- adb.exe
環境変数をセット
ANDROID_HOME | %USERPROFILE%/AppData/Local/Android/SDK |
JAVA_HOME | C:/Program Files/Android/Android Studio/jre |
JAVA_OPTS | -DproxyHost=your.proxy.server -DproxyPort=8888 |
プロキシの設定は必要に応じて
プロジェクトの初期化
$ npm install -g react-native-cli
$ react-native init AwesomeProject
$ cd AwesomeProject
エミュレータでデバッグ
エミュレータの起動
- デバイス名を調べる
$ android list avd
- 起動
$ emulator -avd <デバイス名>
デバッグビルドと起動
$ react-native run-android
実機でデバッグ(USB接続)
$ adb reverse tcp:8081 tcp:8081
$ react-native run-android
リリースビルド
鍵の作成
$ keytool -genkey -v -keystore ./android/app/android-release.keystore -alias android-release -keyalg RSA -keysize 2048 -validity 36524
設定ファイル等の修正
以下の記事を参考にパスワードその都度コンソールで入力するようにする
Android Studio(Gradle)でapkファイルを作成する時にstorePassword/keyAlias/keyPasswordの指定方法をいくつか検証してみた。
diff --git a/android/app/build.gradle b/android/app/build.gradle
index aef0c43..959f6e1 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -89,6 +89,15 @@ def enableSeparateBuildPerCPUArchitecture = false
*/
def enableProguardInReleaseBuilds = false
+gradle.taskGraph.whenReady { taskGraph ->
+ if(taskGraph.hasTask(':app:assembleRelease')) {
+ def storePasswordValue = new String(System.console().readPassword("Enter store password: "))
+ def keyPasswordValue = new String(System.console().readPassword("Enter key password: "))
+ android.signingConfigs.release.storePassword = storePasswordValue
+ android.signingConfigs.release.keyPassword = keyPasswordValue
+ }
+}
+
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
@@ -103,6 +112,16 @@ android {
abiFilters "armeabi-v7a", "x86"
}
}
+ signingConfigs {
+ release {
+ if (project.hasProperty('RELEASE_STORE_FILE')) {
+ storeFile file(RELEASE_STORE_FILE)
+ storePassword ""
+ keyAlias RELEASE_KEY_ALIAS
+ keyPassword ""
+ }
+ }
+ }
splits {
abi {
reset()
diff --git a/android/gradle.properties b/android/gradle.properties
index 1fd964e..68738d2 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -18,3 +18,6 @@
# org.gradle.parallel=true
android.useDeprecatedNdk=true
+
+RELEASE_STORE_FILE=android-release.keystore
+RELEASE_KEY_ALIAS=android-release
ビルド
$ cd ./android
$ gradlew assembleRelease
インストール
-
デバッグビルドをインストールしたままだと
[INSTALL_FAILED_UPDATE_INCOMPATIBLE: ]
云々
と署名が違う旨のエラーを吐くのでアンインストールしておく -
そのままインストールしようとしても
[INSTALL_PARSE_FAILED_NO_CERTIFICATES: ]
云々
とエラーが出てインストールできないので署名し直してからインストールする
$ jarsigner -verbose -keystore app/android-release.keystore app/build/outputs/apk/app-release-unsigned.apk android-release
$ adb -d install app/build/outputs/apk/app-release-unsigned.apk