Android Library开发注意事项

App Module添加依赖Android Library时可以设置library的优先级,

在编译时,app按照library从低到高的优先级依次与每个library合并。

开发Android Library和相关APP时,请注意下面事项:

  • 资源合并冲突 : 编译工具会合并library和app的资源。如果某个resource ID在两个Module中都定义了,那么会使用app的资源。 如果冲突发生在多个AAR之间,那么会优先使用dependencies列表中排在前面的library的资源。 为了防止Module直接资源冲突,请给每个Module的资源使用唯一的前缀或命名空间,就像用包名唯一确认一个APP一样。

  • Android Library可以包含JAR Library 可以在Android Library中使用JAR Library,并且依赖这个Android Library的App Module也需要配置好对这个JAR Library的引用。

  • Android Library可以依赖external JAR library Android Library可以依赖external JAR library,如一个地图的external library,那么依赖这个Android Library的App Module编译时必须要依赖包含这个external library的target,如Google APIs Add-On。Android Library Module和App Module都必须要在Manifest文件中用<uses-library>申明使用这个external library。

  • App Module的minSdkVersion必须等于或大于Android Library的minSdkVersion。 Android Library是作为App Module的一部分被编译的,所以它使用的API必须要与App Module支持的平台版本相匹配。

  • 每个Android Library独自创建其R class 当编译App Module时,Android Library被编译成AAR文件然后被添加到App Module。所以每个Android Library有其独有的R class,并根据其包名命名。App Module和Android Library的R class被生成长它们各自的package下。

  • Android Library可以有独自的ProGuard配置文件 每个Android Library可以有自己的ProGuard配置文件,编译工具会把这个文件嵌入到生成的AAR文件中。当Android Library添加到App Module时,library的ProGuard文件会附加到App Module的ProGuard文件。当App Module运行ProGuard文件时,它会运行App和library的ProGuard文件,所以你不需要单独运行library的ProGuard文件。

  • 测试Android Library与测试App一样 主要的不同是Android Library和它依赖的dependencies自动被包含成Test APK的依赖项。即Test APK不仅包含其自身的代码,还包含Android Library的AAR和相关依赖。因为没有单独的”app under test”,所以androidTest任务只安装/卸载Test APK。

当合并多个Manifest文件时,Gradle按照默认的优先级顺序把library的manifest合并到APP的manifest。

AAR文件的结构

AAR文件的后缀名是.aar,且在Maven中的类型也是aar。 AAR文件本身是一个zip文件,包括下面内容:

  • /AndroidManifest.xml
  • /classes.jar
  • /res/
  • /R.txt
  • /public.txt

通常AAR文件可能包含下面的一个或多个可选文件

  • /assets/
  • /libs/name.jar
  • /jni/abiname/name.so ( abiname 是Android 支持的一种ABI)
  • /proguard.txt
  • /lint.jar

关于我

私人博客

微信公众号:infree6 或者直接扫码

Android Library开发注意事项的更多相关文章

  1. android studio开发工具的android library打包文件(.aar)本地引用

    by 蔡建良 2014-5-13 关键点: 利用Gradle发布本地maven库支持android library 打包文件(*.aar) 的本地引用 开发环境: windows7 64位操作系统 a ...

  2. Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听

    原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...

  3. 安卓开发--android library projects cannot be launched错误

    最新因为学习,问技术友要了几个源代码,导入源代码的时候无法进行真机或者虚拟机测试. 原因:android library projects cannot be launched 百度了一下,解决方法很 ...

  4. !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结

    http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-opencv-development-3/ Android Ndk a ...

  5. [Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验

    cp from : https://academy.realm.io/cn/posts/oredev-ty-smith-building-android-sdks-fabric/ Ty Smith T ...

  6. 关于创建Android Library所须要知道的一切

    关于创建Android Library所须要知道的一切 Android 库(Library)在结构上与 Android 应用模块同样.应用模块所能够包括的东西.在库中都同意存在,包括代码文件.资源文件 ...

  7. [Cordova] Plugin里使用Android Library

    [Cordova] Plugin里使用Android Library 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了 ...

  8. Android驱动开发前的准备(二)

    搭建android开发环境 2.1 Android底层开发需要哪些工具 2.2 安装 JDK 2.3 搭建Android 应用程序开发环境 2.4安装Android NDK开发环境 2.5安装交叉编译 ...

  9. 【转】如何使用Android Studio把自己的Android library分发到jCenter和Maven Central

    转自:http://www.devtf.cn/?p=760&utm_source=tuicool 如何使用Android Studio把自己的Android library分发到jCenter ...

随机推荐

  1. [MongoDB]------windos下的安装部署与基础使用

    1.安装 首先前往官网进行下载,这里贴个地址https://www.mongodb.com/download-center#community 点击大大的原谅色的DOWNLOAD(msi)按钮进行下载 ...

  2. HTML、jsp页面中radio,checkbox,select数据回显功能,默认被选中问题

    最近常常遇到各种复选框.单选框.下拉框的默认被选中的问题,开始也是绞尽脑汁的想办法,今天写一篇学习总结的博文来写一下学习总结. 单选框(radio)默认被选中: 一.jstl技术进行回显 <in ...

  3. nginx alias

    A path to the file is constructed by merely adding a URI to the value of the root directive. If a UR ...

  4. Mac pycharm专业版安装以及破解方法

    1.先在Pycharm官网,或者直接输入网址:http://www.https://www.jetbrains.com/pycharm/ 2.修改hosts文件 sudo vim /etc/hosts ...

  5. CSS3动画理解与应用

    CSS3动画理解与应用 Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开始,结束.Anima ...

  6. 20145203Java实验报告四:Android开发基础

    Java实验报告四:Android开发基础 实验要求: 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 实验过程 ( ...

  7. Zookeeper入门(一)之概述

    今天主要讲这么几个方面? 1.分布式应用: 2.什么是Zookeeper: 3.使用Zookkeeper有什么好处: ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理 ...

  8. vs未能正确加载XXX包,编译时停止工作问题

    出现这个问题的原因可能是配置更改或安装了另一个扩展,幸好之前用的不多,重新进行用户配置代价也不高,打开Visual Studio Tools:  选择VS2013 开发人员命令提示:  输入deven ...

  9. 创建ROS工程結構

    图像化显示目录工程结构:tree $ sudo apt install tree 1.创建ROS工作空间 $ mkdir -p catkin_ws/src # Create mutil-level d ...

  10. jenkins+pytest+ allure运行多个py文件测试用例

    jenkins的pytest运行多个py文件,导出allure报告方法,只需改下job的配置中的构建即可(pytest会运行指定文件下的所有test开头的py文件),如下:              ...