私は自分のアプリを作成しました、私は自分のローカルシミュレータ上で(そしてデバッグサーバーを変更することによって同じネットワーク内の私のAndroidデバイス上でも)それを実行することができます。
しかし、私は私が開発用サーバーにアクセスすることなく誰かに送ることができ、私は彼らがアプリケーションをテストできるようにしたいAPKを作りたいです。
ドキュメントの「iOSでのオフラインバンドルの使用」のセクションがあります。しかし、私はAndroidのために同じことを達成する方法を理解することができませんでした。これは可能ですか?もしそうなら、どうですか?
更新: この質問への答え( ネイティブAndroidはJSバンドルの読み込みに失敗しました )オフラインのバンドルは開発用サーバーからダウンロードできると言われています。しかし、開発サーバーからバンドルを入手したときに、イメージファイルをロードできません。
Aditya Singhの回答に続いて、生成された(符号なし)apkは私の電話にはインストールされません。 here の指示に従って署名付きapkを生成しなければなりませんでした。
以下は私のために働いた:
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
プロジェクトフォルダのmy-release-key.keystore
ディレクトリの下にAndroid/app
ファイルを配置します。次に、ファイル~/.gradle/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=****
MacOSを使用している場合は、プレーンテキストで保存する代わりに、 ここ の指示に従ってパスワードをキーチェーンに保存することができます。
それからapp/build.gradleを編集して、以下があることを確認してください(signingConfigs、signingConfigのセクションを追加する必要があるかもしれません):
...
Android {
...
defaultConfig { ... }
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
}
}
}
...
Thenコマンドcd Android && ./gradlew assembleRelease
を実行します。
Windowsの場合 'cd Android'を実行してからgradlew assembleRelease
コマンドを実行し、Android/app/build/outputs/apk/app-release.apk
の下に signed apkを見つけます。
APKに署名するための鍵を作成する必要があります。キーを作成するには、以下を使用してください。
keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000
プロンプトが表示されたらパスワードを使用する
キーが生成されたら、それを使用してインストール可能なビルドを生成します。
react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/
Gradleを使ってビルドを生成する
cd Android && ./gradlew assembleRelease
APKを携帯にアップロードします。 -r
フラグは既存のアプリを置き換えます(存在する場合)
adb install -r ./app/build/outputs/apk/app-release-unsigned.apk
より詳細な説明はここに記載されています: https://facebook.github.io/react-native/docs/signed-apk-Android.html
_ update _ :@shashuecと@Fallenのコメントに基づく
エラーが発生した場合
ENOENT:そのようなファイルやディレクトリはありません、 'Android/app/src/main/assets/index.Android.bundle'を開きます。
mkdir Android/app/src/main/assetsを実行します。
このコマンドを実行してください。
react-native run-Android --variant=release
--variant=release
は、cd Android && ./gradlew assembleRelease
を使ってサインアップを設定した場合にのみ利用可能です。
あなたはちょうどこのプロセスのためにAndroidのスタジオを使うべきです。もっと簡単です。しかし、最初にあなたの反応するネイティブアプリディレクトリでこのコマンドを実行してください:
react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/
それからあなたの中の「Android」フォルダを開くためにAndroidスタジオを使ってネイティブアプリディレクトリを反応させてください、それはgradleと他のものをアップグレードするように頼みます。ビルド - >署名付きAPKの生成に行き、そこからの指示に従ってください。それは本当に簡単です。
react Native 0.49以降用
端末のプロジェクトディレクトリに行き、そのコマンドを実行してください。
1 - mkdir Android/app/src/main/assets
2 - react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res
0.49未満の場合
1 - mkdir Android/app/src/main/assets
2 - react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res
それからあなたの中の「Android」フォルダを開くためにAndroidスタジオを使ってネイティブアプリディレクトリを反応させてください、それはgradleと他のものをアップグレードするように頼みます。ビルド - >署名付きAPKの生成に行き、そこからの指示に従ってください。あのね。
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
が表示されたら.署名なしのAPKファイルを生成してインストールする@ Adityaの方法を使用しようとしましたが、私のAndroidタブレットにインストールしようとすると、Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
のエラーが発生しました。
これはAPKファイルが署名されておらず、タブレットがこれに満足していなかったためと考えられます。そのため、React Nativeバンドルファイルを生成した後は、通常どおり、Android Studioを介して署名付きAPKファイルを生成できました。
ところで、私たちのアプリはすでにPlayストアに存在する完全に機能するAndroidアプリで、React Nativeを一口サイズのものとして追加しているところです。
要約すると、これが私のステップです。
1)React Nativeバンドルを生成します。 /
react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/<your-package-name>/src/main/assets/index.Android.bundle --assets-dest Android/<your-package-name>/src/main/res/
2)Android Studioから署名付きAPKファイルを生成します。
3)署名付きAPKファイルをUSBデバイスにインストールします -
adb -d install -r <path_to_signed_apk>
-d
フラグは、エミュレータも実行している場合に、接続されているusbデバイスにインストールするようにadb
に指示するだけです。どのエミュレータにもインストールしたい場合は、-d
フラグを落としてください。
4)利益!
私は別の解決策を持っています: - 署名鍵を生成するあなたはkeytoolを使って秘密署名鍵を生成することができます。 Windowsでは、keytoolはC:¥Program Files¥Java¥jdkx.x.x_x¥binから実行する必要があります。
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
My-release-key.keystoreファイルをプロジェクトフォルダのAndroid/appディレクトリの下に置きます。
プロジェクトフォルダのAndroid/app/build.gradleファイルを編集して署名設定を追加します。
Android {
....
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'yourpassword'
keyAlias 'my-key-alias'
keyPassword 'yourpassword'
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
そして走る
gradlew assembleRelease
これにより、Android\app\build\outputs\apkにapp-release.apkとapp-release-unsigned.apkの2つのファイルが作成され、app-release.apkがAndroidデバイスにインストールされます。
プロジェクトディレクトリに移動して次のコマンドを実行します。
cd Android && ./gradlew assembleRelease
Index.Android.jsに関するエラーが発生した場合これは、新しいReact-nativeバージョン(私は0.55.4を使用しています)を使用しているためです。単に "index.Android.js"を "index.js"に置き換えます。
react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/
うまくいけば、それは新しい初心者に役立つでしょう
オフィシャルドキュメント ここ
コマンドの前に使用するキーストアがない場合は、スキップします。
署名鍵の生成/キーストアファイル keytoolを使用して秘密署名鍵を生成できます。 Windowsでは、keytoolはC:¥Program Files¥Java¥jdkx.x.x_x¥binから実行する必要があります。
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
my-release-key.keystore のようなファイルが得られます。
グラドル変数の設定 my-release-key.keystoreファイルをプロジェクトフォルダのAndroid/appディレクトリの下に置きます。 Android/gradle.propertiesファイルを編集して次を追加し(*****を正しいキーストアパスワード、エイリアス、およびキーパスワードで置き換えます)、enableAapt2 set falseを回避策として、Android gradleバージョン3.0 問題
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
Android.enableAapt2=false
それからこれらのapp/buid.gradle(app)を追加してください
デフォルト設定以下
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
}
}
およびInside Buildタイプのリリース{}
signingConfig signingConfigs.release
次にAndroidのスタジオ端末でこのコマンドを実行する 以下のコマンドはすべての答えを自動化する
窓の場合
cd Android
gradlew assembleRelease
linux/Macの場合
$ cd Android
$ ./gradlew assembleRelease
エラーが発生した場合は、すべてのビルドフォルダを削除してコマンドを実行してください。
gradlew clean
またもや
gradlew assembleRelease
プロジェクトにバンドルする最新のネイティブネイティブバージョン
アンドロイド
react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/
iOS
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Androidスタジオを使用してreactのAndroidプロジェクト用の署名付きapkを生成することもよくできた簡単な方法です。AndroidのAndroidプロジェクトをAndroidスタジオで開き、キーストロークと署名付きapkを生成します。
以下で試してください、それはあなたのルート/ Android/app/build/output/apk/debugフォルダにapp-debug.apkを生成します
react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res
その後、Androidフォルダに移動して実行します
./gradlew assembleDebug
プレイストアキーを使用せずにビルドする場合は、このコマンドが非常に役立ちます。
# react-native run-Android --variant=release
ビルドが完了すると、リリースビルドファイルでapkを見つけることができます。
署名付きAPKの生成に関する反応ネイティブの公式文書を参照してください。