前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio 多渠道打

Android Studio 多渠道打

作者头像
霡霂
修改2018-08-09 15:23:05
5080
修改2018-08-09 15:23:05
举报
文章被收录于专栏:雨过天晴

build.gradle实例:

代码语言:javascript
复制
apply plugin: 'com.android.application'

android {
    /**
     * 设置编译 sdk 和编译工具的版本
     */
    compileSdkVersion 19
    buildToolsVersion "24.0.3"

    /**
     * 为所有的 build variants 设置默认的值. 关于 build variant, 我们后面会用一张图片说明
     */
    defaultConfig {
        applicationId "com.dingxiaoyu.iweather"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"

        // dex突破65535的限制
        multiDexEnabled true
        // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "channel_name"]

    }

    /**
     * 关于签名, 请参考 google 官方文档:
     * <a href="https://developer.android.com/studio/publish/app-signing.html#debug-mode">Sign Your App</a>
     */
    signingConfigs {
        /**
         * As 会自动帮我们使用 debug certificate 进行签名. 这个 debug certificate 每次安装 As 都会变,
         * 因此不适合作为发布之用.
         */
        debug {
        }

        release {
            storeFile file("$System.env.STORE_FILE")
            storePassword "$System.env.STORE_PASSWORD"
            keyAlias "$System.env.KEY_ALIAS"
            keyPassword "$System.env.KEY_PASSWORD"
        }
    }
    /**
     * type 默认会有 debug 和 release. 不管你写不写都如此.
     * 通常, 我们在 debug 中保留默认值, release 中开启混淆, 并使用私有的签名
     */
    buildTypes {
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            // 移除无用的resource文件
            shrinkResources true

            //Zipalign优化
            zipAlignEnabled true
            // 混淆
            minifyEnabled false
            //加载默认混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            // 签名
            signingConfig signingConfigs.release
        }

        debug {
            //apk打包文件后缀
            versionNameSuffix "-debug"
        }
    }

    /**
     * flavor 强调的是不同的版本, 比如付费版和免费版.
     * 在国内, 这个字段更多被用于区分不同的渠道, 即 360 渠道, 小米渠道等等.
     */
    productFlavors {
        main {
            // 定制包名的
            //applicationId "com.dingxiaoyu.iweather"
            // manifests引用的
            //manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]
        }
        m360 {
        }
        xiaomi {
        }
        flyme {
        }
    }

    // 设置路径
    sourceSets {
        main {
            assets.srcDirs = ['src/main/assets']
            jniLibs.srcDirs = ['libs']
            //manifest.srcFile 'src/main/AndroidManifest.xml'
            //java.srcDirs = ['src/main/java']
            //resources.srcDirs = ['src/main/res']
            //aidl.srcDirs = ['src']
            //renderscript.srcDirs = ['src']
            //res.srcDirs = ['src/main/res']
        }
    }

    /**
     * 这个选项基本不用.
     * <a href="http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits">官方说</a>: 使用 splits 可以比使用 flavor 更加有效创建多 apk.
     * 目前而言, 仅支持 Density 和 ABIs 这两个分类.
     */
    splits {
        // 按屏幕尺寸
        density {
            enable false

            // 默认包含全部分辨率, 这里是剔除一些我们不要的
            exclude "ldpi", "mdpi", "xxxhdpi", "400dpi", "560dpi", "tvdpi"
        }

        // 按架构
        abi {
            enable false

            // 使用 `reset()` 后, 我们就相当于不包含任何架构,
            // 这种情况下我们就可以通过 `include` 指定想要使用的架构
            reset()

            include 'x86', 'armeabi-v7a'
            universalApk true       // 是否同时生成一个包含全部 Architecture 的包
        }
    }
    //打包完成后修改文件名,加版本号
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }
}

/**
 * 配置依赖目录
 */
repositories {
    flatDir {
        dirs 'libs'
    }
}

/**
 * 项目的依赖
 */
dependencies {
    /**
     * `fileTree` 导入 libs 目录下的所有 jar 文件
     */
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.squareup.okhttp:okhttp:2.1.0'

    // flyme 推送
    compile(name:'common-1.0.10', ext:'aar')
    compile(name:'gslb-3.0.9', ext:'aar')
    compile(name:'push-internal-3.1.160901', ext:'aar')
    compile(name:'usage-stats-2.5.1', ext:'aar')
    compile 'com.google.android.gms:play-services-appindexing:8.4.0'
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档