博客: 安卓之家
微博: 追风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 包需要配置两个内容:

  1. provided 方式应用 jar 包,//编译时引用 jar 而不把 jar 打包进 apk
  2. 清单文件里配置 <uses-library android:name="com.**.**" /> //告诉应用引用系统 jar 的包名

最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

Android Studio 引用系统 jar 包的正确姿势相关推荐

  1. Android Studio 怎样打JAR包

    Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...

  2. Android Studio 如何打JAR包

    Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用.  在AS中可以通过修改gradle才处理.  我们新建一个项目MakeJar,在 ...

  3. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  4. Android Studio如何添加jar包

    在开发中遇到ContextCompat类中找不到CheckSelfPermission()方法的问题,百度了很久,虽然知道是 v4 jar 包版本低的原因,但是一直没有较好的解决办法方法,现在总结如下 ...

  5. android studio gradle 打jar 包 (混淆+第三方库包)

    将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: 1 task buildJar(depe ...

  6. Android Studio使用外部jar包

    项目中使用了 org.apache.commons.lang包 没有找到如何通过gradle自动编译此包,如有知道的同仁,请不吝赐教,谢谢. 这里是通过外部添加jar包的方式实现的. 首先 commo ...

  7. Android Studio中解决jar包重复依赖导致的代码编译错误

    在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错 Program type already present: okhttp3.internal.ws.Re ...

  8. Android studio混淆第三方jar包时报错

    今天在做项目的混淆打包的时候.报错: Warning:Exception while processing task java.io.IOException: The same input jar [ ...

  9. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...

最新文章

  1. Spring Boot - 构建数据访问层
  2. boost::adaptors::ref_unwrapped相关的测试程序)
  3. RabbitMQ学习之消息可靠性及特性
  4. 人工智能+大数据 首个自动驾驶平台诞生
  5. 缺少linux内核,Linux内核缺页
  6. 深度好文:2018 年 NLP 应用和商业化调查报告
  7. 干货分享|安全测试起航之旅 1
  8. 计算机网络技术期中,计算机网络技术基础期中试卷
  9. Gartner 2020年十大战略科技发展趋势:边缘赋能、区块链、超自动化、人工智能安全等...
  10. 计算机课程设计心得体会及总结,课程设计心得体会
  11. PHP-Smarty
  12. 【javascript】字符串逆序输出
  13. 计算机一级最强大脑,计算机入侵人类 《最强大脑》选手完败?
  14. 【Protues仿真】PNP三极管驱动蜂鸣器和实际电路相同却不响问题探讨
  15. 注解(Annotation)那点事
  16. 中国计算机博士生陈慧祥,中国计算机博士生在美自杀 陈慧祥博士最新消息导师是谁?...
  17. iPad协议接口-稳定版
  18. Wireshark的使用(一)【原创 羊羊洒洒】
  19. 【逗老师带你学IT】Windows Server NPS服务构建基于AD域控的radius认证
  20. 为什么手机里的小爱音响app里搜不到家里的小爱音箱_小米随身版小爱蓝牙音箱【开箱体验】,49的小爱音箱,值了...

热门文章

  1. ubuntu20.04安装企业微信
  2. 整理了几个经常访问的Qt知名社区
  3. 信息系统项目管理师案例分析万金油
  4. 【环境配置】配置jdk
  5. 【学习笔记】到底是谁先开枪?——网络游戏同步机制初探
  6. STM32智能小车------PWM驱动直流电机
  7. wordpress社会化登陆插件Open Social设置教程
  8. 输入一行字符,分别统计出其数字、大写字母、小写字母和其他字符的个数。
  9. 神马笔记 版本2.2.2-内容共享
  10. 【C语言】*p++与(*p)++的区别