在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