首页 > 其他分享 >Android Studio 引用framework.jar方法

Android Studio 引用framework.jar方法

时间:2024-12-12 13:32:16浏览次数:5  
标签:jar app classpath iml framework Studio Android

参考文章:[Android][踩坑]Android Studio导入framework.jar的各种坑_android_Ryan ZHENG-开放原子开发者工作坊

本文只对以下环境进行说明,其他环境参考上面文章

开发环境:

平台:RK3576  Android14

JDK版本:JDK17

AS版本:Jellyfish  | 2023.3.1 Patch1

gradle版本:8.0.1

步骤:

1、找到编译后的framework.jar

Android14的路径,修改名称为framework.jar

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

2、 配置生成*.iml文件

在File >> Settings >> Build… >> Build Tools >> Gradle 中勾选generate *.iml,否则项目中将没有My_Application.app.main.iml这个文件

3、 将framework.jar放入app/libs中
4 、build.gradle(:app)中添加framwork.jar依赖
dependencies {
    compileOnly files("libs/framework.jar")
}
//修改jar加载顺序,解决引入报红问题,执行clean project 即可,不同AS版本修改位置不一样。
preBuild {
        //需要先在File >> Settings >> Build... >> Build Tools >> Gradle 中勾选generate *.iml,
        //否则项目中将没有My_Application.app.main.iml这个文件
        def imlFile = file("$rootProject.rootDir/.idea/modules/app/My_Application.app.main.iml")
        try {
            def parsedXml = (new XmlParser()).parse(imlFile)
            def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
            parsedXml.component[1].remove(jdkNode)
            def sdkString = "Android API 34 Platform"
            new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
            groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
        } catch (FileNotFoundException e) {
            e.printStackTrace()
        }
}

//修改编译时候引用不到报错问题,执行build APK 即可通过。
android {
	...
    gradle.projectsEvaluated {
        tasks.getByName("compileDebugJavaWithJavac") {
            //经过验证发现,修改classpath会导致编译task列表顺序紊乱,从而报错提示找不到R.class相关内容;
            //因此此处需要显式声明javac的task依赖resource编译完成
            dependsOn("processDebugResources")
            classpath = reorderClasspath(classpath.getFiles())
        }
        tasks.getByName("compileReleaseJavaWithJavac") {
            //同上,release与debug分别声明对应的task依赖
            dependsOn("processReleaseResources")
            classpath = reorderClasspath(classpath.getFiles())
        }
    }
}

// 新增一个函数,以便多次调用
def reorderClasspath(Set<File> classpathSet) {
    List<File> newFileList =  new ArrayList<>()
    File sdkFile = null
    for (File f : classpathSet) {
        //将android.jar放到-classpath参数末尾即可
        if ("android.jar" == f.getName()) {
            sdkFile = f
        } else {
            newFileList.add(f);
        }
    }
    if (sdkFile != null) {
        newFileList.add(sdkFile)
    }

    return files(
            newFileList.toArray()
    )
}


5、 修改结束,进行测试吧。

标签:jar,app,classpath,iml,framework,Studio,Android
From: https://blog.csdn.net/weixin_56061795/article/details/144424238

相关文章

  • 【Java开发】手动部署jar包,太low了!动态上传包热部署,真爽!
    近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中。系统完成热部署,并切换该接口的实现。定义简单的接口这里以一个简单的计算器功能为例,接口定义比较简单,直接上代码。publicinterfaceCalculator{intcal......
  • WhaleStudio Demo:如何从Aurora CDC 实时数据同步到Redshift详细演示
    视频演示:https://weixin.qq.com/sph/AQ0oGKk12今天我将向大家详细介绍如何使用WhaleStudio将数据从AuroraCDC(ChangeDataCapture)实时同步至Redshift的功能。这是一个强大的数据同步功能,它支持多种数据源,包括文件、非结构化数据以及多样化的接口。数据支持范围首先,Whale......
  • 用IDEA编译jar文件
    1、选择项目结构2、改一下输出目录,再创建清单3、这里最好不换目录,直接点确定4、点文件夹按钮选择主类把右边编译输出拖到左边,然后点确定5、编译Artifacts选构建即可输出......
  • macOS 完全卸载 Android Studio 教程
    在macOS上,直接删除AndroidStudio应用后,许多配置文件和缓存可能仍会保留在系统中。为了彻底清除AndroidStudio,以下是完整的卸载步骤。1.删除AndroidStudio应用本体打开Finder,进入/Applications目录。找到AndroidStudio.app,然后将其拖动到废纸篓。清空废纸篓......
  • .NET for Android/iOS如何调用jar、dylib和framework等包
    1.在.NETforAndroid中调用.jar文件(Java库)在.NETforAndroid中调用.jar文件,主要通过Xamarin.AndroidBindingLibrary来实现。.jar文件是Java库,通过绑定可以将Java方法映射为C#方法,以便在Xamarin.Android中调用。步骤:创建绑定库项目:创建一个JavaB......
  • 自动化测试工具Ranorex Studio(五十六)-从命令行运行调制向导
    从命令行运行调制向导您可以在命令行下执行调制向导时,使用以下参数。当基于命令行进行自动化调制时,这是必需的。Ranorex.Instrumentation.exe/<arguments>p|pagename:默认是’Select’。设置这个选项,就可以直接导航到指定的页面。对基于命令行自动化的调制来说,这也是......
  • python调用.jar文件 —— 安装openjdk,而无需配置JAVA环境
    文章目录一、什么是.jar文件?1.1、.jar文件结构1.2、.jar清单文件(MANIFEST.MF)二、python调用.jar2.1、使用Py4J库2.1.1、Py4J环境配置——OpenJDK开源免费库2.1.2、创建Java程序2.1.3、编译和运行Java程序2.1.4、编写Python客户端2.2、使用JPype......
  • Torch-TensorRT针对 NVIDIA GPU 的 PyTorch 推理代码的框架内编译In-framework compil
    Torch-TensorRT针对NVIDIAGPU的PyTorch推理代码的框架内编译Torch-TensorRT是PyTorch的推理编译器,通过NVIDIA的TensorRT深度学习优化器和运行时针对NVIDIAGPU。它通过接口支持即时(JIT)编译工作流程torch.compile,也支持提前(AOT)工作流程。Torch-TensorRT......
  • Knowledge Graph Studio:让知识图谱构建更简单、更智能
    一、前言上周和研究院的同事讨论2025年大模型产品规划时,让我产生了一些疑惑和不解,因为从大家交流的规划方向来看,更多的还是集中在Prompt提示词工程(包括提示词的管理、测试、评估、调优)这一块规划的确实挺细,另外一个重点也提到了对于大模型微调、训练以及模型推理效率的提......
  • C语言动态哆啦A梦源码分享,无需编程基础,小白轻松运行,顺便解决Visual Studio 2022里c++
    下面是运行效果图:首先是安装VisualStudio2022VisualStudio2022IDE-适用于软件开发人员的编程工具打开上面的网址,选择下载社区版 下载好后运行,进来以后,如果是初次安装需要下载安装,我的是原来就有的所以会显示更新,如果原来就有的请点击修改按钮,选择配置下载并安装......