zoukankan      html  css  js  c++  java
  • 【转】【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

    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
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    集合关系运算 交、差、并集
    字符串 数字 列表 元祖 字典 的不同分类and集合的概念
    我的python之路6(基础练习)
    我的python之路6(整理)
    编写Linux下socket协议TCP和UDP的Client Server程序
    linux添加新用户
    HTML5怎样在网页中使用摄像头功能 时间:2013-04-10 19:56 来源:18素材
    boost 同步定时器
    C++的multiple definition of *** first defined here错误
    TCP与UDP的区别,以及它们各自的定义
  • 原文地址:https://www.cnblogs.com/tc310/p/9154930.html
Copyright © 2011-2022 走看看