gradle android友盟多渠道混淆编译打包

build.gradle的编写:

apply plugin: 'android'

android {
    compileSdkVersion 16
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 17
    }

    lintOptions {
        abortOnError false
    }

    //签名
    signingConfigs {
        release{
            storeFile file("xxxx")
            storePassword "xxxx!"
            keyAlias "xxxx"
            keyPassword "xxxx!"
        }
    }

    //多渠道
    productFlavors {
        wandoujia{

        }


    }

    buildTypes {
        //混淆编译和签名信息设置
        release {
            signingConfig signingConfigs.release
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }
}

tasks.withType(Compile) {
    options.encoding = "UTF-8"
}
//第三方的lib和project的引用
dependencies {
    compile project(':viewPagerIndicator')
    compile project(':social_sdk_library_project')
    compile project(':slidingMenu')
    compile 'com.google.code.gson:gson:2.2.4'
    compile files('libs/android-async-http-1.4.4.jar')
    compile files('libs/umeng_sdk.jar')
    compile files('libs/universal-image-loader-1.8.6-with-sources.jar')
}

//替换AndroidManifest.xml的UMENG_CHANNEL_VALUE字符串为渠道名称
android.applicationVariants.all{ variant ->
    println "${variant.productFlavors[0].name}"
    variant.processManifest.doLast{
        copy{
            from("${buildDir}/manifests"){
                include "${variant.dirName}/AndroidManifest.xml"
            }
            into("${buildDir}/manifests/$variant.name")

            filter{
                String line -> line.replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}")
            }

            variant.processResources.manifestFile = file("${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml")
        }
    }
}

出错问题集锦:
1.Gradle version 1.10 is required. Current version is 1.11
A.找到:<Project>/gradle/wrapper/gradle-wrapper.properties然后修改:distributionUrl=http\://services.gradle.org/distributions/gradle-1.10-all.zip中的gradle-1.10-all.zip为gradle-1.11-all.zip.
B.再修改build.gradle下的buildToolsVersion "19.0.0"为最新的buildToolsVersion "19.0.3"(有第三方的projecd lib包也要进行修改)
C.修改主工程的build.gradle中的
dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }为
dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
具体版本的值参考:
http://stackoverflow.com/questions/22252956/android-studio-gradle-issue-upgrading-to-version-0-5-0-gradle-migrating-from-0
rebuild工程即可。
2.lint错误终止
在android中加入:
lintOptions {
        abortOnError false
    }
有第三方project lib的也需要加入。


打包编译:
$gradle clean
$gradle assembleRelease
参考文档:
http://stackoverflow.com/questions/19460349/gradle-version-1-8-is-required-current-version-is-1-6
https://github.com/umeng/umeng-muti-channel-build-tool/tree/master/Gradle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
友盟渠道打包工具主要是提供基本的通过工程源码打包的功能。 常见错误见这里目前不支持的Apk特性见这里(可能会导致发布的SDK产生严重bug)。 Google 现在已经发布了最新的构建系统(New Building System) , 在 Android Studio 中已经支持了最新的 构建系统,如果开发者已经迁移,可以使用新的系统方面的生成渠道包,这是取代渠道打包工具的最佳方式。 1. 工程结构 工程结构图 : - CommonTools 共用的工具类,包括对 `Apktool` , `Jarsigner` , `zipalign` 的封装 - UIControls_35   共用的UI类,对大部分控件的样式都是在这里设置的 - UmengMarket  Marekt 组件,现在还没有实现 - UmengPackage 打包组件 - UmengTools 工程主要UI,管理 UmengMarket, UmengPackage, UmengTools 三个组件 - UmengWidget 小工具组件,目前仅有解包分析的功能 打包工具组件: - Source - Builder - ApkBuilder.cs     通过 APK 打包的 Builder 实现                    - Builder.cs            抽象 Builder 类,提供打包的主要逻辑                    - SourceBuilder.cs通过源码打包的 Builder 实现 (目前代码还没有实现)          - Worker.cs 打包过程对外接口 3. 打包流程 V2.0 版本仅实现了通过 .apk 打包的方式,本质上对  apk 文件进行反编译,修改 AndroidManifest.xml 文件后,再重新打包,我们使用的工具是开源的拆包工具 Apktool 将  apktool  添加到当前 process 的环境变量 执行 apktool d --no-src -f xxxx.apk temp 拆解apk 替换或者添加 AndroidManifest.xml 中的 友盟channel 执行apktool b temp  unsigned.apk 重新打包apk 执行 SignApk.jar 生成签名后的 apk 文件 执行 zipAlign 生成对齐优化后的 apk 文件 回到 3 替换新的渠道 完成打包 使用  JarSigner.jar 给 Apk 签名, SignApk.jar  文件是我们修改过的 apk 签名工具,实现了和 ADT 中一样的签名方式,使用如下: Usage: signapk file.{keystore} keystore_password key_entry key_password input.apk output.apk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值