この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
reactnative:build [2019/03/23 16:10] ips 作成 |
reactnative:build [2019/05/15 00:59] (現在) ips |
||
---|---|---|---|
ライン 4: | ライン 4: | ||
[[https://qiita.com/gonta616/items/b8c323167ac41323b8fa|React NativeでiOS, Androidのストア公開のTips]] | [[https://qiita.com/gonta616/items/b8c323167ac41323b8fa|React NativeでiOS, Androidのストア公開のTips]] | ||
+ | |||
+ | ===== buildコマンド ===== | ||
<code> | <code> | ||
ライン 11: | ライン 13: | ||
⇒ android/app/build/outputs/apk/app-release-unsigned.apk ができる。 | ⇒ android/app/build/outputs/apk/app-release-unsigned.apk ができる。 | ||
</code> | </code> | ||
+ | |||
+ | ===== バージョン指定 ===== | ||
+ | |||
+ | |||
+ | バージョンコードは | ||
+ | android\app\build.gradle | ||
+ | <code> | ||
+ | android { | ||
+ | ・・・ | ||
+ | defaultConfig { | ||
+ | versionCode 2 // 内部コード。カウントアップすればよい | ||
+ | versionName "1.1" // ユーザーがみるバージョン | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== 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]] | ||
+ | <code> | ||
+ | // 932 shift_jis | ||
+ | > chcp 932 | ||
+ | </code> | ||
+ | |||
+ | C:\Program Files\Java\jdk1.8.0_201\bin\keytool.exeを使う | ||
+ | |||
+ | <code> | ||
+ | > 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 | ||
+ | <my-key-alias>の鍵パスワードを入力してください | ||
+ | (キーストアのパスワードと同じ場合はRETURNを押してください):[ENTER] | ||
+ | [my-release-key.keystoreを格納中] | ||
+ | |||
+ | Warning: | ||
+ | JKSキーストアは独自の形式を使用しています。"keytool -importkeystore -srckeystore my-release-key.keystore -destkeystore my-release-key.keystore -deststoretype pkcs12"を使用する業界標準の形式であるPKCS12に移行することをお薦めします。 | ||
+ | </code> | ||
+ | |||
+ | 「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を編集する。 | ||
+ | <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | android\app\build.gradleを編集する。 | ||
+ | <code> | ||
+ | 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 | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | androidディレクトリで | ||
+ | <code> | ||
+ | // assembleReleaseの綴に注意。 | ||
+ | gradlew assembleRelease | ||
+ | </code> | ||
+ | |||
+ | 署名付きapkが出来上がる。 | ||
+ | <code> | ||
+ | \android\app\build\outputs\apk\release\app-release.apk | ||
+ | </code> | ||
+ | |||
+ | ===== 実機にコマンドでインストールする ===== | ||
+ | <code> | ||
+ | adb install -r [apkのパス] | ||
+ | // -rがないと2回目以降アンインストールしてからでないとインストールできない。 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== 依存関係を調べる ===== | ||
+ | かなり長いTreeとなるのでfindstrで絞る | ||
+ | <code> | ||
+ | > 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 | ||
+ | ・・・ | ||
+ | </code> | ||
+ | |||
+ | ===== エラー ===== | ||
+ | <code> | ||
+ | keytoolエラー: java.io.FileNotFoundException: my-release-key.keystore (アクセスが拒否されました。) | ||
+ | java.io.FileNotFoundException: my-release-key.keystore (アクセスが拒否されました。) | ||
+ | </code> | ||
+ | |||
+ | コマンドプロンプトを管理者権限で実行する。 | ||
+ | |||
+ | ===== エラー ===== | ||
+ | <code> | ||
+ | signatures do not match the previously installed version; ignoring! | ||
+ | </code> | ||
+ | |||
+ | 実機でreleaseをインストールしたあと、そのままdebugしようとしいた。 | ||
+ | relaseとdebugでは署名が異なるため発生。 | ||
+ |