Android 通过zygote来运行java程序

在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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值