Android Studio 引用系统 jar 包的正确姿势
博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
Android Studio 如何引用 jar 包,相信大家都会操作的,现在问题来了,对于系统里的 jar,比如 framework.jar该如何配置呢?
这里来个简单的需求吧,我们自己编译系统,并且有串口驱动,该驱动有提供 so 和 jar。这些文件配置到系统里面,当jar更新,api 不变的话,只要更新系统就可以,而应用程序可以不变而采用系统最新的 jar 包。
也就是说,编译时引用jar包,而不把该 jar 打包进 apk,而apk运行时采用系统里面的 jar 即可。
这个需求在 eclipse 里面很好配置,只要设置 jar 为系统 jar 就可以,那么 AS 该如何配置呢?
AS 采用 gradle 编译,那么配置 gradle 就可以的,google 后来到了这里:
Android Studio导入framework.jar等系统jar包方式
也就是说配置 jar 包时采用 provided
scope,比如:
provided files('libs/BaiduLBS_Android.jar')
这里采用 provided
,意思是说编译时引用 BaiduLBS_Android.jar
,而不把该 jar 打包进 apk。
而我们常用的是 compile
,意思是编译时引用 jar 包,并打包进 apk。
配置好后,sync 出现错误:
Error:(26, 1) Failed to notify build listener.
> Could not get unknown property 'options' for root project '***' of type org.gradle.api.Project.
> Could not get unknown property 'options' for project ':app' of type org.gradle.api.Project.
再次 google,无果,没人遇到过,,不知道当时作者怎么解决的,还没给我回复,后来删除 root gradle 配置部分,也就是仅仅修改 jar 包的引用方式为 provided
,编译通过,运行后,出现异常:
java.lang.NoClassDefFoundError: com.xx.xx
说的很明白了,Class 找不到,因为没有把 jar 打包进 apk ,肯定找不到了,那么还需要配置别的地方,看来还得配置 root gradle ,但是上面的错误搜索不到,那么该如何进行下去,要换 eclipse 开发?显然这不能忍。。。
非淡泊无以明志,非宁静无以致远
没错,静下来,静下来,从最简单的开始。
看了下所长的 eclipse 版本项目,这仅仅是所长测试驱动调试使用的,移植到 AS 后,发现编译都不过,因为项目里没有 jar 包,那这个应用是如何跑起来的呢,然后在项目清单文件里找到了答案。
AndroidManifest.xml
文件里有这样的配置:
<applicationandroid:name=".app.BaseApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><uses-library android:name="com.**.**" />...</application>
大家都看到了,就是 <uses-library android:name="com.**.**" />
这一句,后面就是 jar 包的包名。
这样编译,运行都正常了,Bingo!
最后总结下,Android Studio 引用系统 jar 包需要配置两个内容:
provided
方式应用 jar 包,//编译时引用 jar 而不把 jar 打包进 apk- 清单文件里配置
<uses-library android:name="com.**.**" />
//告诉应用引用系统 jar 的包名
最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!
神奇的安卓开发网站:http://androidcat.com/
安卓开源库收集整理:https://github.com/XXApple/AndroidLibs
分享是一种美德,更是一种生活方式!!
也许你会说我是一个梦想者,但我不是唯一的一个。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!
Android Studio 引用系统 jar 包的正确姿势相关推荐
- Android Studio 怎样打JAR包
Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...
- Android Studio 如何打JAR包
Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在 ...
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android Studio如何添加jar包
在开发中遇到ContextCompat类中找不到CheckSelfPermission()方法的问题,百度了很久,虽然知道是 v4 jar 包版本低的原因,但是一直没有较好的解决办法方法,现在总结如下 ...
- android studio gradle 打jar 包 (混淆+第三方库包)
将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: 1 task buildJar(depe ...
- Android Studio使用外部jar包
项目中使用了 org.apache.commons.lang包 没有找到如何通过gradle自动编译此包,如有知道的同仁,请不吝赐教,谢谢. 这里是通过外部添加jar包的方式实现的. 首先 commo ...
- Android Studio中解决jar包重复依赖导致的代码编译错误
在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错 Program type already present: okhttp3.internal.ws.Re ...
- Android studio混淆第三方jar包时报错
今天在做项目的混淆打包的时候.报错: Warning:Exception while processing task java.io.IOException: The same input jar [ ...
- Android Studio 在项目中引用第三方jar包
在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...
最新文章
- Spring Boot - 构建数据访问层
- boost::adaptors::ref_unwrapped相关的测试程序)
- RabbitMQ学习之消息可靠性及特性
- 人工智能+大数据 首个自动驾驶平台诞生
- 缺少linux内核,Linux内核缺页
- 深度好文:2018 年 NLP 应用和商业化调查报告
- 干货分享|安全测试起航之旅 1
- 计算机网络技术期中,计算机网络技术基础期中试卷
- Gartner 2020年十大战略科技发展趋势:边缘赋能、区块链、超自动化、人工智能安全等...
- 计算机课程设计心得体会及总结,课程设计心得体会
- PHP-Smarty
- 【javascript】字符串逆序输出
- 计算机一级最强大脑,计算机入侵人类 《最强大脑》选手完败?
- 【Protues仿真】PNP三极管驱动蜂鸣器和实际电路相同却不响问题探讨
- 注解(Annotation)那点事
- 中国计算机博士生陈慧祥,中国计算机博士生在美自杀 陈慧祥博士最新消息导师是谁?...
- iPad协议接口-稳定版
- Wireshark的使用(一)【原创 羊羊洒洒】
- 【逗老师带你学IT】Windows Server NPS服务构建基于AD域控的radius认证
- 为什么手机里的小爱音响app里搜不到家里的小爱音箱_小米随身版小爱蓝牙音箱【开箱体验】,49的小爱音箱,值了...