日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android.mk编译java动态库

發布時間:2023/12/8 Android 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件

總結

以上是生活随笔為你收集整理的Android.mk编译java动态库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。