我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。

然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。

我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?

更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。


当前回答

执行如下命令:

react-native run-android --variant=release

注意——variant=release仅在设置了签名时可用 使用cd android && ./gradlew assemblerrelease。

其他回答

对于最新的react原生版本来捆绑项目

安卓

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

参考react-native关于生成签名APK的官方文档

原生生成签名APK

只有这对我有用- yarn android -variant=release

对我来说,./gradlew assemblerrelease不再工作,但下面的可以。

./gradlew :app:assembleRelease

感谢这条评论。

您必须创建一个密钥来签署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

更新:根据@shashuec和@Fallen的评论

如果出现错误

ENOENT:没有这样的文件或目录,打开'android/app/src/main/assets/index.android.bundle'

执行mkdir android/app/src/main/assets命令