如何在React Native中生成无需开发服务器即可运行的apk

问题描述 投票:0回答:2

我正在使用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
:

的文件

enter image description here

所有 .apk 的大小都非常小(大约 10mb,而 .aab 文件为 300)。

还有其他解决办法吗?

android react-native apk
2个回答
2
投票

完成后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

0
投票

适用于 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

© www.soinside.com 2019 - 2024. All rights reserved.