AndroidStudio引用自己编译的framework.jar

本文介绍了在开发系统App时如何引用@hide的方法和变量。首先从android12源码获取framework.jar,然后将其放入app的lib目录并添加编译依赖。在build.gradle文件中配置JavaCompile的bootstrapClasspath,确保在编译时能访问到@hide的类和成员。提供了两种不同的配置方式以实现这个目标。

在做系统App开发的时候经常需要使用到一些@hide的方法和变量,这就需要引用自己编译的framework.jar

1.从android源码中找到framework.jar

我的源码是android12,framework.jar路径如下

out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/combined/framework-minus-apex.jar

framework-minus-apex.jar重命名为framework.jar

2.将framework.jar放入app的lib目录

 3.在module的build.gradle里面加入依赖

compileOnly files('libs/framework.jar')

 在根目录的build.gradle的allprojects节点中加入

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar'
    }
}

 

4.接下来的操作有两种做法,

第一种是在module的build.gradle里面和android同级的地方加入

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        Set<File> fileSet = options.bootstrapClasspath.getFiles()
        List<File> newFileList =  new ArrayList<>();
        //将framework.jarc插入到最前面
        newFileList.add(new File("libs/framework.jar"))
        //最后将原始的数据插入
        newFileList.addAll(fileSet)
        options.bootstrapClasspath = files(
                newFileList.toArray()
        )
    }
}

 

 第二种是插入到根目录build.gradle的allprojects节点中

 5.重新build工程就可以引用到@hide的方法和变量了。

Android Studio 2025 中添加 `framework.jar` 的引用,通常涉及将该 JAR 文件引入项目依赖中,以便在应用中使用其提供的类和接口。具体操作取决于 `framework.jar` 的用途以及是否需要将其打包进最终的 APK 中。 ### 添加 `framework.jar` 引用的步骤 #### 1.JAR 文件放入项目目录 通常,JAR 文件应放置在模块的 `app/libs/` 目录中。如果该目录不存在,可以手动创建。 #### 2.Gradle 中添加依赖项 在模块的 `build.gradle` 文件中添加对 `framework.jar` 的依赖。如果希望该 JAR 被打包进 APK,可以使用 `implementation files` 语法: ```groovy dependencies { implementation files('libs/framework.jar') } ``` 如果该 JAR 是可选依赖,并且希望运行时设备上已存在,则可以使用 `compileOnly`(不打包进 APK): ```groovy dependencies { compileOnly files('libs/framework.jar') } ``` #### 3. 同步项目 在 Android Studio 中点击 “Sync Now”,确保 Gradle 正确解析并应用新的依赖配置。 #### 4. 验证是否成功引用 在 Java/Kotlin 代码中尝试导入 JAR 中的类,例如: ```java import com.example.framework.SomeClass; ``` 如果没有编译错误,说明引用已成功添加。 ### 注意事项 - 如果 `framework.jar` 是系统框架的一部分(例如 Android 系统内部的类),可能需要使用 `compileOnly` 并确保设备上存在该 JAR 文件。 - 对于 AOSP(Android Open Source Project)开发,`framework.jar` 通常位于 `/system/framework/` 目录下,此时应避免将其打包进 APK,而应使用 `compileOnly` 以避免冲突[^3]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值