在Android中大多數的程序都是通過java虛擬機運行,如果可以自己定製小程序,生成jar文件,然後通過app_process 來跑程序,實現自己需要的小功能也是不錯的,今天在此mark一個,此例子是在深入理解ANDROID卷3 中看到的,有感而作。先貼代碼
1.編寫功能代碼
代碼路徑: frameworks/base/cmds/samplewindow/其中samplewindow是新創建的,目的是爲了後面方便編譯生成.jar文件。
其目錄下的文件有:
SampleWindow.java
package com.android.test;
public class SampleWindow{
public static void main(String[] args){
System.out.println("this is my window test");
}
}
Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := samplewindow
include $(BUILD_JAVA_LIBRARY)
通過mm命令或者make命令編譯
mmm frameworks/base/cmds/samplewindow/
如果能在out目錄下下的 /system/framework/下找到samplewindow.jar說明編譯成功
2.編寫執行腳本sw.sh
base=/system
export CLASSPATH=$base/framework/samplewindow.jar
exec app_process $base/bin com.android.test.SampleWindow "$@"
其中samplewindow.jar爲第一步驟中成功生成的jar文件
com.android.test.SampleWindow 爲第一步驟中編寫的SampleWindow.java文件的完整包名
3.導入文件到手機
將前面的sw.sh文件和jar包push到手機中 路徑爲/system/framework
注意兩個文件的權限chmod 777 sw.sh ;chmod 777 samplewindow.jar
4.執行腳本看效果
adb 進入手機後./sw.sh
看效果,本demo僅僅是打印一行輸出
this is my window test
此demo極其簡單,僅僅是告訴我們可以通過app_process 來運行java程序。其實通過這種機制,我們是可以創造出很多實用的小工具的。比如可以通過jar包讀取特定目錄的文件並執行之來達到我們需要完成的功能。但請注意一點,運行jar文件的程序其權限是什麼,有多大,當前我這邊還沒有驗證,這個是需要關注的。不過我猜測可能是系統權限。
最後給出下載地址:https://download.csdn.net/download/yong_xu/12542309