web-dev-qa-db-ja.com

開発サーバーなしでデバイスにunsigned apkを構築してインストールしますか?

私は反応ネイティブで新しいので、ステップで何か問題がある場合は私に知らせてください。

私はドキュメントに従ってコマンドを使用して反応ネイティブAndroidアプリを構築しました

反応ネイティブAndroid

デバイス上で実行中に次のコマンドが使用された

反応ネイティブの実行 - Android

これは私のプロジェクトフォルダー/ Android/app/build/output/apkに2つのapkファイルの出力を表示します。

enter image description here

今私がインストール後にこのapkをインストールするのに使用するとき、JSをバンドルするために接続するために開発サーバーを要求します。しかし、私の要件は、ユーザーがapkをインストールする必要があるだけで、ユーザーが開発サーバーと戦う必要がないということです。

いくつかの stackoverflow Questions を通過しましたが、開発用サーバーを必要としないunsigned apkを構築するのに役立ちません。

あなたは私がどのようにビルドして署名なしのapkをネイティブに反応させるかを見つける方法を見つけるのを手伝ってくれる?

107
kAy_4337270

デバッグビルド用のバンドルを手動で作成する必要があります。

バンドルデバッグビルド:

#React-Native 0.49.0+
react-native bundle --dev false --platform Android --entry-file index.js --bundle-output ./Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest ./Android/app/build/intermediates/res/merged/debug

#React-Native 0-0.49.0
react-native bundle --dev false --platform Android --entry-file index.Android.js --bundle-output ./Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest ./Android/app/build/intermediates/res/merged/debug

その後、バンドルした後にAPKを構築します。

$ cd Android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated `apk` will be located at `Android/app/build/outputs/apk`

P.Sもう1つの方法は、gradleスクリプトを変更することです。

187

これらの手順に従ってください。

あなたのjsを束ねます:

プロジェクトルートにindex.Android.jsがある場合は、実行します。

react-native bundle --dev false --platform Android --entry-file index.Android.js --bundle-output ./Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest ./Android/app/build/intermediates/res/merged/debug

プロジェクトルートに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

デバッグAPKを作成します。

cd Android/
./gradlew assembleDebug

それからあなたはここにあなたのapkを見つけることができます。

cd app/build/outputs/apk/
67
m4r00p

私と一緒に、プロジェクトディレクトリで以下のコマンドを実行します。

ネイティブの旧バージョンを反応させるために(あなたはルートにindex.Android.jsが表示されます):

mkdir -p Android/app/src/main/assets && rm -rf Android/app/build && 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 && cd Android && ./gradlew clean assembleRelease && cd ../

ネイティブの新しいバージョンを反応させるために(あなたはただルートにindex.jsを見ます):

mkdir -p Android/app/src/main/assets && rm -rf Android/app/build && 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 && cd Android && ./gradlew clean assembleRelease && cd ../

Apkファイルは次の場所に生成されます。

  • Gradle <3.0:Android/app/build /出力/ apk /
  • Gradle 3.0以降:Android /アプリ/ビルド/出力/ apk/release /
23
Nhan Cao

最初の応答 に従った後は、次のようにしてアプリを実行できます。

react-native run-Android --variant=debug

そしてあなたのアプリはパッケージャを必要とせずに実行されます

4
Abdellah Alaoui

Windowsユーザーのためのすべてのステップがこれからきちんと従った場合: https://facebook.github.io/react-native/docs/signed-apk-Android.html

あなたが実行する必要があります:gradlew assembleRelease

そしてあなたのファイルは次のようになります。

  • app-release.apk
  • app-release-unaligned.apk

場所:E:\YourProjectName\Android\app\build\outputs\apk

3
Dharam Mali

あなたがあなたの携帯電話で走ることができるようにテスト目的のために未署名のapkバージョンを生成することは可能であるかもしれません。

最初にここで述べたように私は赤い画面のエラーが出ました。しかし、私はここで言及されているのと同じに従って、それは私のために働いた。

作業ディレクトリからコンソールで、これら4つのコマンドを実行します。

react-native bundle --dev false --platform Android --entry-file index.js --bundle-output ./Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest ./Android/app/build/intermediates/res/merged/debug

cd Android

gradlew assembleDebug

gradlew assembleRelease

そして、APKファイルが生成されます:アンドロイド\アプリ\ビルド\出力\ apk\debug\app-debug.apk

2
user3195905

最新のアップデート

ルートプロジェクトディレクトリ内

Android/app/src/main/assets/ がない場合は、ディレクトリを作成し、その後に新しいファイルを作成し、 index.Android.bundle という名前で保存します。このようなファイルは Android/app/src/main/assets/index.Android.bundle

Cmdでこれを実行した後

ネイティブネイティブバンドル - プラットフォームAndroid - dev false - エントリファイルindex.js - バンドル出力Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/

cd Android && ./gradlew assembleDebug

その後、あなたはapk app/build /出力/ apk/debug/app-debug.apk を得ることができます

1
Jeeva

他の誰かが最近同じ問題に遭遇した場合に備えて、私はReact Native 0.59.8(RN 0.60でもテスト済み)を使用しています、そして他のいくつかの答えを確認することができます。

  1. 端末にインストールされているアプリの最新のコンパイル済みバージョンをアンインストールします。

  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を実行

  3. cd Android/ && ./gradlew assembleDebugを実行

  4. Android/app/build/output/apk/debugフォルダにapp-debug.apkを入れます。

がんばろう!

1
HugoRMR

私はネイティブ0.55.4を反応させている、基本的に私は手動でバンドルする必要がありました:

react-native bundle --dev false --platform Android --entry-file index.js --bundle- 
output ./Android/app/build/intermediates/assets/debug/index.Android.bundle --assets- 
dest ./Android/app/build/intermediates/res/merged/debug

その後、USB経由でデバイスを接続し、USBデバッグを有効にします。接続されているデバイスをadb devicesで確認してください。

最後にreact-native run-Androidを実行してください。これはあなたの電話にdebug apkをインストールするでしょう、そしてあなたはそれをdevサーバーでうまく実行することができます。

注意:

  • 0.49.0から、エントリポイントは単一のindex.jsです
  • gradlew assembleReleaseは、インストールできないリリース未署名のapksのみを生成します。
1
Shem Leong

BuildTypesを次のように変更するソリューションを見つけました。

buildTypes {
  release {
    signingConfig signingConfigs.release
  }
}
0