不知取啥名 2015-06-01 06:35 采纳率: 0%
浏览 8561
已结题

在APK中通过adb shell命令启动UIautomator失败

源码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
Button stButton = (Button)findViewById(R.id.start_test);
stButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                            // TODO Auto-generated method stub
                            try {
                                    Process pro = Runtime
                                                    .getRuntime()
                                                    .exec("uiautomator runtest TestHiDP.jar -c com.huawei.cases.TestAllCase");
                            } catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                            }
                    }
            });

    }

报错信息为:
12-03 08:17:24.452: E/UiAutomatorTestRunner(6046): java.lang.RuntimeException: Didn't find class "com.huawei.cases.TestAllCase" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/uiautomator.jar", zip file "/data/local/tmp/TestHiDP.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
12-03 08:17:24.452: E/UiAutomatorTestRunner(6046): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.huawei.cases.TestAllCase" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/uiautomator.jar", zip file "/data/local/tmp/TestHiDP.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

我在pc端输入“adb shell uiautomator runtest TestHiDP.jar -c com.huawei.cases.TestAllCase”是可以正常启动的。
手机端的APK有android:sharedUserId="android.uid.system",使用的是系统签名。在android 4.0的高通平台手机上可以运行,在MTK某些平台的手机上运行不了。在android 5.0上就都运行不了了。请大神帮忙看看
是不是权限,还是什么问题?

  • 写回答

5条回答 默认 最新

  • 不知取啥名 2015-06-12 03:23
    关注

    这个问题折腾了这么久,我这里把原因贴出来,供大家分享,有错误的地方也请大家指正。
    通过apk启动Uiautomator,在android 4.4可以,而5.0不可用,是因为我的apk使用的是systemId,在4.4上没有对用户权限进行限制。而5.0上强制开启了SELinux,这样对systemID的访问权限就限制了,因为/data/local/tmp目录的用户和属组是shell:shell,所以解决方法是,把APK改成shellID进行访问,就好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月6日
  • 已采纳回答 7月5日

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题