腾讯实习| 周记(3&4)

作者: yzbkaka | 来源:发表于2020-06-26 17:42 被阅读0次

前言

最近的任务主要是和项目相关的,所以有很多东西都是不能放到外网上面的,导致如果第三周可以写的东西就很少,所以决定把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 接入指南

相关文章

  • 腾讯实习| 周记(3&4)

    前言 最近的任务主要是和项目相关的,所以有很多东西都是不能放到外网上面的,导致如果第三周可以写的东西就很少,所以决...

  • 腾讯实习| 周记(2)

    前言 呼 ,来腾讯实习的第二周啦,逐渐开始熟悉项目并开始干一些小活了。因为这一周的大头是对我们项目进行具体的多渠道...

  • 腾讯实习| 周记(1)

    前言 终于终于来到鹅厂实习了(湖北人民太不容易了呜呜呜。入职的那一天真的炒鸡炒鸡兴奋,新鲜感漫满满哈哈哈。第一周在...

  • 实习周记(一)

    在腾讯实习的这段期间内会定期每周写一篇实习周记,没有格式,杂谈,想到什么就说什么吧 【5月13日~5月23日】 入...

  • 记•实习周记

    本来是想每天写一篇日记,以此来记录我的实习生活。其实,一来是为记录,二来也是为反思,不断成长。总是不断反思才能成长...

  • 实习周记~

    这是我来这个小村庄的第四周辣~是我的第四周和这个小村子的第四周和我学生的第四周~实习生活在不知不觉中就溜走了四分之...

  • 实习周记

    这已经是我来这个学校的第五周了,比起第一周的惶恐,陌生和一万个不愿意,我觉得第五周的我从容和淡定了不少。生活工作都...

  • 实习周记

    实习了四天,节奏比学校居然要累一点。第一天拔草了两小时,蹲的发晕。之前分配我做李文刚的徒弟。他是一个十几年的老兵,...

  • 实习周记

    嘀嘀嘀~实习第三周打卡。天气渐渐暖和起来,但是还是觉得自己给自己买的电褥子会用到五月一,怎么说呢,被分到的这个粪堆...

  • 实习周记

    在暑假之前,我报名了安徽梦拓新梦想教育培训学校的老师,这个机构据说是学院某个系几个大四学长的创业项目。 我于六月二...

网友评论

    本文标题:腾讯实习| 周记(3&4)

    本文链接:https://www.haomeiwen.com/subject/gmsufktx.html