我正在使用react-native(0.59)开发一个android应用程序,我想在不同的设备上测试它。我的目标是创建一个 .apk 文件,只需传输文件即可安装,不需要运行开发服务器、USB 电缆等..
我已经查看了之前有关该主题的问题的不同答复,但到目前为止没有任何效果。
这个回复仍然需要一个开发服务器来运行:如何在react native中生成开发APK文件而不询问开发设置服务器IP
此回复生成的 apk 无法安装在设备上,并出现错误“应用程序未安装”:在没有开发服务器的情况下在设备上构建并安装未签名的 apk?
我尝试了react-native文档中的发布方法(参考:https://facebook.github.io/react-native/docs/signed-apk-android),我生成了.aab文件,然后我使用
bundletools
将其与 apk 进行转换,如下所述:从 aab 文件(android 应用程序包)生成 Apk 文件在此答案中:
到目前为止,还没有人提供从 AAB 获取 APK 的解决方案。
此解决方案将生成一个通用二进制文件作为 apk。
将 --mode=universal 添加到您的bundletool命令中(如果您需要签名 应用程序,根据需要使用 --ks 参数)。
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --mode=universal 将输出文件名从 .apks 更改为 .zip
解压缩并探索
文件 universal.apk 是您的应用程序
这个通用二进制文件可能会很大,但却是一个很好的解决方案 用于发送给 QA 部门或在任何地方分发应用程序 除 Google Play 商店外。
但不幸的是,就我而言,当我打开 .zip 文件时,没有名为
universal.apk
: 的文件
所有 .apk 的大小都非常小(大约 10mb,而 .aab 文件为 300)。
还有其他解决办法吗?
完成后https://facebook.github.io/react-native/docs/signed-apk-android你可以简单地运行
// for build and run
react-native run-android --variant=release
并将apk放入
<rn_project_dir>/android/app/build/outputs/apk/release/app-release.apk
适用于 Windows
在cmd中以管理员身份打开C:\Program Files\Microsoft\jdk-17.0.12.7-hotspot
你可能在 Program Files 中有 java 文件夹,这取决于你的 jdk 安装位置来获取运行命令的位置
echo %JAVA_HOME%
运行下面的命令
keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
它会要求提供密码和其他详细信息,然后写“是”
你可以将 my-upload-key.keystore 复制并粘贴到 android/app
之后转到 android/gradle.properties 并编写添加以下代码
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****
然后进入 android/app/build.gradle 并更改代码
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
然后在android中运行命令
gradlew assembleRelease
您的应用程序将位于 android/app/build/outputs/apk/release/app-release.apk