Android Studio:解决AOSP自编译framework.jar引用不到的问题

简介: 在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。

一、前言

在编写Android 系统APP过程中,需要使用到一些SYSTEM API或Hiden API,而这些API在AS随机的SDK里面是不具备的,需要我们自己通过AOSP源码编译一份。但在AS配置引用过程中,进程遇到Build.gradle相同的配置,在一些项目中可以引用,在另外一些项目中缺又有问题,一直不明白是什么原因。但如果我们采用绝对路径的话,引用上就没有问题。但如果使用绝对路径,就意味着,每一个代码的用户,都得自己配置一次,非常麻烦,所以,本人就想到了下面的方法。
在这里插入图片描述

二、处理过程

目标文件:Settings\build.gradle

2.1 时灵时不灵的版本

  • 使用 framework.jar 的相对路径
    gradle.projectsEvaluated {
   
   
        tasks.withType(JavaCompile) {
   
   
            options.compilerArgs.add("-Xbootclasspath/p:libs/framework.jar")
        }
    }

2.2 绝对灵、粗暴版本

  • 使用 framework.jar 的绝对路径
    gradle.projectsEvaluated {
   
   
        tasks.withType(JavaCompile) {
   
   
            options.compilerArgs.add("-Xbootclasspath/p::\\Users\\66176\\Documents\\works\\Gitee\\Note-011_aosp_android-11-r39_settings\\source_as\\Settings\\libs\\framework.jar")
        }
    }

2.3 粗暴的改良版(Finally)

  • 使用 ${project.rootDir} 获取绝对路径,避免hardcode.
    gradle.projectsEvaluated {
   
   
        tasks.withType(JavaCompile) {
   
   
            options.compilerArgs.add("-Xbootclasspath/p:${project.rootDir}/libs/framework.jar")
        }
    }
相关文章
|
2月前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
151 1
|
2月前
|
Ubuntu Linux Android开发
Android Studio支持多种操作系统
Android Studio支持多种操作系统
135 1
|
2月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
79 8
|
2月前
|
数据可视化 开发工具 Android开发
Android Studio
Android Studio
194 1
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
135 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
3月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
6月前
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
618 2
[JarEditor]可直接修改jar包的IDEA插件
|
6月前
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

热门文章

最新文章