mPaaS H5 容器知识清单 | FAQ · 第三期

mPaaS H5 容器知识清单 | FAQ · 第三期

mPaaS 离线包是什么?

Hybrid 开发模式已不是什么新鲜的话题,不仅可以快速发布新业务,同时无需考虑 App 发版时间,为业务更新迭代提供了极强的灵活性。相比于 Web 开发,Hybrid 开发模式提供了丰富的设备 API,让业务形态可以更加多元和丰富。

mPaaS 离线包源自于支付宝原生方案,经历了严苛的业务考验,让你直接和支付宝使用同一套框架层代码,拥有统一容器及内核,相对系统内核获取更低 Crash 率和 ANR 率,适配性强,并具备良好的、弹性的扩展能力,结合具体业务需求定制 JSAPI。

它解决什么问题?

  • 减少白屏
  • 解决 Hybrid App 跨平台兼容与适配
  • 提升 Hybrid App 性能
  • 原生开发下的包大小优化

问题 1:原生 Webview 可以随着手机转成横屏而显示横屏,但 UCWebview 好像默认就是竖屏,如何设置成横屏显示?

答:在你的 manifest 中加入如下代码即可:

<activity
            android:name="com.alipay.mobile.nebulacore.ui.H5Activity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize|smallestScreenSize|screenLayout"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:screenOrientation="landscape"
            android:windowSoftInputMode="adjustPan">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

问题 2:Window 下载 Demo 运行出错:java.io.IOException: Unable to delete file

具体报错信息:

java.io.IOException: Unable to delete file: D:*DesktopmPassmpaas-demompaas-demompaas_nebula_demompaas_nebula_demo_androidappbuildintermediatestransformsstripDebugSymboldebug0libarmeabilibandroid-phone-thirdparty-utdid.so

Unable to delete file: D:*DesktopmPassmpaas-demompaas-demompaas_nebula_demompaas_nebula_demo_androidappbuildintermediatestransformsstripDebugSymboldebug0libarmeabilibandroid-phone-thirdparty-utdid.so

mPaaS H5 容器知识清单 | FAQ · 第三期

出错版本:classpath 'com.alipay.android:android-gradle-plugin:3.0.0.7.25'
修改为classpath 'com.alipay.android:android-gradle-plugin:3.0.0.8.0'则不报该问题,可见更新新版本即可解决。

答:出错版本:classpath 'com.alipay.android:android-gradle-plugin:3.0.0.7.25'
修改为classpath 'com.alipay.android:android-gradle-plugin:3.0.0.8.0'则不报该问题,可见更新新版本即可解决。

问题 3:如何获得小程序的VC,自定义转场等

  • 小程序版本: 10.1.60

目前仅发现如下方式直接打开小程序, 是否有更灵活的方式操作小程序的容器 VC

[MPNebulaAdapterInterface startTinyAppWithId:appId params:dic];

使用以下方式打开Demo中小程序的内置离线包,会一直报错底部的错误

NSString *appId = @"2017072607907880";
UIViewController *vc =
[[MPNebulaAdapterInterface shareInstance] createH5ViewControllerWithNebulaApp:@{
                                                                                @"appId": appId,
                                                                                @"chInfo" : @"MPPortal_home"
                                                                                }];
[self.navigationController pushViewController:vc animated:YES];

[mPaaSTinyApp] H5_JSC_Execute_Error:{

logStr = "ReferenceError: Can't find variable: window{n "line": 1,n "column": 10,n "sourceURL": "https://error.alipay.com/"n}";
}

答:
上述 createH5ViewControllerWithNebulaApp 目前暂不支持基于小程序创建vc,下个版本会修复。
您可以使用以下方法,基于小程序创建一个 viewcontroller

[[NBServiceGet() appCenter] prepareApp:@"2017072607907880" version:nil process:^(NAMAppPrepareStep step, id info) {
} finish:^(NAMApp *app, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
UIViewController *vc = [H5Service createWebViewController:@{@"appId": app.app_id,@"version":app.version} JSApis:nil withDelegate:nil];
[self.navigationController pushViewController:vc animated:YES];
});
}];

问题 4:Android有可以给容器所在activity设置透明主题或者透明背景的方法吗?

答:在你的 manifest 中加入如下代码即可:

<activity
            android:name="com.alipay.mobile.nebulacore.ui.H5Activity"   
android:configChanges="orientation|keyboardHidden|navigation|screenSize|smallestScreenSize|screenLayout"
            android:theme="你的theme"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

目前 mPaaS H5 容器 Demo 源码已发布,欢迎 Star 我们从而进一步了解特性和亮点。

mPaaS H5 容器知识清单 | FAQ · 第三期

上一篇:Android开发优化之——使用软引用和弱引用


下一篇:mPaaS H5 容器知识清单 | FAQ · 第一期