使用monkeyrunner startActivity的问题

时间:2014-06-14 02:02:11

标签: android monkeyrunner

我在线阅读了几个帖子,包括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)

但是,似乎没有什么能够启动这项活动。我期待钱工具启动活动意味着我应该能够看到屏幕。

任何帮助都应该受到赞赏。

感谢。

2 个答案:

答案 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