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

mPaaS 离线包是什么?

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

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


它解决什么问题?

  • 减少白屏

  • 解决 Hybrid App 跨平台兼容与适配

  • 提升 Hybrid App 性能

  • 原生开发下的包大小优化


下面开始 mPaaS H5 容器知识清单 · FAQ 第三期


1

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

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

  1. <activity

  2. android:name="com.alipay.mobile.nebulacore.ui.H5Activity"

  3. android:configChanges="orientation|keyboardHidden|navigation|screenSize|smallestScreenSize|screenLayout"

  4. android:exported="false"

  5. android:hardwareAccelerated="true"

  6. android:screenOrientation="landscape"

  7. android:windowSoftInputMode="adjustPan">

  8. <intent-filter>

  9. <action android:name="android.intent.action.MAIN" />

  10. <category android:name="android.intent.category.DEFAULT" />

  11. </intent-filter>

  12. </activity>


2

Window 下载 Demo 运行出错:`java.io.IOException:Unabletodeletefile`

  1. java.io.IOException: Unable to delete file: D:***\Desktop\mPass\mpaas-demo\mpaas-demo\mpaas_nebula_demo\mpaas_nebula_demo_android\app\build\intermediates\transforms\stripDebugSymbol\debug\0\lib\armeabi\libandroid-phone-thirdparty-utdid.so


  2. Unable to delete file: D:***\Desktop\mPass\mpaas-demo\mpaas-demo\mpaas_nebula_demo\mpaas_nebula_demo_android\app\build\intermediates\transforms\stripDebugSymbol\debug\0\lib\armeabi\libandroid-phone-thirdparty-utdid.so

答:

出错版本:

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:

  1. [MPNebulaAdapterInterface startTinyAppWithId:appId params:dic];

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

  1. NSString *appId = @"2017072607907880";

  2. UIViewController *vc =

  3. [[MPNebulaAdapterInterface shareInstance] createH5ViewControllerWithNebulaApp:@{

  4. @"appId": appId,

  5. @"chInfo" : @"MPPortal_home"

  6. }];

  7. [self.navigationController pushViewController:vc animated:YES];


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


答:

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

  1. [[NBServiceGet() appCenter] prepareApp:@"2017072607907880" version:nil process:^(NAMAppPrepareStep step, id info) {

  2. } finish:^(NAMApp *app, NSError *error) {

  3. dispatch_async(dispatch_get_main_queue(), ^{

  4. UIViewController *vc = [H5Service createWebViewController:@{@"appId": app.app_id,@"version":app.version} JSApis:nil withDelegate:nil];

  5. [self.navigationController pushViewController:vc animated:YES];

  6. });

  7. }];


4


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


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

  1. <activity

  2. android:name="com.alipay.mobile.nebulacore.ui.H5Activity"

  3. android:configChanges="orientation|keyboardHidden|navigation|screenSize|smallestScreenSize|screenLayout"

  4. android:theme="你的theme"

  5. android:exported="false"

  6. android:hardwareAccelerated="true"

  7. android:screenOrientation="portrait"

  8. android:windowSoftInputMode="adjustPan">

  9. <intent-filter>

  10. <action android:name="android.intent.action.MAIN" />

  11. <category android:name="android.intent.category.DEFAULT" />

  12. </intent-filter>

  13. </activity>


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

  • Demo 源码地址:

    https://github.com/alipay/mpaas-demo

  • 公测申请:

    http://mpaas2019.mikecrm.com/otOU1k1


 点击 “阅读原文” 立即申请 mPaaS H5 容器试用资格


往期阅读




长按识别二维码关注我们