开发者社区 问答 正文

应用研发平台EMAS中flutter怎么接入热修复,没找到文档?

应用研发平台EMAS中flutter怎么接入热修复,没找到文档?

展开
收起
真的很搞笑 2024-03-19 21:14:26 82 分享 版权
阿里云 AI 助理回答

在应用研发平台EMAS中,Flutter接入热修复的具体文档可能未直接提供,但可以根据现有知识库中的资料进行配置和操作。以下是详细的接入步骤和注意事项:


1. 前提条件

在接入热修复之前,请确保以下条件已满足: - 已创建RAM用户,并为其授权移动热修复的权限(如AliyunHotfixFullAccessAliyunHotfixReadOnlyAccess)。 - 已开通EMAS服务,并完成项目的创建和应用的初始化。


2. 配置Android端

2.1 添加权限

AndroidManifest.xml中添加必要的权限声明,例如:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

注意READ_EXTERNAL_STORAGE权限属于危险权限,仅用于调试工具加载本地补丁,线上发布的补丁加载不受影响。请确保在Android 6.0及以上版本中动态申请运行时权限。

2.2 配置Meta-data

AndroidManifest.xml<application>节点下添加以下配置:

<meta-data android:name="com.taobao.android.hotfix.IDSECRET" android:value="App ID" />
<meta-data android:name="com.taobao.android.hotfix.APPSECRET" android:value="App Secret" />
<meta-data android:name="com.taobao.android.hotfix.RSASECRET" android:value="RSA密钥" />

将上述value值替换为通过EMAS平台申请的App IDApp SecretRSA密钥。出于安全考虑,建议使用setSecretMetaData方法进行设置。

2.3 混淆配置

如果项目启用了代码混淆,请在proguard-rules.pro文件中添加以下规则:

# 保留Sophix相关类
-keep class com.taobao.sophix.** { *; }
-keep class com.ta.utdid2.device.** { *; }

# 防止优化导致问题
-dontoptimize

重要提示:生成修复包时需使用旧包的mapping.txt文件以保证混淆结果一致。若开启了R8优化,请关闭R8并改用ProGuard进行混淆。


3. 配置iOS端

3.1 解决Flutter iOS混编问题

在iOS项目中引入Flutter后,可能会遇到安装Debug包时无法启动的问题。解决方案如下: 1. 使用Xcode打开工程项目。 2. 在Build Settings的最下方找到User-Defined,点击+按钮,添加一个键为FLUTTER_BUILD_MODE。 - Debug模式下设置为profile。 - Release模式下设置为release。 3. 如果是通过云构建提交到移动测试的包,确保导出的ipa包使用for development方式。

3.2 注意事项

  • Flutter的Debug包和Release包是Flutter自身的调试概念,而ipa的Debug和Release模式则是Apple证书的区别。
  • 测试平台要求上传Debug版本包,因为只有Debug包可以通过重签名在任意设备上安装。

4. 热修复接入检查

在完成上述配置后,请按照以下CheckList进行检查,以确保热修复功能正常工作: 1. 混淆检查:若启用了代码混淆,发布版本后妥善保存mapping.txt文件,不能修改。 2. 加固检查:若使用了加固工具(如梆梆加固),需保存加固前的APK,并配置忽略sophix文件夹。 3. 资源优化检查:在gradle.properties中新增android.enableResourceOptimizations=false,避免资源优化导致代码比对异常。 4. 初始化检查:确保SophixStubApplication类是Java原生的,且不与其他类有互相调用逻辑。 5. 隐私合规检查:调用queryAndLoadNewPatch()方法时,请确保在隐私判断之后执行。


5. 补丁管理与发布

5.1 新建发布

  1. 登录EMAS管理控制台。
  2. 进入目标项目的研发工具 > 移动热修复 > 补丁管理页面。
  3. 选择应用版本,单击待发布补丁右侧的发布按钮。
  4. 在弹出的发布选项对话框中,配置以下参数:
    • 发布类型:支持灰度发布和全量发布。
    • 发布人数:灰度发布时可设置可供设备请求更新补丁的次数。
    • 指定标签:设置灰度附带的标签条件,仅符合条件的设备可请求更新补丁。
  5. 配置完成后,单击确定完成发布。

5.2 回滚补丁

若需要回滚补丁,可通过以下两种方式进行: - 全部回滚:撤销全部补丁,将应用回滚至基线版本。 - 版本回滚:选择具体的历史补丁版本进行回滚,仅支持已全量发布过的版本。


6. 注意事项

  • 基础包与修复包一致性:基础包、修复包、补丁包的版本号必须一致。若基础包修改了代码并在其他渠道发布,建议升级版本号,否则可能导致加载补丁失败。
  • 打包机一致性:建议使用同一台打包机生成基础包和修复包,避免因打包机更换导致代码对比出错。

通过以上步骤,您可以成功在Flutter项目中接入EMAS的热修复功能。若有进一步问题,请参考EMAS官方文档或联系技术支持团队。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答