React Native应用程序在使用applicationIdSuffix时不会启动

我正在使用react-native-codepush@1.16.1-beta , 部分设置包括指定applicationIdSuffix。

我在过去的一个应用程序中设置了这个,没有任何问题(React Native 0.37)。 这个项目(React Native 0.40)现在我遇到了这个错误两次。 我第一次重build我的整个项目,它就消失了。 它再次发生没有明显的原因,所以我克隆了我的项目的最新稳定版本在一个新的目录,并得到了同样的错误。

使用react-native run-android时会发生错误。 错误发生在成功构build之后:

 Starting: Intent { cmp=com.packagename/.MainActivity } Error type 3 Error: Activity class {com.packagename/com.packagename.MainActivity} does not exist. 

如果我从app/build.gradle删除applicationIdSuffix ".debug" ,并且该应用程序在我的手机上启动没有问题,错误消失。

我的手机是Android 7.0的Nexus 6P。 我只尝试过物理设备,因为我没有设置模拟器。

我已经三重检查了一切对我的其他项目,我不相信这是一个configuration问题。

Solutions Collecting From Web of "React Native应用程序在使用applicationIdSuffix时不会启动"

从上面的链接,已经讨论了很长一段时间(一年以上)在github上,似乎有一些补丁在他们的路上,所以我下面的修复可能会或可能不会工作取决于版本的react-native正在使用。

以下是我(暂时)解决问题的方法。 问题是react-native-cli尝试调用adb shell am start的参数是错误的:

 com.packagename/com.packagename.MainActivity 

什么时候应该是这样的

 com.packagename.debug/com.packagename.MainActivity 

因此,直到您的react-native版本已经修复,您可以使用此命令(按照此代码推荐PR中的build议:

 cd android && ./gradlew installDebug && adb -s <DEVICE_ID> shell am start -n com.packageName.debug/com.packageName.MainActivity 

这不是一个完美的解决scheme,但是github上有一个基本上相同的东西(涉及到一些问题和在这里和这里拉请求)的补丁。

我也没有find一个真正的解决scheme。 现在我正在使用一种解决方法,我不使用react-native run -…,而是直接使用AndroidStudio。

我在http://sex-gril.com/project/45838.html发现了一个提示,说你必须在build.gradle中将包名添加到defaultConfig中&#x3002;

 android { ... defaultConfig { ... resValue "string", "build_config_package", "Your App ID LIke in Manifest" } } 

但是这对我来说不起作用= /。