Android Library开发注意事项
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开发注意事项的更多相关文章
- android studio开发工具的android library打包文件(.aar)本地引用
by 蔡建良 2014-5-13 关键点: 利用Gradle发布本地maven库支持android library 打包文件(*.aar) 的本地引用 开发环境: windows7 64位操作系统 a ...
- Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听
原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...
- 安卓开发--android library projects cannot be launched错误
最新因为学习,问技术友要了几个源代码,导入源代码的时候无法进行真机或者虚拟机测试. 原因:android library projects cannot be launched 百度了一下,解决方法很 ...
- !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-opencv-development-3/ Android Ndk a ...
- [Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验
cp from : https://academy.realm.io/cn/posts/oredev-ty-smith-building-android-sdks-fabric/ Ty Smith T ...
- 关于创建Android Library所须要知道的一切
关于创建Android Library所须要知道的一切 Android 库(Library)在结构上与 Android 应用模块同样.应用模块所能够包括的东西.在库中都同意存在,包括代码文件.资源文件 ...
- [Cordova] Plugin里使用Android Library
[Cordova] Plugin里使用Android Library 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了 ...
- Android驱动开发前的准备(二)
搭建android开发环境 2.1 Android底层开发需要哪些工具 2.2 安装 JDK 2.3 搭建Android 应用程序开发环境 2.4安装Android NDK开发环境 2.5安装交叉编译 ...
- 【转】如何使用Android Studio把自己的Android library分发到jCenter和Maven Central
转自:http://www.devtf.cn/?p=760&utm_source=tuicool 如何使用Android Studio把自己的Android library分发到jCenter ...
随机推荐
- 【C#】#100 调用摄像头
需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll [Demo下载,Dem ...
- pyspark视频
在一个网课上买了一个pyspark视频,贼贵,本来是想把视频解压密码记下来分享出来的,可是其实用的是EVPLAYER,一机一码,一共只有3个激活码 这里我分享视频链接,百度网盘: https://pa ...
- Spring+Hibernate实现动态SessionFactory切换
场景: 1)系统有多个数据库 2)且数据库类型也不尽相同 3)现在应用根据某些条件路由到具体的数据库 4)且在spring+hibernate框架下,支持依赖注入 已有实现,spring动态数据源,但 ...
- vue项目用nodejs实现模拟数据方法
1)在项目根目录(如demo)中创建一个文件夹,如base,将项目中所有的前端文件全部放到base文件夹中,此时项目demo下只有一个文件夹base 2)通过cmd进入命令窗口,直接执行npm ins ...
- NSURLProtocol总结:NSURLProtocol 的本质是对特殊的scechme进行特殊的协议定制
NSURLProtocol 的本质是对特殊的scechme进行特殊的协议定制: 网络(应用层)请求的统一入口是nsurlconnection和nsurlsession; http.htp.mail等协 ...
- Golang reflect 反射
反射的规则如下: 从接口值到反射对象的反射 从反射对象到接口值的反射 为了修改反射对象,其值必须可设置 -------------------------------------------- ...
- 980. Unique Paths III
题目来源: https://leetcode.com/problems/unique-paths-iii/ 自我感觉难度/真实难度: 题意: 分析: 回溯法,直接DFS就可以了 自己的代码: clas ...
- oracle快速学习
- 1025 反转链表(链表,reverse)
题目: 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则 ...
- 使用canvas通过js制作一个小型英雄抓怪兽的2D小游戏
首先,这是一个HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...