一:aar文件如何引用

系统Settings中引用bidehelper-1.1.12.aar 文件为例

源码地址:packages/apps/Settings/Android.mk

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES := \
  4. $(call all-logtags-files-under, src)
  5. LOCAL_MODULE := settings-logtags
  6. include $(BUILD_STATIC_JAVA_LIBRARY)
  7. # Build the Settings APK
  8. include $(CLEAR_VARS)
  9. LOCAL_PACKAGE_NAME := Settings
  10. LOCAL_CERTIFICATE := platform
  11. LOCAL_PRIVILEGED_MODULE := true
  12. LOCAL_MODULE_TAGS := optional
  13. LOCAL_USE_AAPT2 := true
  14. LOCAL_SRC_FILES := $(call all-java-files-under, src)
  15. LOCAL_STATIC_ANDROID_LIBRARIES := \
  16. android-support-v4 \
  17. android-support-v13 \
  18. android-support-v7-appcompat \
  19. android-support-v7-cardview \
  20. android-support-v7-preference \
  21. android-support-v7-recyclerview \
  22. android-support-v14-preference
  23. LOCAL_JAVA_LIBRARIES := \
  24. bouncycastle \
  25. core-oj \
  26. telephony-common \
  27. ims-common \
  28. telephony-ext
  29. LOCAL_STATIC_JAVA_LIBRARIES := \
  30. jsr305 \
  31. settings-logtags
  32. + LOCAL_STATIC_JAVA_AAR_LIBRARIES := bide_helper
  33. + LOCAL_AAPT_FLAGS := \
  34. + --auto-add-overlay \
  35. + --extra-packages com.blackberry.bidehelper
  36. LOCAL_PROGUARD_FLAG_FILES := proguard.flags
  37. ifneq ($(INCREMENTAL_BUILDS),)
  38. LOCAL_PROGUARD_ENABLED := disabled
  39. LOCAL_JACK_ENABLED := incremental
  40. LOCAL_JACK_FLAGS := --multi-dex native
  41. endif
  42. include frameworks/opt/setupwizard/library/common-gingerbread.mk
  43. include frameworks/base/packages/SettingsLib/common.mk
  44. include $(BUILD_PACKAGE)
  45. + include $(CLEAR_VARS)
  46. + LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
  47. + bide_helper:libs/bidehelper-1.1.12.aar
  48. + include $(BUILD_MULTI_PREBUILT)
  49. # Use the following include to make our test apk.
  50. ifeq (,$(ONE_SHOT_MAKEFILE))
  51. include $(call all-makefiles-under,$(LOCAL_PATH))
  52. endif

主要代码如下:

  1. #名称可以随便写
  2. LOCAL_STATIC_JAVA_AAR_LIBRARIES := bide_helper
  3. #写入aar文件中的包名
  4. LOCAL_AAPT_FLAGS := \
  5. --auto-add-overlay \
  6. --extra-packages com.blackberry.bidehelper

aar文件中的包名可以用压缩工具直接打开,查看AndroidManifest.xml文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. - <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.blackberry.bidehelper" android:versionCode="1" android:versionName="1.0.0.219">
  3. <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26" />
  4. <application android:allowBackup="false" android:label="@string/app_name" android:supportsRtl="true" />
  5. </manifest>
  1. include $(CLEAR_VARS)
  2. #构建静态java库
  3. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
  4. bide_helper:libs/bidehelper-1.1.12.aar
  5. include $(BUILD_MULTI_PREBUILT)

编译后文件生成路径:out\target\product\msm8909\obj\JAVA_LIBRARIES


喜欢源码分析系列可参考其他文章:

Android源码分析(一)-----如何快速掌握Android编译文件

Android源码分析(二)-----如何编译修改后的framework资源文件

Android源码分析(三)-----系统框架设计思想

Android源码分析(四)-----Android源码编译及刷机步骤

Android源码分析(五)-----如何从架构师的角度去设计Framework框架

Android源码分析(十一)-----Android源码中如何引用aar文件的更多相关文章

  1. NIO 源码分析(05) Channel 源码分析

    目录 一.Channel 类图 二.begin 和 close 是什么 2.1 AbstractInterruptibleChannel 中的 begin 和 close 2.2 Selector 中 ...

  2. NIO 源码分析(02-2) BIO 源码分析 Socket

    目录 一.BIO 最简使用姿势 二.connect 方法 2.1 Socket.connect 方法 2.2 AbstractPlainSocketImpl.connect 方法 2.3 DualSt ...

  3. NIO 源码分析(02-1) BIO 源码分析

    目录 一.BIO 最简使用姿势 二.ServerSocket 源码分析 2.1 相关类图 2.2 主要属性 2.3 构造函数 2.4 bind 方法 2.5 accept 方法 2.6 总结 NIO ...

  4. [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast

    [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...

  5. drf的基本使用、APIView源码分析和CBV源码拓展

    cbv源码拓展 扩展,如果我在Book视图类中重写dispatch方法 -可以实现,在get,post方法执行之前或者之后执行代码,完成类似装饰器的效果 def dispatch(self, requ ...

  6. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  7. k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...

  8. Weex框架源码分析(Android)(一)

    一.weexSDK初始化流程 WXSDKEngine.initialize(Application application,InitConfig config); //WXSDKEngine的init ...

  9. android2.3 View视图框架源码分析之一:android是如何创建一个view的?

    View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...

随机推荐

  1. python基础语法20 面向对象5 exec内置函数的补充,元类,属性查找顺序

    exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) ...

  2. 怎么在虚拟机下的Linux系统安装数据库

    1.查看 linux下是否有老版本的mysql(有删除) 查找old mysql:rpm -qa | grep mysql 卸载:卸载命令:rpm –ev {包名}——:rpm -ev mysql-c ...

  3. 本地jar包在maven工程中pom引用

    背景   在使用Maven的过程中,经常碰到有些jar包在中央仓库没有的情况.如果公司有私服,那么就把jar包安装到私服上.如果没有私服,那就把jar包安装到本地Maven仓库.下面是如何把jar包导 ...

  4. Linux SSH建立连接过程分析

    https://blog.csdn.net/qwertyupoiuytr/article/details/71213463 SSH建立连接的过程主要分为下面几个阶段: SSH协议版本协商阶段.SSH目 ...

  5. Linux学习笔记-第9天 与windows相同的分区知识

    可能是因为之前自己已经对分区.引导.操作系统已经有了足够的认知和实践经验,也可能是因为这个知识已经看了三遍的原因.最近笔记有点少. 不是特别同意老师 新硬盘也可以不分区的关点.默认硬盘不分区应该是不能 ...

  6. <Random>382 380

    382. Linked List Random Node class Solution { ListNode node; Random random; /** @param head The link ...

  7. linux下找到JVM占用资源最高的线程

    linux的top命令不仅可以看线程的资源占用,还可以看进程下线程的资源占用,结合对应的java命令可以定位到具体有问题的Java代码,以找出占用CPU最高的线程为例: 第一步: 通过 top命令查找 ...

  8. Signal ()函数用法和总结

    void(* signal(int sig,void(* func)(int)))(int); 设置处理信号的功能 指定使用sig指定的信号编号处理信号的方法. 参数func指定程序可以处理信号的三种 ...

  9. C语言实现计算器,附源码,超简单!

    #include<stdio.h> #include<math.h> void main() { calculator(); } double calculator() { / ...

  10. Gogs配置(本地安装篇-Debian)

    知识储备: 用过MySQL等 了解Linux最基本的操作 git常用操作 关于ssh 本文参考:linux上安装gogs搭建个人仓库 下载 https://github.com/gogs/gogs/r ...