IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 10 根文件系统和编译系统(十二):Android.mk编译java动态库 -> 正文阅读

[移动开发]Android 10 根文件系统和编译系统(十二):Android.mk编译java动态库

??

?配套系列教学视频链接:

Android 10.0 AOSP源码编译:

????????AOSP源码开发环境搭建教学视频-百问100ask? ?

? ? ? ?Android系统 10.0 AOSP源码编译--CSDN程序员研修院

?Android 10.0 根文件系统和编译系统:

????????Android根文件系统和编译系统教学视频-百问100ask

? ? ? ? Android 10.0 根文件系统和编译系统-CSDN程序员研修院


说明

系统:AOSP Android10.0

设备:Android模拟器

前言

本文章重点讲解Android.mk如何控制java动态库,以及链接该java动态库,该例子会编译两个jar, 一个是计算三角型的类库, 一个是主程序,链接该三角形类库


?一, java动态库程序代码

在Anroid层目录新建mytest/java_lib/lib目录, 并创建文件名:

mytest/java_lib/lib/Triangle.java

package com.qh.mytriangle;

public class Triangle
{
	private int a;
	private int b;
	private int c;

		
	public Triangle(int a, int b, int c)
	{
		this.a = a;
		this.b = b;
		this.c = c;
	}

		
	public Triangle()
	{
		this(9, 12, 15);
	}

	public int zhouChangFunc()
	{
		return (a+b+c);
	}

	public double areaFunc()
	{
		double p = zhouChangFunc()/2.0;

		return Math.sqrt(p*(p-a)*(p-b)*(p-c));
	}

}

二, java动态库Android.mk编写

Android源码参考模板:??frameworks/base/cmds/svc/ 或者external/caliper/Android.mk

mytest/java_lib/lib/Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_MODULE := libmytriangle

include $(BUILD_JAVA_LIBRARY)

三, 编译java动态库-jar

source build/env_setup.sh

lunch??aosp_x86_64-eng

mmm??mytest/java_lib/lib

生成的目标文件有如下:

中间文件:?out/target/product/ctyun_ty1/obj/JAVA_LIBRARIES/libmytriangle_intermediates/

目标文件:?out/target/product/ctyun_ty1/system/framework/libmytriangle.jar

四,主程序使用链接库代码

新建文件mytest/java_lib/main/TriangleDemo.java

package com.qh.main;

import com.qh.mytriangle.Triangle;

public class  TriangleDemo
{
	public static void main(String[] args) 
	{
		Triangle t1;
		t1 = new Triangle(3, 4, 5);
		System.out.println("t1 area : "+t1.areaFunc());
		System.out.println("t1 round :"+t1.zhouChangFunc());

	}
}

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

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_JAVA_LIBRARIES := libmytriangle

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

主程序编译:

source build/env_setup.sh

lunch??aosp_x86_64-eng

mmm??mytest/java_lib/main

生成的目标文件有如下:

中间文件:

?out/target/product/ctyun_ty1/obj/JAVA_LIBRARIES/TriangleDemo_intermediates/

目标文件:?out/target/product/ctyun_ty1/system/framework/TriangleDemo.jar

五,运行

启动emulator时需要加参数: -writable-system, 如:

emulator -no-snapshot -verbose -show-kernel -writable-system -cores 4

这样才能使用adb remount, 将system或者vendor重新挂载成可读写分区 , 执行如下命令实现运行:

cd? out/target/product/产品名/

adb? remount?

adb push ?libmytriangle.jar??/data/local/tmp

adb push ?TriangleDemo.jar /data/local/tmp

#进入/data/local/tmp目录

adb shell

cd /data/local/tmp

#设置将要执行的jar包的classpass,不设置将无法执行:

/data/local/tmp #

export ?CLASSPATH=/data/local/tmp/TriangleDemo.jar:/data/local/tmp/libmytriangle.jar

/data/local/tmp # ls

TriangleDemo.jar ?libmytriangle.jar

ctyun_ty1:/data/local/tmp # app_process /data/local/tmp com.qh.main.TriangleDemo

t1 area : 6.0

t1 round :12

?

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:20:40  更:2021-10-06 12:21:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:46:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码