我正在使用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。由于没有设置模拟器,因此我只在物理设备上尝试过。
我已经对所有其他项目进行了三重检查,但我不认为这是配置问题。
从上面的链接,它在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 -s <DEVICE_ID> shell am start -n com.packageName.debug/com.packageName.MainActivity
这不是一个完美的解决方案,但是github上有一个补丁,它实际上完成了同样的事情(涉及到两个问题以及这里和这里的拉取请求)。