因为我是新的反应本机,所以如果有任何错误的步骤,让我知道。

我已经按照文档使用命令构建了一个react原生android应用程序

react-native安卓

在设备上运行时,使用了以下命令

react-native运行android

这给了我2 apk文件在我的projectfolder/android/app/build/outputs/apk的输出

现在,当我安装这个apk安装后,它要求一个开发服务器连接到捆绑JS。但我的要求是,用户不需要与开发服务器作斗争,他只需要安装apk,一切都完成了。

已经通过了一些stackoverflow问题,但对构建不需要开发服务器的unsigned apk没有帮助。

你们能帮我找到如何在react native中构建和unsigned apk的方法吗?


当前回答

以防其他人最近遇到同样的问题,我使用React Native 0.59.8(也用RN 0.60测试),我可以确认一些其他答案,以下是步骤:

卸载您设备上安装的应用程序的最新编译版本 运行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 assembleDebug命令 在android/app/build/outputs/apk/debug文件夹中获取你的app-debug.apk

好运!

其他回答

可以生成一个unsigned apk版本用于测试,这样你就可以在你的移动设备上运行。

最初我得到了红屏错误,正如这里提到的。但我遵循了这里提到的同样的方法,它对我很有效。

在控制台的工作目录中,运行这四个命令

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文件将在android\app\build\outputs\ APK \debug\app-debug. APK上生成

从react-native 0.57开始,之前提供的答案都不能再工作了,因为gradle希望在其中找到bundle和资产的目录已经改变了。

没有react-native bundle的简单方法

构建调试版本最简单的方法是完全不使用react-native bundle命令,而是简单地修改你的app/build。gradle文件。

在app/build的project.ext.react映射中。gradle文件中,添加bundleInDebug: true条目。 如果你希望它不是一个——dev版本(没有警告和缩小的包),那么你还应该在同一个映射中添加devDisabledInDebug: true条目。

使用react-native bundle

如果出于某种原因,你需要或想要使用react-native bundle命令来创建bundle,然后使用。/gradlew assembleDebug来创建包含bundle和资产的APK,你必须确保将bundle和资产放在正确的路径中,以便gradle能够找到它们。

从react-native 0.57开始,这些路径都是 Android /app/build/generated/assets/react/debug/index.android.js

和资产的android/app/build/generated/res/react/debug。因此,手动绑定和构建APK的完整命令是:

react-native bundle——dev false——platform android——entry-file index.js——bundle-output ./android/app/build/generated/assets/react/debug/index.android。Bundle——assets-dest ./android/app/build/res/react/debug

然后

。/ gradlew assembleDebug

Bundle和资产路径

注意,gradle查找包和资产的路径可能会发生变化。要找出这些路径的位置,请查看react。Gradle文件在你的node_modules/react-native目录下。以def jsBundleDir =和def resourcesDir =开头的行指定了gradle分别在其中查找bundle和资产的目录。

对我来说,在项目目录中运行以下命令。

对于react原生旧版本(你会在根目录中看到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 ../

对于react原生新版本(你只需要在根目录中看到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/outputs/apk/ Gradle 3.0+: android/app/build/outputs/apk/release/

您需要为调试版本手动创建包。

包调试构建:

#React-Native 0.59
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res

#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`

附注:另一种方法可能是修改gradle脚本。

在build中为project.ext.react添加devDisabledInDebug: truegradle文件。