博客: 安卓之家
微博: 追风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
文件里有这样的配置:
".app.BaseApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
library android:name="com.**.**" />
...
大家都看到了,就是
这一句,后面就是 jar 包的包名。
这样编译,运行都正常了,Bingo!
最后总结下,Android Studio 引用系统 jar 包需要配置两个内容:
provided
方式应用 jar 包,//编译时引用 jar 而不把 jar 打包进 apk
//告诉应用引用系统 jar 的包名最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!
神奇的安卓开发网站:http://androidcat.com/
安卓开源库收集整理:https://github.com/XXApple/AndroidLibs
分享是一种美德,更是一种生活方式!!
也许你会说我是一个梦想者,但我不是唯一的一个。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!