mPaaS iOS pod版

1,480 阅读3分钟

mPaaS iOS Demo 库 pod版本

mPaaS 已开源mPaaS 官方在掘金已发布多篇介绍文章,其中Demo 开源后专门发布了一篇Demo文章 mPaaS Demo

mPaas 框架介绍

mPaas 是一个优秀的框架

官方这样介绍它:

mPaaS iOS 框架源自支付宝客户端的开发框架,基于 Framework 的设计思想,将业务隔离成相对独立的模块,并着力追求模块与模块之间高內聚和低耦合。

该框架直接接管应用的生命周期,负责整个应用启动托管、应用生命周期管理、处理与分发 UIApplication 的代理事件、统一管理各业务模块(微应用和服务)等。

而且mPaas历史渊源比较长久 参照有天猫开源的 BeeHive

市面有工程中也有使用了这种方案 例如各种XXAppDelegate模块化瘦身 XXModuleManager iOS模块管理工具 等这些代码思想都跟 BeeHive差不多 这里也做了收集

mPaas Demo 运行

官方提供 Demo 需要运行mPaas插件和访问阿里云服务器,对于在公司访问github都要开墙实在是不方便, 因此对mPaas框架代码做了本地cocoaPad处理 ,在公司就可以方便的使用研究 mPaas

先看效果: 移动框架Demo

移动框架Demo

AntUI Demo

AntUI 详细Demo

mPaas 本地Pod化

mPaas使用插件管理组件, 我上传的Demo通过其插件获取了.framework组件 将其pod化使之能够本地运行

开发中 mPaas 核心组件如下

mPaas 核心组

  s.vendored_frameworks = [
                              'mPaas/*/*.framework',
                              
                      ]
  s.frameworks = 'CoreTelephony', 'SystemConfiguration' ,'Accelerate','SystemConfiguration'
  s.libraries = 'xml2', 'sqlite3', 'resolv', 'z', 'stdc++'
   

启动依赖

    main 函数入口设置:
    return UIApplicationMain(argc, argv, @"DFApplication", @"DFClientDelegate");
    
   APMobileFramework.framework更新到对应的bundle
   APMobileFramework.bundle/DefaultMobileRuntime.plist 

MobileRuntime.plist 的注册

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Launcher</key>
 <string>Launcher</string>
 <key>Services</key>
 <array>
 	<dict>
 		<key>welcomPageAfterLoading</key>
 		<string>true</string>
 		<key>name</key>
 		<string>BizAService</string>
 		<key>lazyLoading</key>
 		<string>true</string>
 		<key>class</key>
 		<string>MPFrameworkBizAServiceImpl</string>
 	</dict>
 </array>
 <key>Applications</key>
 <array>
 	<dict>
 		<key>delegate</key>
 		<string>MPLauncherAppDelegate</string>
 		<key>description</key>
 		<string>Launcher</string>
 		<key>name</key>
 		<string>Launcher</string>
 	</dict>
 	<dict>
 		<key>delegate</key>
 		<string>MPFrameworkBizAAppDelegate</string>
 		<key>description</key>
 		<string>FrameworkBizA</string>
 		<key>name</key>
 		<string>66600001</string>
 	</dict>
 	<dict>
 		<key>delegate</key>
 		<string>MPFrameworkBizBAppDelegate</string>
 		<key>description</key>
 		<string>FrameworkBizB</string>
 		<key>name</key>
 		<string>66600002</string>
 	</dict>
 	<dict>
 		<key>delegate</key>
 		<string>MPFrameworkBizCAppDelegate</string>
 		<key>description</key>
 		<string>FrameworkBizC</string>
 		<key>name</key>
 		<string>66600003</string>
 	</dict>
 	<dict>
 		<key>delegate</key>
 		<string>MPTestAppDelegate</string>
 		<key>description</key>
 		<string>2006</string>
 		<key>name</key>
 		<string>20000002</string>
 	</dict>
 	<dict>
 		<key>delegate</key>
 		<string>MPLifeAppDelegate</string>
 		<key>description</key>
 		<string>2020</string>
 		<key>name</key>
 		<string>20000222</string>
 	</dict>
 </array>
 <key>ServicesMap</key>
 <dict>
 	<key>[AUTOSTART]</key>
 	<array/>
 </dict>
</dict>
</plist>

官方提供H5 扫码等组件, 也可按此引入framework 搭积木的开发

mPaas 彩蛋

iOS ViewController控制器一般分两种 , 一种用于展示视图, 另一种用于控制ViewController,如UINavigationController ,UITabBarController等 以前流行过得左边抽屉样式MMDrawerController 在官方mPaas temple中也出现了

 路径: /.mPaaSCocoaPodsPlugin/templates/APMobileFramework/AutoConfig/
  
  MPDrawerLauncherAppDelegate.m
  MPDrawerController
  MPDrawerMainViewController
   
 引入MPDrawerLauncherAppDelegate 并在MobileRuntime.plist 的注册
 satrt  MPDrawerLauncherAppDelegate 就可以看到了

templates

github

Demo push github

 https://github.com/macbookpro2100/ink_Swift
 包含DoraemonKit性能监控和部分Swift练习代码请忽略🙈

Demo均取自官方Demo