App 初始化操作!

签名配置

虽然APP离真正发布还很远,按我个人习惯还是把APP必须的东西但基本不会怎么变动的先配置了。

AS上建立签名文件太Easy: 工具栏Build > Generate Sign Apk > create new,然后填写签名相关信息即可。具体也可参考官网说明。

1.创建完后打开Project Structure(windows快捷键ctrl+alt+shift+s),切换到app并填写填写签名信息如下图,, 填写完确定将签名信息写入到app/build.grade中:

App 初始化操作!_第1张图片


2.配置签名后再看看我们的app/build.grade会发现多签名信息:

1
2
3
4
5
6
7
8
9
10
11
12
signingConfigs {
    release {
        keyAlias 'huchiwei'
        keyPassword 'password123'
        storeFile file('E:/我的坚果云/Android开发/签名文件/android.hucw.signkey.jks')
        storePassword 'password123'
    }
}
...
release {
    signingConfig signingConfigs.release
}
3.此时打开AS右侧Gradle面板执行下 assembleRelease 任务,如果正常的话,在app的build/outputs/apk能够见到已经签名的 app-release.apk

     2.多渠道打包:
(1).

同样地,我也到友盟申请个App统计应用,按照SDK文档配置下。

manifest.xml

1
2
3
<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />

在app的build.gradle设置produceFlavors

1
2
3
4
5
6
7
8
9
10
11
12
13
// 友盟多渠道打包
productFlavors {
    wandoujia {}
    _360 {}
    baidu {}
    xiaomi {}
    tencent {}
    taobao {}
}

productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

然后格式化名称输出apk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

android {
    defaultConfig {
        // dex突破65535的限制
        multiDexEnabled true
        // 默认是umeng的渠道
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
    }
    
    buildTypes {
        release {
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为gankessence_v1.0_2015-01-15_wandoujia.apk
                        def fileName = "gankessence_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }
}

最后再一次执行assembleRelease,如果正常的话应该可以看到如下结果

你可能感兴趣的:(android,多渠道打包!)