从adb shell运行基于android java的命令行实用程序

Ysh*_*ayy 2 java shell android dalvik adb

我正在尝试基于来自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
Run Code Online (Sandbox Code Playgroud)

使用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'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

Zah*_*hiC 5

使用ADB shell,可以将dalvik-cache目录设置为具有写入权限的其他目录.

在执行模块之前尝试这样做:

  • mkdir/data/local/tmp/dalvik-cache
  • export ANDROID_DATA =/data/local/tmp