腾讯实习| 周记(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)

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