阿里云mpaas小程序框架接入流程和遇见的问题-umcrash依赖冲突解决

前言

好久没记录了,最近项目想像微信支付宝一样在应用内支持自己小程序开发,网络上各种搜索各种查找,发现没几个平台提供了小程序容器框架,最后只确定了俩个平台。

  1. 第一个就是阿里云平台提供的mpaas 框架中的小程序容器
    https://help.aliyun.com/document_detail/67441.html

  2. 第二个就是凡泰极客提供的小程序功能
    https://www.finclip.com/mop/document/

技术选择

以上俩个平台各有优缺点

平台 优势 劣势
阿里云mpaas 大平台,生态圈完善(小程序开发完善(各种UI框架),mpaas控制台动态下发更新小程序) 接入复杂,包体积增大至少20M
凡泰极客 文档简单,接入简单 小公司,生态圈不完善,小程序代码翻版微信小程序

基于以上,各种对比后,当然最后还是要管理拍板,更加倾向于阿里云,无他,更加信任大厂,还是就是凡泰的小程序不知道有没有未知的风险,因为凡泰小程序代码和微信小程序代码命名基本一致。

下面进入重点,接入mpaas的踩坑过程,因为阿里云的文档实在是感觉太混乱了,而且相对复杂,最终耗费好久才接入成功。插一句,如果要接入有问题可以加官方钉钉群:32843812(ps:群里有技术人员回复,比工单快,然而仅限于让你参考xx文档,不够有人回答总比没人好)

接入小程序框架流程如下:
接入前提:gradle版本4.0.0,gradle-6.5-all.zip, mpass项目对gradle版本有要求,7.0版本编译各种问题,建议大家使用4.0.0,AndroidStudio安不安装mpaas插件都没关系,不安装按照下面流程也没问题! mpaas后台那套配置按照他的文档就可以,https://help.aliyun.com/document_detail/67839.html,重点提一下,mpaas后台包名和开发要一致,UC内核申请签名要一致

项目build.gradle文件下设置

 dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
}

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip

ok,下面正式接入:

  1. 接入mpaas ,总共三种方式,官方建议使用aar方式接入,确实这种方式最简单方便,项目build.gradle文件下设置:
apply plugin: 'com.alipay.apollo.optimize'
buildscript {
    ext.mpaas_artifact = "mpaas-baseline"
    ext.mpaas_baseline = "10.1.68-34"

    repositories {
        google()
        jcenter()
        maven {
            url 'https://mvn.cloud.alipay.com/nexus/content/repositories/releases/'
            name 'alipay'
            credentials {
                username 'mvn_read_ws'
                password 'mrk8929'
            }
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
        classpath 'com.android.boost.easyconfig:easyconfig:2.5.9'
    }
}
allprojects {
    repositories {
        maven {
            url 'https://mvn.cloud.alipay.com/nexus/content/repositories/releases/'
            name 'alipay'
            credentials {
                username 'mvn_read_ws'
                password 'mrk8929'
            }
        }
        google()
        jcenter()
    }
}


  1. 接入小程序
    app module下的gradle文件新增:
apply plugin: 'com.alipay.apollo.baseline.config'


dependencies {
    // mPaaS 基线
    api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline")
    // 小程序
    api 'com.mpaas.android:tinyapp'
}

因为接入小程序后整个项目打包体积大概增加50M,主要是因为使用了UC内核,所以为了优化体积,只考虑armeabi-v7a(如果某些手机发生不兼容奔溃问题,考虑是不是自己选择的armeabi架构),这样大概节约30M体积。


android {

    defaultConfig {

        ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters 'armeabi-v7a'
        }
}
}

添加mpaas混淆,混淆文件是从扫码demo拿来的,它自己的小程序demo没有。https://github.com/mpaas-demo/android-scan/blob/master/app/mpProguard.cfg

  buildTypes {
        release {
            minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro','mpProguard.cfg'
        }

将从后台下载的配置文件Ant-mpaas-xxx-default-Android.config放在app module根目录下,
custom_config.json配置文件放在assets下的config文件夹中,
AndroidManifest.xml中配置

        <meta-data
            android:name="nebula.android.meta.enable"
            android:value="true" />
        <meta-data
            android:name="UCSDKAppKey"
            android:value="24d6uLLNOnAjjc2hzj0XGDztOyyncPI8JDNTIHPf5OKFg4sLuyAYuXqJkn0L8oxfP8SDKt9+R0c9QX7CK9iogw==" />
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
mpaas微信截图_20210823094116.png

最后,在appication中初始化:

public class MyApplication extends Application {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        // mPaaS 初始化回调设置
        QuinoxlessFramework.setup(this, new IInitCallback() {
            @Override
            public void onPostInit() {
                // 初始化小程序公共资源包
                H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(),new TinyAppCenterPresetProvider());

            }
        });

    }
    @Override
    public void onCreate() {
        super.onCreate();
        // mPaaS 初始化
        QuinoxlessFramework.init();
    }
}

在页面中启动小程序:

    MPNebula.startApp("12313131231231231")

遇见的问题

1.依赖冲突:因为阿里云mpaas会引入很多第三方依赖,比如高德地图,utdid等,具体解决见文档:https://help.aliyun.com/document_detail/164960.html
然而,mpaas和友盟(api 'com.umeng.umsdk:apm:1.4.1')的冲突阿里云文档上是没有解决方案的,具体冲突是因为异常那块都引入了,解决方案如下:
下载umeng apm的aar文件,下载地址:https://developer.umeng.com/sdk/android ,选择 应用性能监控 SDK下载,下载后修改umeng-apm-armeabi-v1.4.2.aar的后缀为zip解压,删除其中libs目录下的的crashsdk-3.3.0.0-umeng.jar以及jni目录下的libcrashsdk.so文件,然后整体再压缩打包修改后缀为aar,引入本地aar替换api 'com.umeng.umsdk:apm:1.4.2' 依赖,解决umcrash冲突完成。

2.mpaas控制台的包名一定要和本地引入mpaas项目的一致,而且一定要在相同包名路径的module引入mpaas和小程序,否则会导致各种问题,比如启动奔溃,报错invoke logger xxx等等。还有就是小程序一定要使用自己mpaas的项目下的小程序,否则启动失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容