gradle 多分支使用不同的签名文件打包

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    android {
signingConfigs {
debug {} //debug debug版本
release {} //正式签名版本
third {} //另一个签名配置
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
release {
signingConfig singingConfigs.release
}

third {
signingConfig singingConfigs.third
}
}
//产品不同分支
productFlavors {
alpha_fittime {
applicationId = ""
manifestPlaceholders = []
}
beta_fittime {
applicationId = ""
manifestPlaceholders = []
}
product_fittime {
applicationId = ""
manifestPlaceholders = []
}
}
}

//读取sign key配置 relese版本
File releaseFile = file('release.properties');
if (releaseFile.exists()) {
def Properties releasePt = new Properties()
releasePt.load(new FileInputStream(releaseFile))
if (releasePt.containsKey('STORE_FILE') && releasePt.containsKey('STORE_PASSWORD') &&
releasePt.containsKey('KEY_ALIAS') && releasePt.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(releasePt['STORE_FILE'])
android.signingConfigs.release.storePassword = releasePt['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = releasePt['KEY_ALIAS']
android.signingConfigs.release.keyPassword = releasePt['KEY_PASSWORD']
} else {
android.buildTypes.release.signingConfig = null
}
} else {
android.buildTypes.release.signingConfig = null
}

//读取sign key配置 third 版本
File thirdFile = file('third.properties');
if (thirdFile.exists()) {
def Properties thirdPt = new Properties()
thirdPt.load(new FileInputStream(thirdFile))
if (thirdPt.containsKey('STORE_FILE') && thirdPt.containsKey('STORE_PASSWORD') &&
thirdPt.containsKey('KEY_ALIAS') && thirdPt.containsKey('KEY_PASSWORD')) {
android.signingConfigs.third.storeFile = file(thirdPt['STORE_FILE'])
android.signingConfigs.third.storePassword = thirdPt['STORE_PASSWORD']
android.signingConfigs.third.keyAlias = thirdPt['KEY_ALIAS']
android.signingConfigs.third.keyPassword = thirdPt['KEY_PASSWORD']
} else {
android.buildTypes.third.signingConfig = null
}
} else {
android.buildTypes.third.signingConfig = null
}

打包命令:

  • gradle aR 打包的release 使用 release.properties 文件配置的key信息,third 使用third.properties 文件配置的key信息

gradle 每一个分支使用不同签名文件打包

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
android {
signingConfigs {
debug {} //debug debug版本
release {} //正式签名版本
third {} //另一个签名配置
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
release {
signingConfig singingConfigs.release
}

third {
signingConfig singingConfigs.third
}
}
//产品不同分支
productFlavors {
//首先定义局部的打包需要的配置
def defaultSigning = signingConfigs.release
def thirdSigning = signingConfigs.third
alpha_fittime {
applicationId = ""
manifestPlaceholders = []
signingConfig defaultSigning //使用默认签名
}
beta_fittime {
applicationId = ""
manifestPlaceholders = []
signingConfig defaultSigning //使用默认签名
}
product_fittime {
applicationId = ""
manifestPlaceholders = []
signingConfig defaultSigning //使用默认签名
}
third_fittime {
applicationId = ""
manifestPlaceholders = []
signingConfig thirdSigning //使用third签名
}

}
}

//读取sign key配置 relese版本
File releaseFile = file('release.properties');
if (releaseFile.exists()) {
def Properties releasePt = new Properties()
releasePt.load(new FileInputStream(releaseFile))
if (releasePt.containsKey('STORE_FILE') && releasePt.containsKey('STORE_PASSWORD') &&
releasePt.containsKey('KEY_ALIAS') && releasePt.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(releasePt['STORE_FILE'])
android.signingConfigs.release.storePassword = releasePt['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = releasePt['KEY_ALIAS']
android.signingConfigs.release.keyPassword = releasePt['KEY_PASSWORD']
} else {
android.buildTypes.release.signingConfig = null
}
} else {
android.buildTypes.release.signingConfig = null
}

//读取sign key配置 third 版本
File thirdFile = file('third.properties');
if (thirdFile.exists()) {
def Properties thirdPt = new Properties()
thirdPt.load(new FileInputStream(thirdFile))
if (thirdPt.containsKey('STORE_FILE') && thirdPt.containsKey('STORE_PASSWORD') &&
thirdPt.containsKey('KEY_ALIAS') && thirdPt.containsKey('KEY_PASSWORD')) {
android.signingConfigs.third.storeFile = file(thirdPt['STORE_FILE'])
android.signingConfigs.third.storePassword = thirdPt['STORE_PASSWORD']
android.signingConfigs.third.keyAlias = thirdPt['KEY_ALIAS']
android.signingConfigs.third.keyPassword = thirdPt['KEY_PASSWORD']
} else {
android.buildTypes.third.signingConfig = null
}
} else {
android.buildTypes.third.signingConfig = null
}
  • 这样就可以使得 productFlavors 中的third_fittime 单独只用自己的第三方签名