更新时间:2019-10-21 10:43
客户端针对不同的平台和技术方案,分别有:Sophix,WAX。下文只介绍Sophix集成和WAX集成。
SDK集成之前,需要在EMAS控制台创建产品和应用,并获取AppKey, 集成SDK时使用。
com.taobao.android.hotfix.RSASECRET: 使用默认值”MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCAmdpFnkrvjDCnZwhbWx4xbiRQtMWLZs/X4879JVP/j5T18wwjiVJVOURiWMdqrxC/ibqfLUX8GypEbx/d+F83H+xpNsaVGdxzqZQJdioywhWMOmHiNGbNBdTPDR3wBbNc9YOb+zSd2GqvvBfIefH+zG3SY8UJRZfganyRkEz892tf7am5Syq2c/KB+BlGvU6gpIaNRrlNhr7QfvJiH1lfVIJTKelq2N/EVmMUiGgUMhbjVN5GO04mt9zIVvUHSLl07Oi+bYgAFgC+gNCPJFX4MRqhdJdL79Jz51PTnStxDarZdhDPqr2PGxUGTVzpx/kSv0YjdrVvWfvxp+DL1O4NAgMBAAECggEAC1qJ9L+G6iM8YGsuR7KBted9eUqcbjRDgVHxglP7WIK6qgQtPC3xgOivaudfo8GU/vQP7+G1Xg6f6q7M53H4JgvBeYCGg79mwSdllHhEPXr5IAo/fhMWSF+NbEJCNGCsdzaNygWhnZXvxVgb2W06uj4eLAb27FyijgOYv9k3ktW85cexA9CxBkBYMy8W+q9kRFZUY7odVTurlFp0+Le3E9cs1fvmfZ/2j5uAM5PrKvT/4ADx7i21kBxKLliOBOTm7Jd3dHEuoUm5C/6UavV+M+ue2kyx/XZYrqsjSMDHgpm2K+agQwVkG2qUPdLs6ylMTITK9Or6p1sp15zZHOYQmQKBgQDPydKgWnBoatejoDNGSnhwswkbTXzGXP6rMkKfgm+R/Q50fCaQtdEfkjjLFIMdwDdWRS8OyRhmpQkSm2rwiN5Pd+eZqVuB2U4X4NxDqehJ8rLlkFSGYQ6cFsH9XZIQIgiDZLR55vOrOcUhi4MbowBkQ80nxldMo5YdqI1ckfm3OwKBgQCecHi2NlbfXd4JLE7y8KkVVaTxktuwP1TOJyCRYkRF8YbjDFbysybkDZEUuPVUSeJhiSOwjmhhRqq00kaz/idY2APNcwSdW/KL9uD4bjheE79jyvkeLxcYliQZ2cSoTMD7q8Lo3atXUcQMD9fZeXl4DrLIirKWFnVTO/oCPwZrVwKBgQCvPh+Nbbjv12wWa73SwmvhYJ2FkUxyX2vJJpJZxMAj97CBPVOpKC4+2itb2ujZ5orFD4QojCEwMG/+aWU/h682hoGlbtfmI0dhjBs4Vcu60h1ezuL6klCoA+mHrarKQGm9pukvBkDrX8WKDQd9/3MNHMGhkf1+fVjVmpneQJ7CkQKBgQCW1M+192kgX8YeyXWnRYBR9SR/baWC1eewEgOpI/mG9HXK9FZZ2j9t35R8O9Ahm+zNmbbGP+wSnymn1n7En3Fp3MtR7Os5uuzeXfqxxowW04niQLqEB6RfHZ/klDHpXphhfpShB1Y0XHzcVsDQIhqHNsbwr0lwJJUw1eod9U3xJQKBgCdVX67HqkKw0zr6Weqnci/YIPibI/8r/67Zy2C3+uIGkvrKrFGNNtl8Tlf3QXNI8BGBhjzBmd9C2R8I7+5j3/SBQflTczw/kDNu50hIC9Rx5DTTqC4MxHir/rB3I0LbwhrbRrhk8uih9a4JqShgnSXisjvLIFfcuTkuQiw0TJqa”
HOST:拉取补丁的域名,与EmasInit.java中mMTOPDoman相同。后文接入时,在SophixStubApplication 里加入SophixManager.getInstance().setHost(EmasInit.getInstance().mMTOPDoman, false)
分支:dev_poc_light
(1)、项目根目录build.gradle添加maven emas sdk中心仓库用于拉取插件库(外网仓库)
buildscript {
repositories {
// sdk中心仓库
maven {
url "http://nexus-ce.emas-poc.com/repository/maven-public/"
credentials {
username = "xxx"
password = "xxx"
}
}
... ...
}
... ...
}
(2)、项目根目录build.gradle添加maven构建产物仓库,用于拉取每次发布的app基线包(一般为客户内部仓库)
repositories {
... ...
//构建产物仓库
maven {
url "xxx"
credentials {
username = "xxx"
password = "xxx"
}
}
// add end
... ...
}
(3)、项目根目录新增一个common.gradle文件,文件内容如下,直接贴过去即可:
def emas_version_name = getEnvValue('EMAS_VERSION_NAME')
def emas_version_code = getEnvValue('EMAS_VERSION_CODE')
def emas_base_version = getEnvValue('EMAS_BASE_VERSION')
if (emas_version_code) {
android.defaultConfig.versionCode = emas_version_code.toInteger()
println("emas_version_code=" + emas_version_code)
}
if (emas_base_version) {
println("emas_base_version=" + emas_base_version)
}
if (emas_version_name) {
android.defaultConfig.versionName = emas_version_name
println("emas_version_name=" + emas_version_name)
}
String getEnvValue(key) {
return getEnvValue(key, null)
}
String getEnvValue(key, defValue) {
def val = System.getProperty(key);
if (null != val) {
return val
}
val = System.getenv(key);
if (null != val) {
return val
}
return defValue
}
(4)、在项目根目录build.gradle里面应用这个common.gradle
apply from: 'common.gradle'
注:common.gradle中将从emas控制台读取的appverion设置到了android.defaultConfig.versionName。 所以需要将android { ... }
里的verison的赋值语句去掉,避免android.defaultConfig.versionName被再次覆盖。
(1)、项目根目录build.gradle添加插件依赖坐标
buildscript {
... ...
dependencies {
... ...
classpath 'com.taobao.android:sophix-emas-plugin:0.5.12'
... ...
}
... ...
}
(2)、apk工程目录的build.gradle里应用插件,紧接在原生插件(或者emas-plugin)之后
apply plugin: 'com.android.application'
apply plugin: 'com.taobao.sophix.emas' // add here
(3)、apk工程目录的build.gradle里配置基线包maven发布坐标和版本
group = "xxx.xxx.xxx" //建议应用包名
version = android.defaultConfig.versionName
(4)、apk工程目录的build.gradle里最后一步,添加基线包发布配置,
apply plugin: 'maven'
apply plugin: 'maven-publish'
publishing {
publications {
maven(MavenPublication) {
if (project.gradle.startParameter.toString().contains("Debug")) {
artifact "${project.buildDir}/sophix/${project.name}-debug.sar"
artifactId "sar-debug"
} else {
artifact "${project.buildDir}/sophix/${project.name}-release.sar"
artifactId "sar-release"
}
}
}
repositories {
if (version.endsWith("-SNAPSHOT")) {
maven {
url "xxx" //构建产物仓库,使用客户内网仓库(emas外网测试snapshot产物仓库:http://nexus.emas-ha.cn:8081/repository/maven-snapshots/)
credentials {
username = "xxx"//"developer"
password = "xxx" //"RSs6KfAdXJOrA6rx"
}
}
} else {
maven {
url "xxx" //构建产物仓库,使用客户内网仓库(emas外网测试产物release仓库:http://nexus.emas-ha.cn:8081/repository/maven-releases/)
credentials {
username = "xxx"//"developer"
password = "xxx"//"RSs6KfAdXJOrA6rx"
}
}
}
}
}
这样就完成了所有gradle配置工作。
请参考移动热修复文档采用稳健接入方式进行接入。
执行以下脚本生成基线包并发布到仓库,版本号由平台自动传入。
./gradlew assembleRelease publish
执行以下脚本生成补丁包,打包插件会以当前构建的项目代码分支编译出新包,以指定的当前基线包版本号的包作为旧包(需要之前执行过生成基线包并发布到仓库),对新旧包做差异比较生成补丁。
./gradlew buildSophixPatchRelease
暂不提供,如需使用请联系我们,加入钉钉群:21710469 ,找管理员交流情况。
在文档使用中是否遇到以下问题
更多建议
匿名提交