我在线阅读了几个帖子,包括Android开发者网站http://developer.android.com/tools/help/monkeyrunner_concepts.html
我无法通过startActivity方法启动Activity。我尝试了几种选择。这是一个示例代码:
package = 'com.mydomain.mypackage'
activity = '.MyActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
还尝试了以下代码:
package = 'com.mydomain.mypackage'
activity = 'com.mydomain.mypackage.MyActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
但是,似乎没有什么能够启动这项活动。我期待钱工具启动活动意味着我应该能够看到屏幕。
任何帮助都应该受到赞赏。
感谢。
答案 0 :(得分:7)
嗯,我很高兴你已经解决了你的问题,但这不是一般的解决方案,所以我想为那些来寻找答案的人添加一些东西。我花了很长时间才弄明白这一点,所以我希望我能帮助别人节省时间:
我的包名(我在AndroidManifest.xml中的"包"属性的值,正如您所提到的)是: com.companyname.android.tv
我的主要(启动器)活动是: com.companyname.android.tv.TvActivity
仍然没有这个工作:
package = 'com.companyname.android.tv'
activity = 'com.companyname.android.tv.TvActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
然后我尝试从android studio运行活动,该活动成功并检查日志。这就是我发现的:
启动应用程序:com.companyname.android_tv_app / com.companyname.android.tv.TvActivity。
所以我尝试了这个,它起作用了:
package = 'com.companyname.android_tv_app'
activity = 'com.companyname.android.tv.TvActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
" android_tv_app"是我们的应用名称。它没有写在您的清单文件中。它只发生在app的build.gradle文件的一个地方,如下所示:
applicationId" com.companyname.android_tv_app"
因此,如果您使用monkeyrunner继续使用startActivity失败,则可以尝试使用应用程序ID替换您的包名称。这是有道理的,因为monkeyrunner试图告诉系统:"去找这个应用程序,运行这个活动"没有应用程序ID,看起来它也找不到包。
可能大多数人都拥有相同的软件包名称和应用程序ID,因为向导可以帮助您保持这种状态,但是当您重命名应用程序和/或软件包名称时,并非如此。
答案 1 :(得分:5)
我修好了......解决方案在https://groups.google.com/forum/#!topic/android-developers/FvlBxSmNrk0
找到了例如,如果您("包的价值" AndroidManifest.xml中元素的属性是 " com.example.test.application"和您的主要活动类名称 " MainActivity"在Java包中" com.example.myapp"那么 组件名称是
com.example.test.application / com.example.myapp.MainActivity