Android-JAR包的引用

发布时间 2024-01-05 14:52:55作者: xiaowang_lj

一、JAR的定义

    JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,以ZIP格式构建,以.jar为文件扩展名,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。

二、JAR的分类

    JAR文件,可分为静态JAR包动态JAR包,其中,

  • 静态JAR包:参与编译,并打包进apk中,占用APK空间;
  • 动态JAR包:参与编译,不打包进apk中,运行时加载;

三、JAR在Android中的使用

  1. 在Android-Studio环境下
    项目的依赖库,需要修改工程下的build.gradle文件:
    • 静态JAR
      一般用于引用第三方的依赖库、模块,如:
    compile files('libs/commonApi.jar')
    
    • 动态JAR
      常见的应用场景就是引用系统框架库,如:
    compileOnly files('libs/framework.jar') 
    
  2. 在Android源码环境下
    项目的依赖库,需要修改对应模块下的Android.mk 或 Android.bp文件:
    • 静态JAR
    LOCAL_STATIC_JAVA_LIBRARIES := commonApi
    
    • 动态JAR
    LOCAL_JAVA_LIBRARIES := commonApi
    

四、动态JAR在Android源码中的实现

  1. 添加一个JAR模块
  2. 将对应JAR包引入Android工程,参与工程编译
  3. 将JAR添加至PRODUCT_BOOT_JARS(build/target/product/core_minimal.mk)
PRODUCT_BOOT_JARS := \
    ...
    framework \
    ...
    commonApi
  1. 添加至白名单(build/core/tasks/check_boot_jars/package_whitelist.txt)
###################################################
# commonApi.jar
com\.zhiqin\.commonApi\..*

  ps:在Android11未添加该值,功能正常,该条件不确定是否必要

  1. 烧写系统system.img,通过adb shell指令验证查看该jar是否导入BOOTCLASSPATH,以验证是否生效
C:\Users\linzhiqin>adb shell $BOOTCLASSPATH
/system/bin/sh: /system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okht
Android-JAR包的引用 - 林奋斗同学 - 博客园 (cnblogs.com)