我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。
然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。
我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?
更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。
我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。
然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。
我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?
更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。
当前回答
只有这对我有用- yarn android -variant=release
其他回答
一些有用的脚本为windows用户
在包中复制粘贴这些代码。“script”下的Json文件:{}
* VS Code
--Enable NPM SCRIPT
--Now you can directly run scripts from here
"android": "react-native run-android",
"clean-run-android": "cd android && ./gradlew clean && cd.. && react-native run-android ",
"start": "node node_modules/react-native/local-cli/cli.js start --reset-cache",
"reset": "rm -rf node_modules/ && npm cache clear && watchman watch-del-all && npm i",
"debug-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 assembleDebug && cd app/src/main/res/ && rmdir /S /Q raw && rmdir /S /Q drawable-mdpi",
"release-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/build/intermediates/res/merged/release/ && cd android && ./gradlew assembleRelease && cd..",
"install-apk": "cd android && ./gradlew installRelease",
"release-aab": "cd android && ./gradlew bundleRelease"
希望对初学者有所帮助
这里是官方文档
如果您没有密钥存储库,请使用之前的命令否则跳过
生成签名密钥/ Keystore文件 您可以使用keytool生成一个私有签名密钥。在Windows上,keytool必须从C:\Program Files\Java\jdkx.x.x_x\bin.运行
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
您将得到一个类似my-release-key.keystore的文件
设置gradle变量 把我的释放钥匙放上去。在项目文件夹的android/app目录下的Keystore文件。 编辑文件android/gradle。属性并添加以下内容(将*****替换为正确的密钥库密码、别名和密钥密码), enableAapt2设置为false是变通的,因为android gradle 3.0版本的问题
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
android.enableAapt2=false
然后添加这些app/ build。gradle(应用)
下面是默认配置
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
}
}
和Inside Build类型release {}
signingConfig signingConfigs.release
然后在android studio终端上简单地运行这个命令 以下命令将自动回答以上所有问题
如果窗户
cd android
gradlew assembleRelease
Linux / MAC
$ cd android
$ ./gradlew assembleRelease
如果你得到任何错误删除所有构建文件夹和运行命令
gradlew clean
又比
gradlew assembleRelease
对我来说,./gradlew assemblerrelease不再工作,但下面的可以。
./gradlew :app:assembleRelease
感谢这条评论。
执行如下命令:
react-native run-android --variant=release
注意——variant=release仅在设置了签名时可用 使用cd android && ./gradlew assemblerrelease。
如果有人想建立没有playstore键,那么这个命令将是非常有用的。
# react-native run-android——variant=release
构建完成后,您可以在发布构建文件中找到apk。