如何生成一个可以 运行 没有服务器的 apk 和 react-native?
How can I generate an apk that can run without server with react-native?
我已经构建了我的应用程序,我可以 运行 在我的本地模拟器上(以及通过更改调试服务器在同一网络内的我的 android 设备上)。
但是,我想构建一个 APK,我可以将其发送给无法访问开发服务器的人,并且我希望他们能够测试应用程序。
我看到文档的 iOS 部分有一个使用离线包的部分。但是我无法弄清楚如何为 android 完成同样的事情。这可能吗?如果可以,怎么做?
更新:关于这个问题的答案()据说可以从开发服务器下载离线包。但是当我从开发服务器获取包时,无法加载图像文件。
您必须创建一个密钥来签署 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 上传到您的 phone。 -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: no such file or directory, open 'android/app/src/main/assets/index.android.bundle'
运行 mkdir android/app/src/main/assets
运行 这个命令:
react-native run-android --variant=release
Note that --variant=release
is only available if you've set up signing
with cd android && ./gradlew assembleRelease
.
你应该只使用 android studio 来完成这个过程。它只是更简单。但是首先 运行 这个命令在你的本机应用程序目录中:
对于 react-native 的较新版本(例如 React Native 0.49.0 等...)
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
对于 react-native 的旧版本(0.49.0 及以下版本)
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/
然后使用android studio打开你react native app目录下的'android'文件夹,会要求升级gradle等东西。转到 build-> Generate signed APK 并按照那里的说明进行操作。真的很简单。
如果你得到Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
我尝试使用@Aditya 的方法生成未签名的 APK 文件并安装它,但是当我将它安装到我的 Android 平板电脑上时,它给了我 Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
错误。
我想这是因为 APK 文件没有签名,平板电脑对此不满意。因此,在生成 React Native 包文件后,我能够像往常一样通过 Android Studio 生成签名的 APK 文件。
顺便说一句,我们的应用程序是一个功能齐全的 Android 应用程序,它已经存在于 Play 商店中,我们只是将 React Native 添加到它的小块中,因为它是太棒了。
总结一下,这是我的步骤:
1) 生成 React Native 包:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bundle --assets-dest android/<your-package-name>/src/main/res/
2) 从 Android Studio 生成签名的 APK 文件。
3) 将签名的 APK 文件安装到 USB 设备:
adb -d install -r <path_to_signed_apk>
如果您也有模拟器运行,-d
标志只是告诉adb
安装在连接的USB设备上。如果您想安装在任何模拟器上,请删除 -d
标志。
4)盈利!
我有另一个解决方案:-
生成签名密钥
您可以使用 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 文件放在项目文件夹的 android/app 目录下。
编辑项目文件夹中的文件 android/app/build.gradle 并添加签名配置,
android {
....
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'yourpassword'
keyAlias 'my-key-alias'
keyPassword 'yourpassword'
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
和运行
gradlew assembleRelease
这会给你两个文件 android\app\build\outputs\apk
app-release.apk 和 app-release-unsigned.apk
现在在您的 android 设备中安装 app-release.apk。
根据 Aditya Singh 的回答,生成的(未签名的)apk 无法安装在我的 phone 上。我必须使用说明 here.
生成签名的 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,您可以使用说明 here 将密码存储在钥匙串中,而不是以明文形式存储。
然后编辑 app/build.gradle 并确保存在以下内容(可能需要添加带有 signingConfigs signingConfig 的部分):
...
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
,
For Windows 'cd android' 然后 运行 gradlew assembleRelease
命令,然后找到你的 signed android/app/build/outputs/apk/app-release.apk
下的 apk,或 android/app/build/outputs/apk/release/app-release.apk
转到项目目录并运行命令:
cd android && ./gradlew assembleRelease
对于 React Native 0.49 及以上版本
你应该去终端上的项目目录和运行那个命令
1 - mkdir android/app/src/main/assets
2 - 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
如果低于 0.49
1 - mkdir android/app/src/main/assets
2 - 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
然后使用android studio打开你react native app目录下的'android'文件夹,会要求升级gradle等东西。转到 build-> Generate signed APK 并按照那里的说明进行操作。还行吧。
希望对新手有所帮助
官方文档here
如果你没有密钥库而不是在命令之前使用,否则跳过
正在生成签名密钥/密钥库文件
您可以使用 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变量
将 my-release-key.keystore 文件放在项目文件夹的 android/app 目录下。
编辑文件 android/gradle.properties 并添加以下内容(将 ***** 替换为正确的密钥库密码、别名和密钥密码),
enableAapt2 set false 是解决方法,因为 android gradle 版本 3.0 problem
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/buid.gradle (app)
低于默认配置
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 类型发布 { }
signingConfig signingConfigs.release
然后在android工作室终端中简单地运行这个命令
以下命令将自动完成所有答案
if windows
cd android
gradlew assembleRelease
if linux / mac
$ cd android
$ ./gradlew assembleRelease
如果出现任何错误,请删除所有构建文件夹和 运行 命令
gradlew clean
再次
gradlew assembleRelease
使用 android studio 为 react 的 android 项目生成签名的 apk 也是一个不错的选择,在 android studio 中打开 react 的 android 项目并生成击键并签署了 apk。
如果您遇到涉及 index.android.js 的错误。这是因为你使用的是新的 React-native 版本(我使用的是 0.55.4)
只需将 "index.android.js" 替换为 "index.js"
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/
AndroidStudio
中的 GUI 方式
- 在 Android Studio 中打开 React Native 应用程序的 Android 应用程序部分(这只是意味着用 [=32= 打开你的 react-native 项目的 android 文件夹]工作室)
- 转到顶部的 "Build" 选项卡
- 继续"Build Bundle(s) / APK(s)"
- 然后select"Build APK(s)"
- 这将引导您完成查找密钥以签署 APK 或创建密钥(如果您还没有密钥)的过程,这一切都非常简单。如果您只是练习,您可以生成这些密钥并将它们保存到您的桌面。
- 一旦该过程完成并且构建成功,Android Studio 中将在下方弹出一个窗口。单击其中显示 "locate"(APK)
的 link
- 这会将您带到 apk 文件,将其移至您的 android 设备。然后导航到 Android 设备上的那个文件并安装它。
生成签名APK参考react-native官方文档
对于捆绑项目的最新 React Native 版本
Android
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
在下面尝试,它会在您的 root/android/app/build/outputs/apk/debug 文件夹中生成一个 app-debug.apk
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
然后转到 android 文件夹和 运行
./gradlew assembleDebug
如果有人想在没有 Playstore 密钥的情况下进行构建,那么此命令将非常有用。
# react-native run-android --variant=release
构建完成后,您可以在发布构建文件中找到 apk。
在没有开发服务器的情况下生成调试 APK
如果你真的想生成一个可以 运行 没有开发服务器的调试 APK(用于测试目的),这里是 link 我对另一个类似 post 的回答这可能对你有帮助。
您只需:
- 编辑
android/app/build.gradle
project.ext.react = [
...
bundleInDebug: true, // add this line
]
- 运行这个命令在你项目的根目录下
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
- 然后,运行
./gradlew assembleDebug
(Mac或Linux)或gradlew assembleDebug
(Windows)在/android
文件夹中
如果构建失败,我建议您从 Android studio 构建应用程序
- 一些对 WINDOW 用户有用的脚本
将这些代码复制并粘贴到 package.json 文件中 "script":{}
下
* 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"
第一个
cd android
然后 运行
./gradlew installRelease
您终于可以在这里找到 apk。
Project\android\app\build\outputs\apk\release\app-release.apk
对我来说 ./gradlew assembleRelease
不再有效,但下面的方法有效。
./gradlew :app:assembleRelease
感谢this comment。
只有这个对我有用 - yarn android --variant=release
For me this worked (MACOS)
打开终端
cd project_directory
运行 这个命令
yarn start
打开另一个终端
运行 这些命令
cd android
./gradlew assembleRelease
我已经构建了我的应用程序,我可以 运行 在我的本地模拟器上(以及通过更改调试服务器在同一网络内的我的 android 设备上)。
但是,我想构建一个 APK,我可以将其发送给无法访问开发服务器的人,并且我希望他们能够测试应用程序。
我看到文档的 iOS 部分有一个使用离线包的部分。但是我无法弄清楚如何为 android 完成同样的事情。这可能吗?如果可以,怎么做?
更新:关于这个问题的答案(
您必须创建一个密钥来签署 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 上传到您的 phone。 -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: no such file or directory, open 'android/app/src/main/assets/index.android.bundle'
运行 mkdir android/app/src/main/assets
运行 这个命令:
react-native run-android --variant=release
Note that
--variant=release
is only available if you've set up signing withcd android && ./gradlew assembleRelease
.
你应该只使用 android studio 来完成这个过程。它只是更简单。但是首先 运行 这个命令在你的本机应用程序目录中:
对于 react-native 的较新版本(例如 React Native 0.49.0 等...)
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
对于 react-native 的旧版本(0.49.0 及以下版本)
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/
然后使用android studio打开你react native app目录下的'android'文件夹,会要求升级gradle等东西。转到 build-> Generate signed APK 并按照那里的说明进行操作。真的很简单。
如果你得到Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
我尝试使用@Aditya 的方法生成未签名的 APK 文件并安装它,但是当我将它安装到我的 Android 平板电脑上时,它给了我 Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
错误。
我想这是因为 APK 文件没有签名,平板电脑对此不满意。因此,在生成 React Native 包文件后,我能够像往常一样通过 Android Studio 生成签名的 APK 文件。
顺便说一句,我们的应用程序是一个功能齐全的 Android 应用程序,它已经存在于 Play 商店中,我们只是将 React Native 添加到它的小块中,因为它是太棒了。
总结一下,这是我的步骤:
1) 生成 React Native 包:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bundle --assets-dest android/<your-package-name>/src/main/res/
2) 从 Android Studio 生成签名的 APK 文件。
3) 将签名的 APK 文件安装到 USB 设备:
adb -d install -r <path_to_signed_apk>
如果您也有模拟器运行,-d
标志只是告诉adb
安装在连接的USB设备上。如果您想安装在任何模拟器上,请删除 -d
标志。
4)盈利!
我有另一个解决方案:- 生成签名密钥 您可以使用 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 文件放在项目文件夹的 android/app 目录下。
编辑项目文件夹中的文件 android/app/build.gradle 并添加签名配置,
android {
....
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'yourpassword'
keyAlias 'my-key-alias'
keyPassword 'yourpassword'
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
和运行
gradlew assembleRelease
这会给你两个文件 android\app\build\outputs\apk app-release.apk 和 app-release-unsigned.apk 现在在您的 android 设备中安装 app-release.apk。
根据 Aditya Singh 的回答,生成的(未签名的)apk 无法安装在我的 phone 上。我必须使用说明 here.
生成签名的 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,您可以使用说明 here 将密码存储在钥匙串中,而不是以明文形式存储。
然后编辑 app/build.gradle 并确保存在以下内容(可能需要添加带有 signingConfigs signingConfig 的部分):
...
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
,
For Windows 'cd android' 然后 运行 gradlew assembleRelease
命令,然后找到你的 signed android/app/build/outputs/apk/app-release.apk
下的 apk,或 android/app/build/outputs/apk/release/app-release.apk
转到项目目录并运行命令:
cd android && ./gradlew assembleRelease
对于 React Native 0.49 及以上版本
你应该去终端上的项目目录和运行那个命令
1 - mkdir android/app/src/main/assets
2 - 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
如果低于 0.49
1 - mkdir android/app/src/main/assets
2 - 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
然后使用android studio打开你react native app目录下的'android'文件夹,会要求升级gradle等东西。转到 build-> Generate signed APK 并按照那里的说明进行操作。还行吧。
希望对新手有所帮助
官方文档here
如果你没有密钥库而不是在命令之前使用,否则跳过
正在生成签名密钥/密钥库文件 您可以使用 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变量 将 my-release-key.keystore 文件放在项目文件夹的 android/app 目录下。 编辑文件 android/gradle.properties 并添加以下内容(将 ***** 替换为正确的密钥库密码、别名和密钥密码), enableAapt2 set false 是解决方法,因为 android gradle 版本 3.0 problem
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/buid.gradle (app)
低于默认配置
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 类型发布 { }
signingConfig signingConfigs.release
然后在android工作室终端中简单地运行这个命令 以下命令将自动完成所有答案
if windows
cd android
gradlew assembleRelease
if linux / mac
$ cd android
$ ./gradlew assembleRelease
如果出现任何错误,请删除所有构建文件夹和 运行 命令
gradlew clean
再次
gradlew assembleRelease
使用 android studio 为 react 的 android 项目生成签名的 apk 也是一个不错的选择,在 android studio 中打开 react 的 android 项目并生成击键并签署了 apk。
如果您遇到涉及 index.android.js 的错误。这是因为你使用的是新的 React-native 版本(我使用的是 0.55.4) 只需将 "index.android.js" 替换为 "index.js"
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/
AndroidStudio
中的 GUI 方式- 在 Android Studio 中打开 React Native 应用程序的 Android 应用程序部分(这只是意味着用 [=32= 打开你的 react-native 项目的 android 文件夹]工作室)
- 转到顶部的 "Build" 选项卡
- 继续"Build Bundle(s) / APK(s)"
- 然后select"Build APK(s)"
- 这将引导您完成查找密钥以签署 APK 或创建密钥(如果您还没有密钥)的过程,这一切都非常简单。如果您只是练习,您可以生成这些密钥并将它们保存到您的桌面。
- 一旦该过程完成并且构建成功,Android Studio 中将在下方弹出一个窗口。单击其中显示 "locate"(APK) 的 link
- 这会将您带到 apk 文件,将其移至您的 android 设备。然后导航到 Android 设备上的那个文件并安装它。
生成签名APK参考react-native官方文档
对于捆绑项目的最新 React Native 版本
Android
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
在下面尝试,它会在您的 root/android/app/build/outputs/apk/debug 文件夹中生成一个 app-debug.apk
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
然后转到 android 文件夹和 运行
./gradlew assembleDebug
如果有人想在没有 Playstore 密钥的情况下进行构建,那么此命令将非常有用。
# react-native run-android --variant=release
构建完成后,您可以在发布构建文件中找到 apk。
在没有开发服务器的情况下生成调试 APK
如果你真的想生成一个可以 运行 没有开发服务器的调试 APK(用于测试目的),这里是 link 我对另一个类似 post 的回答这可能对你有帮助。
您只需:
- 编辑
android/app/build.gradle
project.ext.react = [
...
bundleInDebug: true, // add this line
]
- 运行这个命令在你项目的根目录下
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
- 然后,运行
./gradlew assembleDebug
(Mac或Linux)或gradlew assembleDebug
(Windows)在/android
文件夹中
如果构建失败,我建议您从 Android studio 构建应用程序
- 一些对 WINDOW 用户有用的脚本
将这些代码复制并粘贴到 package.json 文件中 "script":{}
* 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"
第一个
cd android
然后 运行
./gradlew installRelease
您终于可以在这里找到 apk。
Project\android\app\build\outputs\apk\release\app-release.apk
对我来说 ./gradlew assembleRelease
不再有效,但下面的方法有效。
./gradlew :app:assembleRelease
感谢this comment。
只有这个对我有用 - yarn android --variant=release
For me this worked (MACOS)
打开终端
cd project_directory
运行 这个命令
yarn start
打开另一个终端
运行 这些命令
cd android
./gradlew assembleRelease