我正在尝试基于来自AOSP的java输入命令创建一个新的java命令行实用程序:(https://github.com/android/platform_frameworks_base/tree/master/cmds/input)
我使用mmm编译了jar,然后通过ADB将其推送到Android设备。 然后我使用ADB shell执行命令:
export CLASSPATH = /sdcard/input2.jar
exec app_process / com.android.commands.input.Input
使用root设备,这非常有效,但当我尝试在非root设备上运行时,我在LOGCAT上遇到了这个异常:
E/dalvikvm(31966): Dex cache directory isn't writable: /data/dalvik-cache
I/dalvikvm(31966): Unable to open or create cache for /sdcard/input2.jar (/data/dalvik-cache/sdcard@input2.jar@classes.dex)
E/appproc(31966): ERROR: could not find class 'com.android.commands.input.Input'
有什么想法吗?
由于
答案 0 :(得分:5)
使用ADB shell,您可以将dalvik-cache目录设置为具有写权限的其他目录。
在执行模块之前尝试此操作:
答案 1 :(得分:1)
您的新命令不是由Android程序包管理器管理的,这意味着VM将在首次运行命令时尝试创建/data/dalvik-cache
条目。你需要成为root用户。
一个选项是将命令安装为普通应用程序,主活动并不真正执行任何操作,只需从包管理器选择安装jar文件的任何位置执行命令行入口点类。这还允许您从设置UI管理和卸载应用程序。
(如果您只是自己运行,而不是将其广泛分发给其他人,那么this post就有了解决方案。)