2014-02-13 52 views
2

基於命令行實用程序我試圖創建一個基於java輸入命令從AOSP一個新的Java命令行實用程序:(https://github.com/android/platform_frameworks_base/tree/master/cmds/input運行Android的Java亞行殼

我使用編譯的jar MMM並通過ADB將其推送到Android設備。 然後我用ADB shell來執行命令:完美

export CLASSPATH = /sdcard/input2.jar 
exec app_process/com.android.commands.input.Input 

使用紮根裝置,這項工作,但是當我試圖在非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/[email protected]@classes.dex) 
E/appproc(31966): ERROR: could not find class 'com.android.commands.input.Input' 

有沒有想法?

感謝

+2

可能重複[如何使用命令執行android中的dex文件?](http://stackoverflow.com/questions/10199863/how-to-execute-the-dex-file-in-android-with-command) – JesusFreke

回答

5

與亞洲開發銀行的外殼,你可以在Dalvik緩存目錄設置爲其他目錄寫入權限。執行模塊之前

試試這個:

  • 的mkdir /數據/本地的/ tmp /達爾維克緩存
  • 出口ANDROID_DATA = /數據/本地/ tmp目錄
1

你新的命令沒有被Android包管理器,這意味着虛擬機將嘗試在該命令是第一次運行時創建/data/dalvik-cache項管理。你需要成爲root才能做到這一點。

一種選擇是將命令安裝爲普通應用程序,其主要活動實際上沒有任何作用,只需從包管理器選擇安裝jar的任何位置執行命令行入口點類文件。這也可以讓你從設置UI管理和卸載應用程序。

(如果你只是自己運行它,並沒有廣泛傳播給他人,然後this post有解決方案。)