因为我是新的反应本机,所以如果有任何错误的步骤,让我知道。
我已经按照文档使用命令构建了一个react原生android应用程序
react-native安卓
在设备上运行时,使用了以下命令
react-native运行android
这给了我2 apk文件在我的projectfolder/android/app/build/outputs/apk的输出
现在,当我安装这个apk安装后,它要求一个开发服务器连接到捆绑JS。但我的要求是,用户不需要与开发服务器作斗争,他只需要安装apk,一切都完成了。
已经通过了一些stackoverflow问题,但对构建不需要开发服务器的unsigned apk没有帮助。
你们能帮我找到如何在react native中构建和unsigned apk的方法吗?
请按照这些步骤操作。
捆绑你的js:
如果你在根项目中有index.android.js,那么运行
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
如果你在根项目中有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
创建调试apk:
cd android/
./gradlew assembleDebug
你可以在这里找到你的apk:
cd app/build/outputs/apk/
对我来说,在项目目录中运行以下命令。
对于react原生旧版本(你会在根目录中看到index.android.js):
mkdir -p android/app/src/main/assets && rm -rf android/app/build && 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 && cd android && ./gradlew clean assembleRelease && cd ../
对于react原生新版本(你只需要在根目录中看到index.js):
mkdir -p android/app/src/main/assets && rm -rf android/app/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 clean assembleRelease && cd ../
apk文件将在以下位置生成:
Gradle < 3.0: android/app/build/outputs/apk/
Gradle 3.0+: android/app/build/outputs/apk/release/
我在react本地0.55.4,基本上我必须手动捆绑:
react-native bundle --dev false --platform android --entry-file index.js --bundle-
output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-
dest ./android/app/build/intermediates/res/merged/debug
然后通过usb连接设备,打开usb调试。使用adb设备验证连接的设备。
最后运行react-native run-android,它会在你的手机上安装调试apk,你可以在开发服务器上运行它
注意:
从0.49.0开始,入口点是一个index.js
gradlew assemblerrelease只生成不能安装的release-unsigned apks
可以生成一个unsigned apk版本用于测试,这样你就可以在你的移动设备上运行。
最初我得到了红屏错误,正如这里提到的。但我遵循了这里提到的同样的方法,它对我很有效。
在控制台的工作目录中,运行这四个命令
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
cd android
gradlew assembleDebug
gradlew assembleRelease
然后APK文件将在android\app\build\outputs\ APK \debug\app-debug. APK上生成
从react-native 0.57开始,之前提供的答案都不能再工作了,因为gradle希望在其中找到bundle和资产的目录已经改变了。
没有react-native bundle的简单方法
构建调试版本最简单的方法是完全不使用react-native bundle命令,而是简单地修改你的app/build。gradle文件。
在app/build的project.ext.react映射中。gradle文件中,添加bundleInDebug: true条目。
如果你希望它不是一个——dev版本(没有警告和缩小的包),那么你还应该在同一个映射中添加devDisabledInDebug: true条目。
使用react-native bundle
如果出于某种原因,你需要或想要使用react-native bundle命令来创建bundle,然后使用。/gradlew assembleDebug来创建包含bundle和资产的APK,你必须确保将bundle和资产放在正确的路径中,以便gradle能够找到它们。
从react-native 0.57开始,这些路径都是
Android /app/build/generated/assets/react/debug/index.android.js
和资产的android/app/build/generated/res/react/debug。因此,手动绑定和构建APK的完整命令是:
react-native bundle——dev false——platform android——entry-file index.js——bundle-output ./android/app/build/generated/assets/react/debug/index.android。Bundle——assets-dest ./android/app/build/res/react/debug
然后
。/ gradlew assembleDebug
Bundle和资产路径
注意,gradle查找包和资产的路径可能会发生变化。要找出这些路径的位置,请查看react。Gradle文件在你的node_modules/react-native目录下。以def jsBundleDir =和def resourcesDir =开头的行指定了gradle分别在其中查找bundle和资产的目录。
不使用dev-server生成调试APK
如果您真的想生成一个调试APK(用于测试),它可以在没有开发服务器的情况下运行,那么恭喜您!我来帮你。:)
每个人都说我们需要运行两个命令react-native bundle…然后gradlew assembleDebug,但生成的APK仍然不能在没有开发服务器的情况下工作。经过许多研究和尝试后,我发现我们需要在gradle文件中进行更改(如在步骤2中)。只需遵循以下步骤:
在你的react原生项目中,去/android/app/src/main创建一个文件夹assets
编辑android >应用> build.gradle
project.ext.react = [
...
bundleInDebug: true, // add this line
]
在react native项目的根目录下运行这个命令
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文件夹:cd android
并且,运行这个命令:gradlew assembleDebug
(如果构建失败,尝试从android studio构建assembleDebug)
这将在android/app/build/outputs/apk/debug目录下创建app-debug.apk文件,您可以在没有dev-server的情况下安装和运行该文件。
您可以为此使用两个扩展。这是添加到react-native的设置:
disableDevInDebug: true:在调试buildType中禁用开发服务器
bundleInDebug: true:将jsbundle添加到调试buildType。
最终的project。ext。react在android/app/build中。Gradle应该如下图所示
project.ext.react = [
enableHermes: false, // clean and rebuild if changing
devDisabledInDev: true, // Disable dev server in dev release
bundleInDebug: true, // add bundle to dev apk
]
不使用dev-server生成调试APK
如果您想生成一个调试APK(用于测试),它可以在没有开发服务器的情况下运行。
在你的react原生项目中,去/android/app/src/main创建一个文件夹assets
编辑android >应用> build.gradle
universalApk true // If true, also generate a universal APK
在react native项目的根目录下运行这个命令
npx 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文件夹:cd android
并且,运行这个命令:./gradlew assembleDebug
(如果构建失败,尝试从android studio构建assembleDebug)
做这些事。
如果你想在设备中安装应用程序,只需运行CMD
adb install 'path/add-debug.apk'