一, 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文件

Android.mk编译java动态库相关推荐

  1. Android.mk 编译so动态库以及如何使用so动态库

    Android 使用的 Linker 和传统 Linux 使用的 linker(ld.so,ld-linux.so.2,ld-linux.so.3)不同 模板: hardware/ril/refere ...

  2. android编译boost,使用android ndk编译boost动态库

    由于以往我写过不少使用boost库开发的项目,而最近准备移植一些代码到android上(上层界面以及jni层我不管,也没研究过,现在只完成代码的移植编译,具体如何调用,由其它人负责),所以先要解决的就 ...

  3. Android mk方式使用动态库和静态库

    centos ndk下载和编译动态库 静态库 Mac使用iTerm2 rz sz和腾讯云互传文件 将libget.a 和 libget.so 添加到ndkdir目录中,并创建Android.mk文件 ...

  4. 基于NDK编译Android平台的FFmpeg动态库

    需求 FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061, ...

  5. Android导入第三方静态库.a编译成动态库.so

    http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己 ...

  6. android studio项目改成android.mk编译APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

    android9系统android studio项目改成用android.mk编译v7包--APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.Pat ...

  7. android.bp编译生成so,Android导入第三方静态库.a编译成动态库.so

    在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的 ...

  8. vs可以调用java接口吗_关于vs2010下编译dll动态库,JNA接口在java中调用的问题

    最近在搞关于把vs2010中的project,使之能够在Java下面运行,有一个调用本地接口的问题,JNI那个涉及到复杂细节太多,就使用了最新的JNA(java native access) 网上也给 ...

  9. android.mk 编译jar包,Androidmk 使用详解

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点:一.Android.mk 简介二.Android.mk 的基本格式三.Android.mk 深入学习一四. ...

最新文章

  1. 程序员修炼之道:从小工到专家阅读笔记01
  2. 您是否应该始终偏爱xrange()而不是range()?
  3. 审车按月还是日期_新手都该知道的审车流程!
  4. Flutter ListView封装,下拉刷新、上拉加载更多
  5. 全网最通透的“闭包”认知 · 跨越语言
  6. 【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积
  7. python函数式编程思想_python函数式编程
  8. python学习——正则表达项目
  9. 4-2 数据模型的生成
  10. php mysql修复_php简单备份与还原MySql的方法 | 瑕疵学院 – 学习无瑕疵,成就有保障...
  11. MRFC-概念与功能
  12. jdbc_连接数据库
  13. corrplot包与ggcorrplot相关图(二)
  14. kaliU盘启动配置
  15. Android UI美化——颜色
  16. 体寒是不是天生的 体寒四个基本常识须知
  17. 计算波特率波特率的方法
  18. 2022社区团购回暖,创新 O2O 生鲜电商新零售解决方案
  19. mes系统故障_MES系统故障恢复探讨
  20. android webview 关闭缓存,Android WebView删除缓存

热门文章

  1. 统计学习方法——李航 笔记
  2. AI 作画领域中的“神笔马良”是怎样炼成的?
  3. 从苏宁电器到卡巴斯基第07篇:我在佳木斯的日子(下)
  4. htc 8x android,[多图]极致简约的奥秘 HTC 8X拆解
  5. Android加密之全盘加密详解
  6. 阿松嘚嘚嘚-数据库篇1-数据库市场有学问
  7. mysql数据库的简介(安装和卸载)
  8. 爱普生连续供墨系统故障排除方法
  9. 优秀课件笔记之薪酬管理
  10. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程