使用applicationIdSuffix时,React Native应用程序无法启动

时间:2017-01-20 20:31:29

标签: android react-native adb build.gradle

我正在使用react-native-codepush@1.16.1-betapart of the setup包括指定applicationIdSuffix。

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

使用react-native run-android时发生错误。成功构建后发生错误:

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

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

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

我已经将所有内容与我的其他项目进行了三次检查,我不相信这是一个配置问题。

4 个答案:

答案 0 :(得分:21)

这对我有用 react-native 0.50.3

react-native run-android --appIdSuffix "debug"

答案 1 :(得分:6)

从上面的链接来看,它已经在github上讨论了很长时间(一年多),并且似乎有一些补丁在路上,所以我的修复可能会或可能不会取决于您正在使用的react-native版本。

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

com.packagename/com.packagename.MainActivity

什么时候应该调用类似

的东西
com.packagename.debug/com.packagename.MainActivity

因此,在修复react-native版本之前,您可以使用此命令(根据this code-push PR中的建议:

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

这不是一个完美的解决方案,但是github上的补丁基本上做了同样的事情(与几个问题和拉取请求相关here&amp; here)。

答案 2 :(得分:4)

如果您有一个自定义的applicationId(与Java包名称不同),则在运行run-android命令时必须指定它

npx react-native run-android --appId com.custompackagename.debug

react启动意图时,您将在最后看到结果

Starting: Intent { cmp=com.custompackagename.debug/com.packagename.MainActivity

答案 3 :(得分:0)

我也没有找到真正的解决方案。现在我正在使用一种解决方法,我不会使用react-native run -...但直接使用AndroidStudio。

我在http://sex-gril.com/project/45838.html找到了一个提示,说明你必须将包名添加到build.gradle中的defaultConfig。

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

但那对我不起作用= /。