前言
最近的任务主要是和项目相关的,所以有很多东西都是不能放到外网上面的,导致如果第三周可以写的东西就很少,所以决定把3&4周的周记放到一起(其实就是懒2333333
- aapt相关
- 多渠道打包方案VasDolly
- 微信Xlog
1、aapt相关
aapt,即Android Asset Packaging Tool,是Android资源打包工具,Android Studio 和 Android Gradle 插件使用它来编译和打包应用的资源。aapt 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式。
在Android打包过程中,通过aapt会将res文件夹内的所有资源、asset下的资源、AndroidMainifest.xml和Android.jar文件通过编译和链接两个步骤将它们输出为apk文件里面的resource.arsc和以一个R.java。
推荐阅读: AAPT2 | Android AAPT详解
2、多渠道打包方案VasDolly
2.1、VasDolly概述
VasDolly是鹅厂开源的,一种快速多渠道打包工具,同时支持基于V1签名和V2签名进行多渠道打包。插件本身会自动检测Apk使用的签名类别,并选择合适的多渠道打包方式,对使用者来说完全透明。而 V1.1.6版本已支持Android Gradle Plugin 3.0。
2.2、VasDoll配置
首先是在项目的根目录build.gradle
中添加依赖:
dependencies {
classpath 'com.leon.channel:plugin:2.0.3'
}
接着就是在app项目目录下的build.gradle
中添加VasDolly的引用:
apply plugin: 'channel'
dependencies {
api 'com.leon.channel:helper:2.0.3'
}
然后是创建一个带有渠道信息的txt文档,之后再在app的build.gradle
中来将txt路径传入:
channel{
//指定渠道文件
channelFile = file("/Users/leon/Downloads/testChannel.txt")
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
baseOutputDir = new File(project.buildDir,"xxx")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
apkNameFormat ='${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}'
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
isFastMode = false
//buildTime的时间格式,默认格式:yyyyMMdd-HHmmss
buildTimeDateFormat = 'yyyyMMdd-HH:mm:ss'
//低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
lowMemory = false
}
其中的相关字段的解释如下:
- appName : 当前project的name
- versionName : 当前Variant的versionName
- versionCode : 当前Variant的versionCode
- buildType : 当前Variant的buildType,即debug or release
- flavorName : 当前的渠道名称
- appId : 当前Variant的applicationId
- buildTime : 当前编译构建日期时间,时间格式可以自定义,默认格式:yyyyMMdd-HHmmss
最后就是打包输出多渠道包,通过gradle channelDebug
或者gradle channelRelease
来分别生成Debug和Release的多渠道包。
2.3、读取渠道信息
如果想要读取多渠道信息,则可以使用已经封装好的Java方法:
String channel = ChannelReaderUtil.getChannel(getApplicationContext());
2.3、多渠道打包方案的对比
对比推荐阅读: VasDolly
3、微信Xlog
3.1、Xlog概述
Mars 是微信官方的跨平台跨业务的终端基础组件。而Xlog是其中的高可靠高性能的运行期日志组件。作为一个优秀的日志组件,它保证:
- 不能把用户的隐私信息打印到日志文件里,不能把日志明文打到日志文件里。
- 不能影响程序的性能。最基本的保证是使用了日志不会导致程序卡顿。
- 不能因为程序被系统杀掉,或者发生了 crash,crash 捕捉模块没有捕捉到导致部分时间点没有日志, 要保证程序整个生命周期内都有日志。
- 不能因为部分数据损坏就影响了整个日志文件,应该最小化数据损坏对日志文件的影响。
推荐阅读: 高性能日志模块xlog
3.2、Xlog配置
在配置Android端的Xlog时有两种方式,一种是添加gradle依赖来直接使用,另一种则是本地编译.so文件来来添加到工程当中,这里推荐使用第二种方式。
首先我们将mar的源码clone下来,地址是:https://github.com/Tencent/VasDolly.git
在本地编译之前需要先搭建编译环境,具体要求如下:
- python2.7
- cmake
- 下载ndk-r20,并配置环境变量 NDK_ROOT 指向 ndk 路径
- cygwin,要安装其中的 make, gcc gdb。 然后把 cygwin 的 bin 目录配置到环境变量中的 PATH 中
环境搭建完毕之后就可以运行编译脚本,脚本的目录是:\mars-master\mars\build_android.py
,运行时候会出现如下界面:
我们选择3,之后就会输出两个.so文件在目录
\mars-master\mars\libraries\mars_xlog_sdk\libs\armeabi-v7a
中。
接着,我们将armeabi-v7a文件夹和目录\mars-master\mars\libraries\mars_xlog_sdk\src\main\java
中的文件复制到我们的项目中:
之后我们就可以使用我们的Xlog了。
推荐阅读: Mars Android 接入指南
网友评论