Coder 投稿 | mPaaS 的多版本接入(Android)

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 如何在多版本的模式下,接入mPaaS

封面图1224.png

本文作者:mPaaS 用户「Q-Coder」

同时欢迎更多的开发者向 mPaaS 投稿

原文:blog.csdn.net/yqq577/article/details/116801705

前言

对于 mPaaS 的常规接入,这里就不赘述了。

因为比较简单,根据官方文档就可以完美接入了。或者可以在 Android Studio 中,接入 mPaaS 插件,这样可以更快、更方便的接入。

经历完上面的接入步骤,我以为看到了胜利的曙光。突然,CTO 跟 iOS 的同事说:

“Android 既然接好了,那 iOS 这边也接 mPaaS,不过 iOS 的难点是,公司项目采用了在一个 TARGETS 下可以打出多个应用,但一个 TARGETS 只能配置一个 mPaaS 的 config 文件。”(编者注:该问题可以通过手动替换配置文件和图片的方式解决,详情可钉钉搜索“33214637”咨询技术支持同学)

迟疑三秒后,我才发现 Android 当时我搭架构的时候,也是为了能提高开发效率,采用了相似的方式)。

就此,进入了本文解决“如何在多版本的模式下,接入 mPaaS”问题的【困难模式】。

困难模式

经过一系列的尝试(已经记不清耗时多久,反正给我造成了一定的压力),发现只需要在不同的 Build Variant(不同版本)下导入不同的 App 配置即可。

但是,这样很麻烦,每次打不同的 App 的时候,就要重新导入一次,这着实有点鸡肋。

然后,结合 mPaaS 官方的一个多环境下配置 mPaaS 的文档。在 gradle 下动态配置不同 App 的配置文件。

重头戏来了--官方 demo 中主 module 下的 gradle

//配置mPaaS App 开发环境,将 .config 配置文件拷贝到主Module下
def setAppConfigEnv(String type){

    //先把原有的配置文件删除
    File configFile = file("${rootDir}/app").listFiles().find{File f ->
        f.name.endsWith(".config")
    }
    if(configFile != null && configFile.exists()){
        delete(configFile)
    }
   //将不同目录下的文件,拷贝到壳项目下,用于打包
    copy {
        from "buildEnv/${type}"
        into "${rootDir}/app"
        include "**/*.config"
    }
}

这里贴出上面demo的目录结构,便于理解代码

20210514185002415.png

看完上面的代码,思路为:

  • 首先检查是否存在以.config为后缀的文件,如果有则删除。
  • 然后将新的配置文件copy到指定位置。

但是 demo 中,并不是动态的,因为 setAppConfigEnv('dev'),其实还是在代码中写死了。

所以,我们只需要动态的拿到Flavor的值就可以了。

def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
    Pattern pattern
    if (tskReqStr.contains("assemble"))
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")//Release和Debug这个具体根据自己的环境名进行填写
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher(tskReqStr)

    if (matcher.find())
        return matcher.group(1).toLowerCase()
    else {
        println "NO MATCH FOUND"
        return ""
    }
}

最后只需要在 buildTypes 像下面那样调用就行了

buildTypes {
    setAppConfigEnv(getCurrentFlavor())
    ...
}

万事大吉!

经历了这次事件,我觉得接下来要开始学习 Gradle 这个东西。熟悉 Gradle 对于后面的需求就能更好的应付了。

核心的内容都在上面了,如果还有一些细节上存在疑问。可以留言或者私信,我将很乐意为您解答。

笔记

在上面的历程中,用到了可能在多版本下,常用的方法。记录下来

  1. 如何获取当前 Flavor
def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

    Pattern pattern;

    if( tskReqStr.contains( "assemble" ) )
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher( tskReqStr )

    if( matcher.find() )
        return matcher.group(1).toLowerCase()
    else
    {
        println "NO MATCH FOUND"
        return "";
    }
}
  1. 如何获取当前 Flavor 的 applicationId
def getCurrentApplicationId() {
    def currFlavor = getCurrentFlavor()

    def outStr = ''
    android.productFlavors.all{ flavor ->

        if( flavor.name==currFlavor )
            outStr=flavor.applicationId
    }

    return outStr
}

年末拉个票

mPaaS 正在参加「2021稀土掘金年度人气创作团队榜单」,欢迎广大 mPaaS Coder 扫描下方二维码,为 mPaaS 投出您宝贵的一票。

988068DA-DEBB-4AB4-A9DE-571E605B7250-10923-00000746AAE21178.jpg

601a9798-77f7-44cb-bbc7-df9165513dd2.jpg


动态logo2.gif

相关文章
|
9月前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
137 0
|
9月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
133 2
|
9月前
|
移动开发 小程序 Android开发
mPaaS常见问题之pixel4 android 13 调用移动网关 报这个错如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
187 0
|
9月前
|
移动开发 监控 小程序
mPaaS 常见问题之Android 14uc内核不生效如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
存储 移动开发 数据库
安卓mpaas项目崩溃后本地存储的数据被清除的原因
安卓mpaas项目崩溃后本地存储的数据被清除的原因
129 2
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
167 2
|
Web App开发 小程序 安全
mPaaS 小程序介绍+接入 mPaaS 小程序并实现启动 Android 版(二)| 学习笔记
快速学习 mPaaS 小程序介绍+接入 mPaaS 小程序并实现启动 Android 版。
mPaaS 小程序介绍+接入 mPaaS 小程序并实现启动 Android 版(二)| 学习笔记
|
9月前
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
146 1
|
9月前
|
移动开发 监控 小程序
mPaaS常见问题之音视频通话微信小程序通话界面录制为画中画模式如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
128 0
|
9月前
|
小程序 安全 算法
mPaaS问题之使用小程序传参数报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
133 2

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    技术干货 | 轻松两步完成向 mPaaS 小程序传递启动参数
  • 相关产品

  • 移动开发平台 mPaaS