如何使用 react-native 生成可以在没有服务器的情况下运行的 apk?

新手上路,请多包涵

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

但是,我想构建一个 APK,我可以将其发送给无需访问开发服务器的人,并且我希望他们能够测试应用程序。

我看到文档的 iOS 部分有一个使用离线包的部分。但我不知道如何为 android 完成相同的操作。这可能吗?如果是这样,怎么做?

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

原文由 Gokhan Sari 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 726
2 个回答

按照 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 的部分):

 ...
 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 命令,并在 android/app/build/outputs/apk/app-release.apkandroid/app/build/outputs/apk/release/app-release.apk 下找到您 签名 的 apk android/app/build/outputs/apk/release/app-release.apk

原文由 Pedram 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 Aditya Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题