React Native Android - 如何仅在设备上以调试模式运行?

时间:2016-06-24 13:42:14

标签: android ios react-native

我试图在我们的设备上以调试模式运行我的本机Android应用程序,而不需要在开发框上运行开发服务器。我在两个平台上使用调试变体/方案来促进" staging"我们的应用程序的版本,因为我已经读过,本机对于除了发布和调试之外的构建模式并不是超级友好的。

在iOS方面,我能够修改AppDelegate.m,如下所示......基本上,如果它是调试版本并且由buddybuild构建,请不要寻找开发机器js包,查看设备:

#ifdef DEBUG
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
if (infoPlistDict[@"BUDDYBUILD_BUILD_ID"]) {
  // deployed via buddybuild, don't use localhost
  jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
} else {
  jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
}
#else
  jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif

...我正在寻找一种在Android上执行此操作的方法。我有我需要的buddybuild代码,所以不用担心,我只是想知道如何以编程方式更改android上js bundle的位置,就像我在AppDelegate.m中为iOS做的那样。现在,与android上js bundle的位置相关的所有代码似乎都在本机反应包本身中,我宁愿不破解它以使其工作。

如果我可以提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

在Android上,您需要修改android/app/build.gradle

apply from: "../../node_modules/react-native/react.gradle"行之前,您需要告诉打包者捆绑js资产并在部署APK时包含它们。

例如:

project.ext.react = [
    bundleInBuddybuild: true,
]

语法为bundleIn${productFlavor}${buildType}

或者如果您只是想为调试版本执行此操作:

project.ext.react = [
    bundleInDebug: true,
]

答案 1 :(得分:2)

我想总结一下在调试版本中捆绑所有内容的解决方案。特别是第二点的提示对我来说很有用。谢谢@Tspoon。

<强> 1。 Android Studio

  • 转到偏好设置 - &gt;构建,执行,部署 - &gt;编译器
  • 取消选中&#34;按需配置&#34;

<强> 2。的build.gradle

    {li>

    app/build.gradle文件中执行以下操作:

    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,
    ]
    
    apply from: "../../node_modules/react-native/react.gradle"
    
  • 注意,在apply from ...语句上方定义反应设置非常重要,否则无法正常工作

第3。创建APK

  • ./gradlew assembleDebug文件夹
  • 中使用android照常创建您的开发apk