【转】【Android】1分钟不用改任何代码在Eclipse中使用AAR
原文:https://www.jianshu.com/p/ccf306e08d5b?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
AAR 是 Google 专门为 Android Studio 推出的一种库文件格式,用于便捷的分享和使用
Android Library 项目
而被 Google 放弃的 Eclipse ADT 没办法像使用 jar 那样使用 AAR,但是我们可以使用 AAR 里的文件快速创建一个 Eclipse Library 项目来使用
AAR -> Eclipse Library
- 将 AAR 文件后缀名改为 ZIP 并解压
- 在解压得到的目录里创建一个
libs文件夹,然后将classes.jar文件和jni文件夹下的所有文件移到libs文件夹下 - 将
proguard.txt文件的内容拷贝到你的项目的proguard-project.txt文件中 - 在解压得到的目录里创建
project.properties文件,内容如下:target=android-22
android.library=true
target的值随 AAR 里 Android Manifest.xml 文件的targetSdkVersion属性值而定 - 删除
aapt和jni文件夹以及R.txt和proguard.txt文件
至此一个 Eclipse Library 项目已经构建完成了,接下来只需打开 Eclipse 导入项目并在你的项目中配置引用这个项目即可
FAQ:
- 运行时如果有 library 中的 Activity 或其他四大组件找不到(ActivityNotFoundException)、asset 资源找不到,jar或so找不到的情况就请参考 【Android】Eclipse引用 library 时的常见异常
- Activity 报
java.lang.NoClassDefFoundError: *.Activity异常,通常是因为这个 AAR 里的 Activity 继承或实现了其它 AAR 中的类或接口,但是你没有导入 AAR 需要的依赖,导致运行时 AAR 里的 Activity 无法实例化,解决办法就是导入全部需要的依赖,具体需要什么依赖你就自己找到AAR的pom文件查看或者反编译相应出错的类查看
Android 官方提供的 ADT 插件在引用 library 项目时看似很美好,但有很多坑
1.不会自动合并 library 中的 asset 资源
ADT插件并不会自动将 library 里的 asset 资源合并到你的项目中,因此你需要手动拷贝
2.不会自动合并 library 中的 AndroidManifest 文件
如果你引用的 library 中包含有四大组件,在不做任何额外配置的情况下你永远也启动不了 library 中包含的四大组件(例如启动activit时抛ActivityNotFoundException),因为需要你在你的项目的project.properties文件中配置一下ADT才会合并 library 中的 AndroidManifest文件,如下:
manifestmerger.enabled=true
此属性需要 ADT 17 以上版本
3.不会自动导入 library 中 libs 目录下的 jar 包 或 so 文件
解决这个问题只需升级 ADT 到 17 以上版本即可
虽说现在大部分都是用 Android Studio 开发 Android 了,但还是有部分人使用 Eclipse
的,比如大部分的游戏开发人员在集成一些第三方 SDK 的时候主要还是用的 Eclipse,所以这些问题还是有记录价值的
链接:https://www.jianshu.com/p/ccf306e08d5b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【转】【Android】1分钟不用改任何代码在Eclipse中使用AAR的更多相关文章
- Android(java)学习笔记91:Eclipse中代码提示去掉@override,不然就报错!
1. Eclipse中提示去掉@Override 把项目下载下来后有@Override的注释的方法会报错,如果把@Override去掉就不报错了.经过查阅后发现:@override注释在jdk1.5环 ...
- Android(java)学习笔记148:Eclipse中代码提示去掉@override,不然就报错!
把项目下载下来后有@Override的注释的方法会报错,如果把@Override去掉就不报错了.经过查阅后发现:@override注释在jdk1.5环境下只能用于对继承的父类的方法的重写,但不能用于对 ...
- Android(java)学习笔记190:Eclipse中的控制台不停报错Can't bind to local 8700 for debugger
[DDMS] Can't bind to local 8600 for debugger 改成 Under Window -> Preferences -> Android -> D ...
- Android(java)学习笔记133:Eclipse中的控制台不停报错Can't bind to local 8700 for debugger
[DDMS] Can't bind to local 8600 for debugger 改成 Under Window -> Preferences -> Android -> D ...
- 如何在Android上编写高效的Java代码
转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...
- 将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)
网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料: ...
- activiti 用户手册中 10分钟 小例子 简单代码搭建 及 其中的 各种坑
看mossle的 5.16 用户手册中的 快速起步:10分钟教程 想自己跑一下,虽然官方文档已经写的非常详细了,但是实际操作中还是遇到各种坑,这里记录下来. 首先官网下载最新的 5版本 full G ...
- Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
随机推荐
- jmeter笔记(5)--参数化--CSV Data Set Config
为了保证脚本的可移植性,我们需要把数据提取出来作为变量,变量可以分为两类: 公用变量:IP.端口.附件路径.CSV文件路径等: 测试变量:用户名.密码.用户ID.商品ID等 使用CSV Data Se ...
- 牛客小白月赛13 小A买彩票 (记忆化搜索)
链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 攻防常用命令(linux)
1.修改SSH密码: #登录SSH passwd 出现current passwoed或new password 输入就密码再输入新密码确认或直接输入新密码确认即可 2.修改Mysql密码: 1.在m ...
- CentOS7_防火墙
1.查看防火墙状态 firewall-cmd --state 2.启动防火墙 systemctl start firewalld.service 3.关闭防火墙 systemctl stop fire ...
- Java基础知识拾遗(三)
集合框架 SortedSet接口,声明了以升序进行排序的行为. Queue接口,声明了队列行为,队列通常是先进先出的列表 Deque接口,扩展了Queue接口,声明了双端队列的行为.双端队列可以像标准 ...
- epoll的本质
目录 一.从网卡接收数据说起 二.如何知道接收了数据? 三.进程阻塞为什么不占用cpu资源? 四.内核接收网络数据全过程 五.同时监视多个socket的简单方法 六.epoll的设计思路 七.epol ...
- [JDK8] Stream
1 collect(toList()) collect(toList()) 方法由Stream 里的值生成一个列表,是一个及早求值操作. 2 map 如果有一个函数可以将一种类型的值转换成另外一种类型 ...
- Java原子类中CAS的底层实现
Java原子类中CAS的底层实现 从Java到c++到汇编, 深入讲解cas的底层原理. 介绍原理前, 先来一个Demo 以AtomicBoolean类为例.先来一个调用cas的demo. 主线程在f ...
- 深悉正则(pcre)最大回溯/递归限制
对于如下的正则 /<script>.*?<\/script>/is 当要匹配的字符串长度大于100014的时候, 就不会得出正确结果: $reg = "/<sc ...
- [Android] Android Build 时报错: java.io.IOException: Could not parse XML from android/accounts/annotations.xml
Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 “item” 相关联的 “name” 属性值不能包含 ‘<’ 字符. ...