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
出錯版本: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'
問題 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設定透明主題或者透明背景的方法嗎?
<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 我們進而進一步了解特性和亮點。
- Demo 源碼位址: https://github.com/alipay/mpaas-demo
- 公測申請