====== bulid ======
[[reactnative:expo:build|expoの場合]]
[[https://qiita.com/gonta616/items/b8c323167ac41323b8fa|React NativeでiOS, Androidのストア公開のTips]]
===== buildコマンド =====
// 公開せずapkを作成するだけならこれでいける。
cd android // androidフォルダに移動
gradlew assembleRelease
⇒ android/app/build/outputs/apk/app-release-unsigned.apk ができる。
===== バージョン指定 =====
バージョンコードは
android\app\build.gradle
android {
・・・
defaultConfig {
versionCode 2 // 内部コード。カウントアップすればよい
versionName "1.1" // ユーザーがみるバージョン
}
===== keyストアの作成し署名付buildをする場合 =====
[[http://facebook.github.io/react-native/docs/signed-apk-android.html|Generating Signed APK]]
[[https://ips.nekotype.com/1504/|コマンドプロンプトの文字コードを変更する]]
コマンドプロンプトの文字化けはshift-jisで直る
[[https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers|Code Page Identifiers]]
// 932 shift_jis
> chcp 932
C:\Program Files\Java\jdk1.8.0_201\bin\keytool.exeを使う
> cd C:\Program Files\Java\jdk1.8.0_201\bin
> keytool -genkeypair -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]: [入力]
組織単位名は何ですか。
[Unknown]: [入力]
組織名は何ですか。
[Unknown]: [入力]
都市名または地域名は何ですか。
[Unknown]: [入力]
都道府県名または州名は何ですか。
[Unknown]: [入力]
この単位に該当する2文字の国コードは何ですか。
[Unknown]: [入力]
CN=[], OU=[], O=[], L=[], ST=tokyo, C=jpでよろしいですか。
[いいえ]: y
10,000日間有効な2,048ビットのRSAの鍵ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=User, OU=person, O=nekotype, L=nakano, ST=tokyo, C=jp
の鍵パスワードを入力してください
(キーストアのパスワードと同じ場合はRETURNを押してください):[ENTER]
[my-release-key.keystoreを格納中]
Warning:
JKSキーストアは独自の形式を使用しています。"keytool -importkeystore -srckeystore my-release-key.keystore -destkeystore my-release-key.keystore -deststoretype pkcs12"を使用する業界標準の形式であるPKCS12に移行することをお薦めします。
「C:\Program Files\Java\jdk1.8.0_201\bin」にできた「my-release-key.keystore」を、「C:\Users\User\react\native_background_timer\android\app」にコピーする。
android\gradle.propertiesを編集する。
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore // add
MYAPP_RELEASE_KEY_ALIAS=my-key-alias // add
MYAPP_RELEASE_STORE_PASSWORD=key1976 // add
MYAPP_RELEASE_KEY_PASSWORD=key1976 // add
android\app\build.gradleを編集する。
android {
・・・
defaultConfig {
・・・
}
signingConfigs { // add
release { // add
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { // add
storeFile file(MYAPP_RELEASE_STORE_FILE) // add
storePassword MYAPP_RELEASE_STORE_PASSWORD // add
keyAlias MYAPP_RELEASE_KEY_ALIAS // add
keyPassword MYAPP_RELEASE_KEY_PASSWORD // add
} // add
} // add
} // add
splits {
・・・
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release // add
}
}
androidディレクトリで
// assembleReleaseの綴に注意。
gradlew assembleRelease
署名付きapkが出来上がる。
\android\app\build\outputs\apk\release\app-release.apk
===== 実機にコマンドでインストールする =====
adb install -r [apkのパス]
// -rがないと2回目以降アンインストールしてからでないとインストールできない。
===== 依存関係を調べる =====
かなり長いTreeとなるのでfindstrで絞る
> cd android
> gradlew :app:dependencies | findstr "xxxx"
・・・
+--- com.google.android.gms:play-services-basement:16.0.1
| \--- com.google.android.gms:play-services-tasks:16.0.1
| \--- com.google.android.gms:play-services-basement:16.0.1 (*)
+--- com.google.android.gms:play-services-basement:16.0.1 (*)
+--- com.google.android.gms:play-services-tasks:16.0.1 (*)
+--- com.google.android.gms:play-services-maps:16.1.0
| +--- com.google.android.gms:play-services-base:16.0.1 (*)
| \--- com.google.android.gms:play-services-basement:16.0.1 (*)
| | \--- com.google.code.findbugs:jsr305:3.0.1 -> 3.0.2
| +--- com.google.code.findbugs:jsr305:3.0.2
+--- com.google.code.findbugs:jsr305:3.0.2
・・・
===== エラー =====
keytoolエラー: java.io.FileNotFoundException: my-release-key.keystore (アクセスが拒否されました。)
java.io.FileNotFoundException: my-release-key.keystore (アクセスが拒否されました。)
コマンドプロンプトを管理者権限で実行する。
===== エラー =====
signatures do not match the previously installed version; ignoring!
実機でreleaseをインストールしたあと、そのままdebugしようとしいた。
relaseとdebugでは署名が異なるため発生。