全部产品
云市场
云游戏

客户端接入

更新时间:2019-10-21 10:43:46

一、概述

客户端针对不同的平台和技术方案,分别有:Sophix,WAX。下文只介绍Sophix集成和WAX集成。

SDK集成之前,需要在EMAS控制台创建产品和应用,并获取AppKey, 集成SDK时使用。

二、Sophix SDK集成(Android)

配置信息准备:

  • com.taobao.android.hotfix.IDSECRET: 对应EMAS平台上的应用Appkey
  • com.taobao.android.hotfix.APPSECRET: 对应EMAS平台上的应用AppSecret
  • 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)

开始接入

Demo参考

分支:dev_poc_light

配置插件

1、配置仓库信息(如在之前接入其他EMAS SDK时已配置可跳过)

(1)、项目根目录build.gradle添加maven emas sdk中心仓库用于拉取插件库(外网仓库)

  1. buildscript {
  2. repositories {
  3. // sdk中心仓库
  4. maven {
  5. url "http://nexus-ce.emas-poc.com/repository/maven-public/"
  6. credentials {
  7. username = "xxx"
  8. password = "xxx"
  9. }
  10. }
  11. ... ...
  12. }
  13. ... ...
  14. }

(2)、项目根目录build.gradle添加maven构建产物仓库,用于拉取每次发布的app基线包(一般为客户内部仓库)

  1. repositories {
  2. ... ...
  3. //构建产物仓库
  4. maven {
  5. url "xxx"
  6. credentials {
  7. username = "xxx"
  8. password = "xxx"
  9. }
  10. }
  11. // add end
  12. ... ...
  13. }

(3)、项目根目录新增一个common.gradle文件,文件内容如下,直接贴过去即可:

  1. def emas_version_name = getEnvValue('EMAS_VERSION_NAME')
  2. def emas_version_code = getEnvValue('EMAS_VERSION_CODE')
  3. def emas_base_version = getEnvValue('EMAS_BASE_VERSION')
  4. if (emas_version_code) {
  5. android.defaultConfig.versionCode = emas_version_code.toInteger()
  6. println("emas_version_code=" + emas_version_code)
  7. }
  8. if (emas_base_version) {
  9. println("emas_base_version=" + emas_base_version)
  10. }
  11. if (emas_version_name) {
  12. android.defaultConfig.versionName = emas_version_name
  13. println("emas_version_name=" + emas_version_name)
  14. }
  15. String getEnvValue(key) {
  16. return getEnvValue(key, null)
  17. }
  18. String getEnvValue(key, defValue) {
  19. def val = System.getProperty(key);
  20. if (null != val) {
  21. return val
  22. }
  23. val = System.getenv(key);
  24. if (null != val) {
  25. return val
  26. }
  27. return defValue
  28. }

(4)、在项目根目录build.gradle里面应用这个common.gradle

  1. apply from: 'common.gradle'

注:common.gradle中将从emas控制台读取的appverion设置到了android.defaultConfig.versionName。 所以需要将android { ... }里的verison的赋值语句去掉,避免android.defaultConfig.versionName被再次覆盖。

2、Sophix gradle插件配置

(1)、项目根目录build.gradle添加插件依赖坐标

  1. buildscript {
  2. ... ...
  3. dependencies {
  4. ... ...
  5. classpath 'com.taobao.android:sophix-emas-plugin:0.5.12'
  6. ... ...
  7. }
  8. ... ...
  9. }

(2)、apk工程目录的build.gradle里应用插件,紧接在原生插件(或者emas-plugin)之后

  1. apply plugin: 'com.android.application'
  2. apply plugin: 'com.taobao.sophix.emas' // add here

(3)、apk工程目录的build.gradle里配置基线包maven发布坐标和版本

  1. group = "xxx.xxx.xxx" //建议应用包名
  2. version = android.defaultConfig.versionName

(4)、apk工程目录的build.gradle里最后一步,添加基线包发布配置,

  1. apply plugin: 'maven'
  2. apply plugin: 'maven-publish'
  3. publishing {
  4. publications {
  5. maven(MavenPublication) {
  6. if (project.gradle.startParameter.toString().contains("Debug")) {
  7. artifact "${project.buildDir}/sophix/${project.name}-debug.sar"
  8. artifactId "sar-debug"
  9. } else {
  10. artifact "${project.buildDir}/sophix/${project.name}-release.sar"
  11. artifactId "sar-release"
  12. }
  13. }
  14. }
  15. repositories {
  16. if (version.endsWith("-SNAPSHOT")) {
  17. maven {
  18. url "xxx" //构建产物仓库,使用客户内网仓库(emas外网测试snapshot产物仓库:http://nexus.emas-ha.cn:8081/repository/maven-snapshots/)
  19. credentials {
  20. username = "xxx"//"developer"
  21. password = "xxx" //"RSs6KfAdXJOrA6rx"
  22. }
  23. }
  24. } else {
  25. maven {
  26. url "xxx" //构建产物仓库,使用客户内网仓库(emas外网测试产物release仓库:http://nexus.emas-ha.cn:8081/repository/maven-releases/)
  27. credentials {
  28. username = "xxx"//"developer"
  29. password = "xxx"//"RSs6KfAdXJOrA6rx"
  30. }
  31. }
  32. }
  33. }
  34. }

这样就完成了所有gradle配置工作。

代码初始化

请参考移动热修复文档采用稳健接入方式进行接入。

打包与补丁脚本

1、生成基线包

执行以下脚本生成基线包并发布到仓库,版本号由平台自动传入。

  1. ./gradlew assembleRelease publish
2、生成补丁包

执行以下脚本生成补丁包,打包插件会以当前构建的项目代码分支编译出新包,以指定的当前基线包版本号的包作为旧包(需要之前执行过生成基线包并发布到仓库),对新旧包做差异比较生成补丁。

  1. ./gradlew buildSophixPatchRelease

三、WAX SDK集成(iOS)

暂不提供,如需使用请联系我们,加入钉钉群:21710469 ,找管理员交流情况。

iOS SDK集成手册