web-dev-qa-db-ja.com

React-nativeを使用すると、サーバーなしで実行できるapkを生成する方法を教えてください。

私は自分のアプリを作成しました、私は自分のローカルシミュレータ上で(そしてデバッグサーバーを変更することによって同じネットワーク内の私のAndroidデバイス上でも)それを実行することができます。

しかし、私は私が開発用サーバーにアクセスすることなく誰かに送ることができ、私は彼らがアプリケーションをテストできるようにしたいAPKを作りたいです。

ドキュメントの「iOSでのオフラインバンドルの使用」のセクションがあります。しかし、私はAndroidのために同じことを達成する方法を理解することができませんでした。これは可能ですか?もしそうなら、どうですか?

更新: この質問への答え( ネイティブAndroidはJSバンドルの読み込みに失敗しました )オフラインのバンドルは開発用サーバーからダウンロードできると言われています。しかし、開発サーバーからバンドルを入手したときに、イメージファイルをロードできません。

140
Gokhan Sari

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を見つけます。

111
Pedram

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を実行します。

159
Aditya Singh

このコマンドを実行してください。

react-native run-Android --variant=release

--variant=releaseは、cd Android && ./gradlew assembleReleaseを使ってサインアップを設定した場合にのみ利用可能です。

24
Ahmed Ashraf

あなたはちょうどこのプロセスのために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の生成に行き、そこからの指示に従ってください。それは本当に簡単です。

24
Mike Axle

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の生成に行き、そこからの指示に従ってください。あのね。

15
Yasin Ugurlu

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.bu‌​ndle --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)利益!

11
Joshua Pinter

私は別の解決策を持っています: - 署名鍵を生成するあなたは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デバイスにインストールされます。

5
Raman Bhasker

プロジェクトディレクトリに移動して次のコマンドを実行します。

cd Android && ./gradlew assembleRelease
4
Sidharth Taneja

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/
4
Usman Kazmi

うまくいけば、それは新しい初心者に役立つでしょう

オフィシャルドキュメント ここ

コマンドの前に使用するキーストアがない場合は、スキップします。

署名鍵の生成/キーストアファイル 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
1
Abhiode

プロジェクトにバンドルする最新のネイティブネイティブバージョン

アンドロイド

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

1
Phani Sai

Androidスタジオを使用してreactのAndroidプロジェクト用の署名付きapkを生成することもよくできた簡単な方法です。AndroidのAndroidプロジェクトをAndroidスタジオで開き、キーストロークと署名付きapkを生成します。

0
Ahmad Sadiq

以下で試してください、それはあなたのルート/ 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

0
bro

プレイストアキーを使用せずにビルドする場合は、このコマンドが非常に役立ちます。

# react-native run-Android --variant=release

ビルドが完了すると、リリースビルドファイルでapkを見つけることができます。

0
Akash Golui

Android StudioのGUIのやり方

  • React NativeアプリのAndroidアプリの一部をAndroid Studioで開きます(これは、Android Studioを使用して、React-NativeプロジェクトのAndroidフォルダーを開くことを意味します)。
  • 上部の[ビルド]タブに移動します
  • 「Build Bundle(s)/ APK(s)」に進んでください。
  • それから「Build APK(s)」を選択します
  • これにより、APKに署名するためのキーの場所を特定したり、まだキーを持っていない場合はキーを作成したりすることができます。これはすべて非常に簡単です。練習しているだけなら、これらのキーを生成してデスクトップに保存することができます。
  • そのプロセスが完了し、ビルドが成功すると、Android Studioの下にポップアップが表示されます。その中にある "locate"と書かれたリンクをクリックしてください(APK)
  • それはあなたをAndroidデバイスの上に移動させて、apkファイルに連れて行きます。その後、Androidデバイス上のそのファイルに移動してインストールします。
0
David Hudman

署名付きAPKの生成に関する反応ネイティブの公式文書を参照してください。

React-Nativeを生成する署名付きAPK

0
Codemaker