利用gradle能够很方便的帮助我们 多渠道 打包 签名
String[] getSigningProperties(boolean isDebug) { File propFile = new File('sign_info.properties') if (propFile.exists()) { def Properties props = new Properties() props.load(new FileInputStream(propFile)) if (isDebug) { def signP = new String[1]; signP[0] = props['DEBUG_STORE_FILE'] return signP } else { def signP = new String[4]; signP[0] = props['STORE_FILE'] signP[1] = props['STORE_PASSWORD'] signP[2] = props['KEY_ALIAS'] signP[3] = props['KEY_PASSWORD'] return signP } } }
这个是如何读取 签名信息 学过 Java的 都应该知道 如何 读取properties 键值对
android{
//签名 signingConfigs { debug { try { def signP = getSigningProperties(true) storeFile file(signP[0]) v2SigningEnabled false } catch (ex) { ex.printStackTrace() } } preview { try { def signP = getSigningProperties(true) storeFile file(signP[0]) v2SigningEnabled false } catch (ex) { ex.printStackTrace() } } release { try { def signP = getSigningProperties(false) storeFile file(signP[0]) storePassword signP[1] keyAlias signP[2] keyPassword signP[3] v2SigningEnabled false } catch (ex) { ex.printStackTrace() } } }
}
下面就是使用上面的方法 进行打包了 应该很容易理解
这几句话就是 多渠道配置 想使用哪个 渠道 自己添加 就好了
productFlavors { BaiDu {} } //批量配置 productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } 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) } } }
这个是清单文件中的 设置
<meta-data Android:name="channel" android:value="${
UMENG_CHANNEL_VALUE}"/>
纯属个人笔记