当前位置: 首页 > article >正文

【Android】导入三方jar包/系统的framework.jar

1.Android.mk导包

1).jar包位置

与res和src同一级的libs中(没有就新建)
在这里插入图片描述

2).Android.mk文件

LOCAL_STATIC_ANDROID_LIBRARIES:android静态库,经常用于一些support的导包
在这里插入图片描述

LOCAL_JAVA_LIBRARIES:依赖的java库,一般为系统的jar包
在这里插入图片描述

LOCAL_STATIC_JAVA_LIBRARIES:指定依赖的静态库,三方jar包放在该处,后面为依赖的静态库别名,可以随便取名,但要和后面LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES对应
在这里插入图片描述

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:表示依赖的静态库具体路径,zxing就是上面定义的别名
在这里插入图片描述

注:
代码混淆也需要修改
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
导包后如果不做处理,编译时会出现报错,根据具体的报错信息在proguard.flags文件中加规则

2.AS导包

1).正常导入

把jar包放到项目的libs文件下,右键选择添加为依赖库
在这里插入图片描述

2).正常导入但需要提升三方jar包优先级

有时候使用的jar包与sdk中同名,但需要优先使用三方jar包(此处更重要的是导入了系统的framework,优先使用framework.jar而找不到时的处理)
build.gradle(:app)

导入的jar包修改

compileOnly files('libs/framework.jar')

compileOnly 表示 jar 包只参与编译,不会打包进去

修改项目的build.gradle

有两种方式
1.相对路径

allprojects {
    gradle.projectsEvaluated {
        if (!plugins.hasPlugin("android-library") && !plugins.hasPlugin("android")) {
            return
        }
        //configure maven dependencies
        configurations.each { conf ->
            if (conf.name == 'compileOnly') {
                dependencies.add("compileOnly", files('app/libs/framework.jar'))
            }
        }
        //configure compile dependencies
        tasks.withType(JavaCompile) {
            Set<File> fileSet = options.bootstrapClasspath.getFiles()
            List<File> newFileList = new ArrayList<>();
            newFileList.add(files('app/libs/framework.jar'))
            newFileList.addAll(fileSet)
            options.bootstrapClasspath = files(newFileList.toArray())
        }
    }
}

2.绝对路径

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:E:\\AndroidProject\\Wifi\\app\\libs\\framework.jar')
        }
    }
}

此时,可以正常引用,有时候项目会出现提醒,但不影响正常运行、编译以及打包
在这里插入图片描述


http://www.kler.cn/a/131855.html

相关文章:

  • JavaScript对象
  • 每日OJ题_剑指offer数组篇
  • vue监听对象属性值变化
  • 某头部通信企业:SDLC+模糊测试,保障数实融合安全发展
  • Scala---样例类+隐式转换
  • 云计算(一):弹性计算概述
  • Apriori算法
  • 报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home
  • mongodb 6/7的 windows安装问题
  • 电子学会C/C++编程等级考试2021年09月(一级)真题解析
  • 我所理解的 UI Toolkit 启蒙阶段(一)
  • 修改docker默认数据目录
  • LrC ACR :优化的 AI 天空蒙版
  • 实现MQTT协议的服务器端和客户端的双向交互
  • vue 学习 -- day36(分析工程结构)
  • 【鸿蒙应用ArkTS开发系列】- 云开发入门简介
  • C/C++疫情集中隔离 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 《少儿编程启蒙指南》
  • TCP与UDP协议
  • PDF控件Spire.PDF for .NET【转换】演示:将PDF 转换为 HTML