• 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 或者直接扫码

  • 相关阅读:
    深入了解Java ClassLoader、Bytecode 、ASM、cglib (I)
    如何在ant里import
    敏捷练习(1)评估我的生活方向盘
    你是一个合格的孩子吗?
    [转] C# 路径(目录)
    XML学习记录
    js学习总结不断更新(1)
    LINQ TO XML练习
    做技术,切不可沉湎于技术
    js学习总结持续更新(2)
  • 原文地址:https://www.cnblogs.com/songjianzaina/p/10373265.html
Copyright © 2020-2023  润新知