您当前的位置: 首页 >  Java
  • 2浏览

    0关注

    417博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

江南才尽,年少无知! 发布时间:2019-04-09 10:38:51 ,浏览量:2

这是我们讲解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系统对应的源码,后续过程会为大家讲解。

关注
打赏
1592542134
查看更多评论
立即登录/注册

微信扫码登录

0.0368s