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

【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 dependenciesconfigurations.each { conf ->if (conf.name == 'compileOnly') {dependencies.add("compileOnly", files('app/libs/framework.jar'))}}//configure compile dependenciestasks.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')}}
}

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

相关文章:

  • vue-pdf在vue框架中的使用
  • spring+pom-注意多重依赖时的兼容问题[java.lang.NoSuchMethodError]
  • Android13集成paho.mqtt.android启动异常
  • 探索计算机视觉技术的应用前景
  • 如何基于OpenCV和Sklearn算法库开展机器学习算法研究
  • 便利工具分享:一个proto文件的便利使用工具
  • Filter和ThreadLocal结合存储用户id信息
  • HashMap散列表的相关知识点
  • Python Flask: 构建轻量级、灵活的Web应用
  • 一键云端,AList 整合多网盘,轻松管理文件多元共享
  • jbase打印导出实现
  • TCP/IP详解卷一第三章“链路层”概要总结(未完编辑中)
  • 【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!
  • QQ五毛项目记
  • openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库
  • 【comparator, comparable】小总结
  • 2017前端实习生面试总结
  • Angularjs之国际化
  • MobX
  • Octave 入门
  • Yeoman_Bower_Grunt
  • 阿里云应用高可用服务公测发布
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 讲清楚之javascript作用域
  • 前端_面试
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 提醒我喝水chrome插件开发指南
  • 我的zsh配置, 2019最新方案
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 在weex里面使用chart图表
  • 怎么将电脑中的声音录制成WAV格式
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 阿里云服务器如何修改远程端口?
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​io --- 处理流的核心工具​
  • ​低代码平台的核心价值与优势
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $.ajax()
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (k8s中)docker netty OOM问题记录
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (接口自动化)Python3操作MySQL数据库
  • (六)软件测试分工
  • (十)T检验-第一部分
  • (一)基于IDEA的JAVA基础12
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 版本不支持的问题
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET面试题(二)