所有文档似乎都认为其中一个处于开发模式并且正在寻求为开发人员设备切换端口或正在进行生产构建!我只是想创建一个appDebug.apk,任何人都可以使用它来运行应用程序,而不会看到有关桥接,事件发射器或AppRegistry等的错误。我无法告诉其他想要看到React Native应用程序切换端口等的人,每次我分享应用程序时,我都不想完整发布。有什么建议吗?
更新:我不想调试应用程序。我只想发布适用于任何设备的测试版本,以便我可以共享构建以进行测试。
UPDATE: HERE IS MY PROJECT STRUCTURE:under
main-project
-> index.android.js
->gridlew
-> build.properties
->build.gradle
->package.json
-> my-app (App project folder)
-> build->output->apk->release.apk
->src->main->assets
->src->main->res
->src->main->java
答案 0 :(得分:4)
以下是从创建反应原生应用程序生成的build.grade获取此工作所需的步骤:
这是您的应用构建文件:
import com.android.build.OutputFile
// These properties must be declared above the apply below!
project.ext.react = [
// whether to bundle JS and assets in debug mode
bundleInDebug: true,
// whether to bundle JS and assets in release mode
bundleInRelease: true,
bundleIn$releaseDebug: true // For custom release type
]
apply from: "../node_modules/react-native/react.gradle" // adjust depending on where your node_modules directory is located.
同时检查build.gradle中是否有使用app package name等定义的ext属性。
这样可以为所有构建类型成功创建包。
答案 1 :(得分:3)
https://stackoverflow.com/a/36961021/6832877
为了在设备上测试应用,我使用其他问题的评论
您需要手动为调试版本创建捆绑包。
捆绑调试版本:
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
创建调试版本:
cd android
./gradlew assembleDebug
.apk将在:
" APP" /机器人/应用程序/生成/输出/ APK
附:另一种方法可能是修改gradle脚本。
对于桥梁问题:
react-native run-android
react-native start --reset-cache
或:
cd myproject
react-native start > /dev/null 2>&1 &
curl "http://localhost:8081/index.android.bundle?platform=android" -o
> "android/app/src/main/assets/index.android.bundle
或:
adb reverse tcp:8081 tcp:8081
答案 2 :(得分:2)
也许使用Expo或create-react-native-app?
在iOS或Android手机上安装Expo应用程序。
运行您的项目,您将获得一个链接或QRCode。 然后发送此链接或qrcode以将您的应用分享给任何人。
答案 3 :(得分:2)
在我的项目中,我通过创建一个构建变体来实现这一目标,该变体将生成的RN代码捆绑在APK中。
使用wget我从Node.JS本地服务器获取RN代码并将其保存为bundle.js
:
wget "http://127.0.0.1:8081/index.android.bundle?platform=android&dev=false" -O bundle.js
我将bundle.js
文件添加到assets/
目录。
我不想每当我想在本地(bundle.js)和实时版本之间切换时手动更改我的代码。所以我为这种情况创建了一个构建变体。 关于构建变体here有一个广泛的教程,所以我只会回顾一下这些非常详细的内容。
在我build.gradle
的{{1}}节点下,我添加了:
android
这会自动生成productFlavors {
bundled {
buildConfigField 'boolean', 'BUNDLED', 'true'
buildConfigField 'String', 'DEV_HOST', "null"
}
}
(有关此here的更多信息):
BuildConfig.java
所以现在我根据我的构建版本启动RN:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "....";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "bundled";
public static final int VERSION_CODE = ...;
public static final String VERSION_NAME = ...;
// Fields from product flavor: bundled
public static final boolean BUNDLED = true;
}
我从Build Variants屏幕中选择了正确的构建变体:
然后点击 Build - >照常进行操作。 构建APK 。
我稍后可能会添加更详细的博文。