我在APK中使用以下命令来调用基于UiAutomator的测试脚本:
proc = java.lang.Runtime.getRuntime().exec("uiautomator runtest Library.jar -c com.uia.example.my.Library");
直到LOS工作正常。 但在MOS中,我收到以下错误:
无法取消关联 /data/local/tmp/dalvik-cache/arm64/sdcard@data@Library.jar@classes.dex: 许可被拒绝
请为此问题提供解决方案。
注意:我需要在发布二进制文件中运行脚本。因此,根本不可能。
答案 0 :(得分:1)
使用 Android测试支持库,并按照Testing UI for Multiple Apps中的说明创建一个扩展InstrumentationTestCase
的测试用例。
然后使用
运行测试$ ./gradlew connectedCheck
答案 1 :(得分:0)
问题是由于您放置Library.jar文件的/ data / local / tmp /中没有写权限。需要写入权限才能从Jar中提取dex。
可能是OEM可以禁用root权限并删除对/ data / local / tmp的写入权限,这可能是您在生产/发布版本中出现问题的原因..
如果您使用uiautomator命令,例如:uiautomator runtest Library.jar .... uiautomator默认会在/ data / local / tmp中搜索Library.jar。 您可以检查/ system / bin中存在的uiautomator shell脚本。 export run_base = / data / local / tmp ==>用于搜索dex文件的类路径。
一种解决方案是将Library.jar和修改后的uiautomator脚本放在应用程序文件夹(数据/数据//文件)中。 您必须使用应用程序数据文件夹路径修改run_base。
您可以按照以下链接中的内容捆绑uiautomator脚本和jar: http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App
希望它有所帮助......请更新您的结果。