接入移动开发平台 mPaaS 有以下三种接入方式。本文将向您介绍这三种接入方式,并给出关于选择接入方式的建议。
-
原生 AAR 方式
-
mPaaS Inside 方式
-
组件化方式(Portal&Bundle)
目录
原生 AAR 方式
原生 AAR 接入方式 是指采用原生 Android AAR 打包方案,更贴近 Android 开发者的技术栈。开发者无需了解 mPaaS 相关的打包知识,通过 mPaaS Android Studio 插件,或者直接通过 Maven 的 pom 和 bom,即可将 mPaaS 集成到开发者的项目中来。该方式降低了开发者的接入成本,能够让开发者更轻松地使用 mPaaS,适合对 组件化(Portal&Bundle)接入方式 没有特别需求,想快速使用 mPaaS 能力的客户。
说明
原生 AAR 接入方式从 10.1.68 起开始支持。
mPaaS Inside 方式
mPaaS Inside 方式 是 组件化方式 到 原生 AAR 方式 的过渡方案。mPaaS Inside 方式 与 原生 AAR 方式 相比,在运行时代码层的使用上是一致的。区别在于打包方案不同。mPaaS Inside 方式 使用 mPaaS gradle 打包插件执行 dex 合并打包,而 原生 AAR 方式 使用 Android 原生的 AAR 打包方式。如果不是特别需要使用 mPaaS 打包方式,推荐使用上面的 原生 AAR 方式 打包。使用 mPaaS Inside 方式,需要引入 mPaaS gradle 打包工具,对 gradle 的版本以及 com.android.tools.build:gradle
版本都有一定的要求。
说明
-
mPaaS Inside 的方式从 10.1.60 起开始支持。
-
mPaaS Inside 接入方式即将废弃,如果是新用户,请优先选择使用 AAR 接入方式;如果已使用 mPaaS Inside 接入方式接入 mPaaS,请迁移至 AAR 接入方式。更多信息,请参见 升级 Inside 接入方式为 AAR 接入方式。
组件化方式(Portal&Bundle)
组件化方式 是指 mPaaS 基于 OSGi(Open Service Gateway Initiative,开放服务网关倡议)技术将一个 App 划分成业务独立的一个或多个 Bundle 工程以及一个 Portal 工程的框架。mPaaS 会对每个 Bundle 工程的生命周期和依赖加以管理,使用 Portal 工程把所有的 Bundle 工程包合并成一个可运行的 .apk
包。该方式适用于大型多人并行开发项目。使用 组件化方式,需要引入 mPaaS gradle 打包工具,对 gradle 版本以及com.android.tools.build:gradle
版本有一定的要求。
如何选择接入方式
如果使用 mPaaS 需要像使用其他 SDK 一样简单接入并使用,推荐使用 原生 AAR 方式。如果使用 mPaaS 来重构您的项目需要引入大规模并行研发的理念,推荐使用 组件化方式 。mPaaS Inside 是两者之间的过渡方案,无特殊需求,不再推荐。
接入方式对比
原生 AAR 接入 |
组件化接入 |
mPaaS Inside 接入 |
|
---|---|---|---|
来源 |
Google 官方接入方式。 |
源自支付宝。 |
源自支付宝,体验更贴近 AAR。 |
打包速度 |
三者之中打包最慢,和原生接入一模一样。 |
打包速度快,打包时间分散。 |
打包速度较快,Bundle 合并以及普通 Java 文件编译。 |
项目组成方式 |
App module 和 library module。 |
Portal(一个 App 的壳)和 Bundle(各种业务组件)。 |
Portal(APK 工程)和 Android Library(各种业务组件)。 |
依赖 Gradle 版本 |
可以升级到官方最新版本,目前是 Gradle 7.x。 |
4.4/6.3。不可自行升级。 |
4.4/6.3。不可自行升级。 |
依赖 AGP1 工具链 |
可以升级到官方最新版本,目前是 AGP 7.0.3。 |
AGP 3.0.1/3.5.x(不可自行升级到别的版本)。 |
AGP 3.0.1/3.5.x(不可自行升级到别的版本)。 |
Android Support Library |
可使用。 |
必须使用 mPaaS 提供的版本(23),不可自行升级。 |
可在 Portal 中 exclude mPaaS 的版本,自行接入 Android Support Library。 |
Android X |
完整支持2 |
不支持 |
不支持 |
databinding |
完整支持 |
v1 |
v1 |
kotlin |
完整支持 |
尽量不要使用 |
可使用 |
说明
-
Android Gradle Plugin,Android 打包用的 gradle 插件。
-
借助
android.enableJetifier=true
和android.useAndroidX=true
。