Android.mk编译java动态库

一, java动态库程序代码
在Anroid层根目录新建study/java_lib/lib目录, 并创建文件名:
com/wq/mytestjar/Test.java

package com.wq.mytestjar;

public class Test
{
	private int a;
	private int b;
	private int c;	
	public Test(int a, int b, int c)
	{
		this.a = a;
		this.b = b;
		this.c = c;
	}	
	public Test()
	{
		this(9, 12, 15);
	}
	public int sum()
	{
		return (a+b+c);
	}
}

二, java动态库Android.mk编写

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_DEX_PREOPT = false
LOCAL_MODULE := libmytest
include $(BUILD_JAVA_LIBRARY)

三, 编译java动态库-jar
进入到该目录:study/java_lib/lib
然后执行mm命令编译
生成的目标文件有如下:

中间文件:out\target\product\sl8541e_cus_go\obj\JAVA_LIBRARIES\libmytest_intermediates\javalib.jar
目标文件:out\target\product\sl8541e_cus_go\system\framework\libmytest.jar

四,主程序使用链接库代码
新建文件study/java_lib/main/TestDemo.java

package com.wq.main;

import com.wq.mytestjar.Test;

public class TestDemo
{
	public static void main(String[] args) 
	{
		Test test;
		test = new Test(3, 4, 5);
		System.out.println("test sum : "+test.sum());
	}
}

study/java_lib/main/Android.mk编写如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_JAVA_LIBRARIES := libmytest
LOCAL_DEX_PREOPT = false
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := TestDemo
include $(BUILD_JAVA_LIBRARY)

生成的目标文件有如下:

中间文件:out\target\product\sl8541e_cus_go\obj\JAVA_LIBRARIES\TestDemo_intermediates\javalib.jar
目标文件:out\target\product\sl8541e_cus_go\system\framework\TestDemo.jar

五、在java_lib目录下面添加Android.mk文件

include $(call all-subdir-makefiles)

备注:该行脚本作用就是把把主程序main和库文件一起编译
编译出来的文件
在这里插入图片描述
六,运行
1、将编译好的jar动态库推进到设备/data/local/tmp目录下面去

adb root
adb remount 
adb push  libmytest.jar  /data/local/tmp
adb push  TestDemo.jar /data/local/tmp

2、进入/data/local/tmp目录

adb shell
cd /data/local/tmp

3、进入到设备中,设置将要执行的jar包的classpass,不设置将无法执行:

export  CLASSPATH=/data/local/tmp/TestDemo.jar:/data/local/tmp/libmytest.jar

4、运行该jar包

app_process /data/local/tmp com.wq.main.TestDemo

运行日志如下

sl8541e_cus_go:/data/local/tmp # ls
TestDemo.jar device-explorer libmytest.jar
sl8541e_cus_go:/data/local/tmp # app_process /data/local/tmp com.wq.main.TestDemo
test sum : 12
sl8541e_cus_go:/data/local/tmp # ls -al

在这里插入图片描述
总结:从日志中可以分析看出使用app_process 来运行TestDemo程序,然后会把该程序生成odex和vdex文件
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值