tinkerpatch.gradle 3.5 KB
apply plugin: 'tinkerpatch-support'

def bakPath = file("${buildDir}/bakApk/")
def baseInfo = "main-1.0.0-0316-10-38-30"
def appName = "officialrelease"

/**
 * 对于插件各参数的详细解析请参考
 * http://tinkerpatch.com/Docs/SDK
 */
tinkerpatchSupport {
    /** 可以在debug的时候关闭 tinkerPatch **/
    tinkerEnable = false
    /** 是否使用一键接入功能  有自己的APPLICATION就为false**/
    reflectApplication = false

    autoBackupApkPath = "${bakPath}"

    appKey = "b5cc16e848a9e95f"
    appVersion = rootProject.ext.android["versionName"]

    def pathPrefix = "${bakPath}/${baseInfo}/${appName}/"
    def name = "${project.name}-${appName}"
    //基线包地址
    baseApkFile = "${pathPrefix}/${name}.apk"
    baseProguardMappingFile = "${pathPrefix}/${name}-mapping.txt"
    baseResourceRFile = "${pathPrefix}/${name}-R.txt"

    /** 若有编译多flavors需求,可在flavors中覆盖以下参数
     *  你也可以直接通过tinkerPatchAllFlavorDebug/tinkerPatchAllFlavorRelease, 一次编译所有的flavor补丁包
     *  注意的是:除非你不同的flavor代码是不一样的,不然建议采用zip comment或者文件方式生成渠道信息
     **/
//    productFlavors {
//        flavor {
//            flavorName = "dev"
//            appVersion = "${tinkerpatchSupport.appVersion}_${flavorName}"
//
//            pathPrefix = "${bakPath}/${baseInfo}/${flavorName}${appName}/"
//            name = "${project.name}-${flavorName}${appName}"
//
//            baseApkFile = "${pathPrefix}/${name}.apk"
//            baseProguardMappingFile = "${pathPrefix}/${name}-mapping.txt"
//            baseResourceRFile = "${pathPrefix}/${name}-R.txt"
//        }
//    }
}

/**
 * 用于用户在代码中判断tinkerPatch是否被使能
 */
android {
    defaultConfig {
        buildConfigField "boolean", "TINKER_ENABLE", "${tinkerpatchSupport.tinkerEnable}"
    }
}

/**
 * 一般来说,我们无需对下面的参数做任何的修改
 * 对于各参数的详细介绍请参考:
 * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
 */
tinkerPatch {
    ignoreWarning = false
    useSign = true
    dex {
        dexMode = "jar"
        pattern = ["classes*.dex"]
        /* 这一项非常重要,它定义了哪些类在加载补丁包的时候会用到。这些类是通过Tinker无法修改的类,也是一定要放在main dex的类。
           这里需要定义的类有:
           1. 你自己定义的Application类;
           2. Tinker库中用于加载补丁包的部分类,即com.tencent.tinker.loader.*;
           3. 如果你自定义了TinkerLoader,需要将它以及它引用的所有类也加入loader中;
           4. 其他一些你不希望被更改的类,例如Sample中的BaseBuildInfo类。这里需要注意的是,这些类的直接引用类也需要加入到loader中。或者你需要将这个类变成非preverify。
           5. 使用1.7.6版本之后版本,参数1、2会自动填写。*/
        loader = ["com.xdy.commonlibrary.core.BaseApplication"]
    }
    lib {
        pattern = ["lib/*/*.so"]
    }

    res {
        pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
        ignoreChange = []
        largeModSize = 100
    }

    packageConfig {
    }
    sevenZip {
        zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
//        path = "/usr/local/bin/7za"
    }
    buildConfig {
        //单个dex可以开启增加效率
        keepDexApply = false
    }
}