1. ホーム
  2. ジャバスクリプト

[解決済み】react-nativeでサーバーなしで動作するapkを生成するには?

2022-03-31 18:11:24

質問

アプリを作成し、ローカルのエミュレータで実行することができます(デバッグサーバーを変更することで、同じネットワーク内のアンドロイドデバイスでも実行できます)。

しかし、開発サーバーにアクセスできない人に送ることができるAPKを作成し、アプリケーションをテストできるようにしたいのです。

ドキュメントのiOSセクションにUsing offline bundleというセクションがありますね。しかし、私はアンドロイドのために同じを達成する方法を見つけ出すことができませんでした。これは可能ですか?もしそうなら、どのように?

UPDATEしてください。 この質問に対する回答について( Android が JS バンドルの読み込みに失敗した オフラインのバンドルは、開発サーバーからダウンロードできるそうです。しかし、開発サーバーからバンドルを取得すると、画像ファイルを読み込むことができません。

どうすればいいですか?

Aditya Singhの回答に従って、生成された(署名されていない)apkは私の携帯電話にインストールされませんでした。私は、以下の手順で署名された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
        }
    }
}
...

では コマンドを実行する cd android && ./gradlew assembleRelease ,

Windows用 'cd android'を実行してください。 gradlew assembleRelease コマンドを実行し サイン入り の下にあるapk android/app/build/outputs/apk/app-release.apk または android/app/build/outputs/apk/release/app-release.apk