我正在使用react-native-codepush@1.16.1-beta
,部分设置包括指定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.我只尝试过物理设备,因为我没有设置模拟器.
我已经将所有内容与我的其他项目进行了三次检查,我不相信这是一个配置问题.
这对我的反应原生0.50.3起作用了
react-native run-android --appIdSuffix "debug"
从上面的链接,它已经在github上讨论了很长时间(超过一年),并且在他们的路上似乎有一些补丁,所以我的修复可能会或可能不会工作取决于react-native
你使用的版本.
这就是我(暂时)解决问题的方法.问题是react-native-cli
尝试adb shell am start
使用错误的参数调用:
com.packagename/com.packagename.MainActivity
什么时候应该调用类似的东西
com.packagename.debug/com.packagename.MainActivity
因此,react-native
在修复您的版本之前,您可以使用此命令(如此代码推送PR中所建议的那样:
cd android && ./gradlew installDebug && adb -sshell am start -n com.packageName.debug/com.packageName.MainActivity
这不是一个完美的解决方案,但是在github上有一个补丁,它基本上做同样的事情(关于这里和这里的几个问题和拉取请求).