美文网首页
阿里云mpaas小程序框架接入流程和遇见的问题-umcrash依

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

作者: Alden_Lei | 来源:发表于2021-08-23 11:55 被阅读0次

    前言

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

    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的项目下的小程序,否则启动失败。

    相关文章

      网友评论

          本文标题:阿里云mpaas小程序框架接入流程和遇见的问题-umcrash依

          本文链接:https://www.haomeiwen.com/subject/eowtiltx.html