博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aar包 生成 以及相关处理
阅读量:6415 次
发布时间:2019-06-23

本文共 1995 字,大约阅读时间需要 6 分钟。

hot3.png

 

这个上个月老板提的需求, 现在想起来了,总结下将自己的工程转换成aar包时的过程,以及碰到的一些问题.

 

关于aar包,可以参考:http://blog.csdn.net/maosidiaoxian/article/details/41578499

在Android Studio 环境下

将原来的项目的 build.gradle 中的

apply plugin: 'com.android.application'

替换成

apply plugin: 'com.android.library'

那么同时, 

    defaultConfig {//        applicationId "cn.feezu.app"  //library不能有applicationId,会报错    }

最坑爹的是,原来工程中处理点击事件,一般都是用 switch... case... 语句,现在也不能用了,必须全部替换成if...else...语句,貌似是说在library中的资源id都不是final 的了, 所有不能用switch...case....了, 这个解释我不能接受.

[2016/8/11 update]

用if替代switch -case, 可以参考 http://blog.csdn.net/maosidiaoxian/article/details/41576721

以及:http://tools.android.com/tips/non-constant-fields

实验了下,如下图,可以直接替换

然后在project下新建一个module, 作为 application,

在这个module的build.gradle中增加依赖

dependencies {     compile project(':app') }

然后用这个module 运行下, 成功之后, 在作为library的module 的build\outputs\aar目录下会生成2个aar包

可能名字会是 app-debug.aar   app-release.aar, 

这个就是需要的东西了. 用这个release的包,

====================可耻的分割线===================================

新建一个project, 将需要的aar包放入到libs下,

1. 在build.gradle中增加依赖

dependencies {    compile(name: 'app-release', ext: 'aar')//导入app2.aar并执行}

同时必须指定aar包的为本地仓库:

repositories {    flatDir {        dirs 'libs' //this way we can find the .aar file in libs folder    }}

 

2. 然后一个问题就是在aar包中需要的依赖库,可能需要也加入到目标工程的依赖中,

比如我在原工程中使用了百分比布局的库依赖, 如果在目标工程中不添加这个百分比布局库的依赖,会爆出一个

Error:(38) No resource identifier found for attribute 'layout_marginTopPercent' in package 'cn.wxn.hainanapp4'

的错,在目标工程中加上原工程的添加的依赖就不会报错了

3. 再一个问题就是 样式导入, 

   在原工程中使用到的样式,都需要复制到目标工程的样式文件中,以及样式应用到的资源文件或者字段,如果原工程由大量的样式文件以及配套的资源文件,这个也是一个很大的工作量了.当然从另一个方面将, 资源文件完全暴露, 也方便目标工程和原工程的样式统一处理.

[2016/08/19更新]

在android studio 2.0里,发现不用导入aar包中的样式文件了

然后另外一个问题,就是如果工程中用到了butterknife这样的用注解来控制界面元素的框架,也是不能使用的。只能去掉这个框架,因为注解也是需要依赖元素id是final的才可以用。

4. 另外:

对应像我的aar工程中使用到了百度,并且在aar包的清单文件中注册了百度key,

那么,aar包中的清单文件中注册的百度key是无效的,需要目标工程中重新申请对应包名的百度key,并是同tool:replace进行清单整合式替换aar包中的清单配置

在目标的清单文件中,需要增减xmlns:tools

然后将申请的百度key填写进来,需要增加tools:node属性

这里有些参考内容:

 

转载于:https://my.oschina.net/wangxnn/blog/605635

你可能感兴趣的文章
android adb命令
查看>>
python “双”稀疏矩阵转换为最小联通量“单”矩阵
查看>>
揭秘天猫双11背后:20万商家600万张海报,背后只有一个鹿班
查看>>
重置mysq root密码脚本
查看>>
我的友情链接
查看>>
MHA配置参数
查看>>
深入理解Lock
查看>>
vim的块选择
查看>>
HTML --块
查看>>
在DLL中获取主进程窗口句柄
查看>>
基于消息队列的双向通信
查看>>
一个不错的loading效果
查看>>
Debian允许root用户登录
查看>>
linux的文件系统
查看>>
上云利器,K8S应用编排设计器之快到极致
查看>>
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
马哥linux作业--第八周
查看>>
dubbo01
查看>>