05.Binder系统:第8课第1节_Binder系统_JAVA实现_Android里java程序的编译启动

这是我们讲解binder系统的最后一个课时,会讲解binder系统java的实现,在讲解之前,我们先讲解一个基础知识。怎么在android系统中运行我们的java程序,因为后面我们会编写一些没有GUI的java程序,我们看看怎么运行他。
下面是一简单的java程序:

public class Hello {
	public static void main(String args[]) {
		System.out.println("Hello, world!");
	}
}

在ubuntu中执行
javac Hello.java
然后生成一个Hello.class
然后执行
java Hello
这个程序就可以运行了。

在android系统中,他接收的是dex格式的文件,所以Hello.java编译成Hello.class之后,还要进行转换。首先运行编译命令(这样我们才能使用dx命令):
source build/envsetup.sh
lunch qytech_azalea-userdebug

然后使用
javac -source 1.7 -target 1.7 Hello.java(网上查找的方法)
在执行
dx --dex --output=Hello.jar Hello.class
可以看到生成了Hello.jar文件。
然后通过adb下载到开发板,执行这个应用程序有两种方法:
dalvikvm64 -cp Hello.jar Hello
dalvikvm32 -cp Hello.jar Hello
或者
CLASSPATH=./Hello.jar app_process ./ Hello
我们都能看到打印信息。

我们也可以借用android系统,然后让系统帮助我们编译。
参考frameworks/base/cmds/am下的Android.mk编写Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := pack
include $(BUILD_JAVA_LIBRARY)

然后和Hello.java放到用一个文件夹,把该文件夹拷贝到frameworks/testing下执行mmm命令,等待编译完成可以看到:
out/target/product/qytech_azalea/system/framework/pack.jar
可以把该文件,下载开发板上运行。

其上dalvikvm与app_process运行程序的差别在于,app_process会创建两个binder线程。app_process其在android系统对应的源码,后续过程会为大家讲解。

猜你喜欢

转载自blog.csdn.net/weixin_43013761/article/details/89137493