原文: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

  1. 将 AAR 文件后缀名改为 ZIP 并解压
  2. 在解压得到的目录里创建一个 libs 文件夹,然后将 classes.jar 文件和 jni 文件夹下的所有文件移到 libs 文件夹下
  3. proguard.txt 文件的内容拷贝到你的项目的 proguard-project.txt 文件中
  4. 在解压得到的目录里创建 project.properties 文件,内容如下:
    target=android-22
    android.library=true

    target 的值随 AAR 里 Android Manifest.xml 文件的 targetSdkVersion 属性值而定

  5. 删除 aaptjni 文件夹以及 R.txtproguard.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的更多相关文章

  1. Android(java)学习笔记91:Eclipse中代码提示去掉@override,不然就报错!

    1. Eclipse中提示去掉@Override 把项目下载下来后有@Override的注释的方法会报错,如果把@Override去掉就不报错了.经过查阅后发现:@override注释在jdk1.5环 ...

  2. Android(java)学习笔记148:Eclipse中代码提示去掉@override,不然就报错!

    把项目下载下来后有@Override的注释的方法会报错,如果把@Override去掉就不报错了.经过查阅后发现:@override注释在jdk1.5环境下只能用于对继承的父类的方法的重写,但不能用于对 ...

  3. 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 ...

  4. 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 ...

  5. 如何在Android上编写高效的Java代码

    转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...

  6. 将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)

    网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料: ...

  7. activiti 用户手册中 10分钟 小例子 简单代码搭建 及 其中的 各种坑

    看mossle的 5.16 用户手册中的  快速起步:10分钟教程 想自己跑一下,虽然官方文档已经写的非常详细了,但是实际操作中还是遇到各种坑,这里记录下来. 首先官网下载最新的 5版本 full G ...

  8. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  9. Android Studio 单刷《第一行代码》系列 04 —— Activity 相关

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

随机推荐

  1. [SMB share]Create SMB share under powershell / poweshell下创建本机的SMB共享

    New-SmbShare -Name share-name -Path C:\share -FolderEnumerationMode AccessBased -CachingMode Documen ...

  2. 【洛谷P1963】变换序列

    题目大意:对于一个顺序序列,求一个合法置换,可以满足一些约束,若存在多个合法置换,则输出字典序最小的一个置换. 题解:对于序列的置换是否有解的问题,可以和二分图的完美匹配相关联.由于是字典序最小,显然 ...

  3. 3194. 【HNOI模拟题】化学(无标号无根树计数)

    Problem 求\(n\)个点的每个点度数不超过\(4\)的无标号无根树个数. Data constraint \(1\le n\le 500\) Solution 尝试着把问题一般化.我们来考虑一 ...

  4. <03>labview在winCE6.0系统下的程序移植与界面开发

    任务布置:labview与winCE开发<3> 要求一:学会TouchPane的环境配置,建立调试通道:要求二:掌握触控屏幕界面优化: 正文: 今天介绍labview虚拟仪器软件中 Tou ...

  5. markdown 转义字符

    \\ 反斜杠 \` 反引号 \* 星号 \_ 下划线 \{\} 大括号 \[\] 中括号 \(\) 小括号 \# 井号 \+ 加号 \- 减号 \. 英文句号 \! 感叹号

  6. MapReduce-CombineTextInputFormat 切片机制

    MapReduce 框架默认的 TextInputFormat 切片机制是对任务按文件规划切片,如果有大量小文件,就会产生大量的 MapTask,处理小文件效率非常低. CombineTextInpu ...

  7. nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket【转】

    原文地址:https://www.cnxct.com/default-configuration-and-performance-of-nginx-phpfpm-and-tcp-socket-or-u ...

  8. DataTable行列转置

    DataTable dtNew = new DataTable(); dtNew.Columns.Add("ColumnName", typeof(string)); ; i &l ...

  9. Java 集合系列03之 ArrayList详细介绍

    ArrayList做为List接口中最常用的实现类,必须掌握. 一.ArrayList简介 与Java中的数组相比ArrayList的容量可以动态增加.它继承与AbstractList,实现了List ...

  10. fhq treap

    学了一下,好像明白了(背下来了) 不想写main函数了 PS:这个比treap好写(私以为) #include<bits/stdc++.h> using namespace std; in ...