zoukankan      html  css  js  c++  java
  • Android 二次打包(封装)AAR实用指南

    前言

    上次文章Android SDK开发与使用的那些事儿说到如何在aar里集成导入的aar,也就是二次封装aar的问题,一带而过,难免不过瘾。在封装这条路上也遇到了不少坑,现在将此方法详细记录下来。
    说到二次打包aar这个需求应该算小众了,谷歌一圈下来也找不到答案,Android Studio到目前也还不支持这个操作,一开始遇到这个问题的时候可以说非常蛋疼了...

    原理

    aar作为一个“特殊后缀”的压缩包,在导入项目中编译的时候无非就是合并,而Android Studio项目有个module的说法,他们两者都可以看做是project的library,既然Android Studio不能自动处理这个合并,那我们何不尝试一下手动解决?

    Android Library形式导入AAR解压包

    1. 解压AAR文件:

       
      aar解压图.png

      可以看到,aar里包括了各种各样的资源文件(解压包大致一样,略有差异),但是有的是空文件夹,现在res,jni这些文件夹我们就熟悉了吧!如果你的aar解压出来仅有so库与jar包,那就不用往下看了,直接提取出来复制到项目对应目录下编译即可!

    2. 新建一个Module


       
      Android Library.png

      一路next下去,包名任选(反正也是要抛弃的...)

    3. 复制classes.jar包到新建的module(示例library名为:mylibrary)的libs目录下,如图


       
      复制classes.jar文件到libs目录下.png
    4. 展开mylibrary下的src文件夹,首先删掉文件夹内的所有东西,接着将aar解压文件夹中的assets、res、AndroidManifest.xml等文件(夹)复制进去,复制jni文件夹下的相关文件到新建的jniLibs文件夹。总之,套路就是按正常的项目结构对应来放置资源。当然,以上几个复制步骤是aar中包含该资源的情况下才需要。


       
      src_main.png
    5. 在app—build.gradle文件下将该module compile进去


       
      引入module project.png

      至此,aar导入完毕,可以直接使用原arr中的方法,加入自己的业务逻辑再次打包成aar的需求也就迎刃而解了

    总结

    以module形式手动导入aar的方式,曲线解决了目前Android Studio不支持在aar基础上二次封装成aar这个需求。总结起来就是大胆假设小心求证,了解一些项目合并/打包的原理是很有帮助的,在这探索过程中也得到了好友的指点,在这感谢。最后希望这篇文章分享出来能有所帮助吧!

  • 相关阅读:
    editable : false与 readonly 的区别
    Ubuntu环境下使用Jupyter Notebook查找桌面.csv文档的方法
    实验01——java模拟银行ATM系统
    Wannafly挑战赛26 御坂网络
    Wannafly挑战赛29 御坂美琴(递归,模拟)
    牛客练习赛31 龙魂合一萨坎与晶石
    牛客练习赛31
    Codeforces Round #520 (Div. 2)A. A Prank
    (花里胡哨)New Game!(牛客国庆集训派对Day1)
    Educational Codeforces Round 54 (Rated for Div. 2)A. Minimizing the String(签到题)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/9981964.html
Copyright © 2011-2022 走看看