You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ji...@apache.org on 2017/01/24 08:18:38 UTC

[23/50] [abbrv] incubator-weex git commit: + [ios] iOS init.

+ [ios] iOS init.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/185fe55c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/185fe55c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/185fe55c

Branch: refs/heads/master
Commit: 185fe55c4af5688dbc7b498256c4f3509b944796
Parents: bb46720
Author: boboning <ni...@163.com>
Authored: Sun Jun 12 23:12:06 2016 +0800
Committer: boboning <ni...@163.com>
Committed: Sun Jun 12 23:12:06 2016 +0800

----------------------------------------------------------------------
 README.md                                       |    2 +-
 ios/playground/CFNetwork.gcno                   |  Bin 0 -> 12900 bytes
 ios/playground/CoreGraphics.gcno                |  Bin 0 -> 2348 bytes
 ios/playground/Foundation.gcno                  |  Bin 0 -> 4020 bytes
 ios/playground/ObjectiveC.gcno                  |  Bin 0 -> 24364 bytes
 ios/playground/Podfile                          |   11 +
 ios/playground/QuartzCore.gcno                  |  Bin 0 -> 13724 bytes
 ios/playground/README.md                        |    0
 .../WeexDemo.xcodeproj/project.pbxproj          |  882 +++++++++
 .../xcshareddata/xcschemes/WeexDemo.xcscheme    |  111 ++
 .../xcschemes/WeexUITestDemo.xcscheme           |   91 +
 ios/playground/WeexDemo/AppDelegate.h           |   16 +
 ios/playground/WeexDemo/AppDelegate.m           |  192 ++
 .../AppIcon.appiconset/Contents.json            |   86 +
 .../AppIcon.appiconset/Icon-40.png              |  Bin 0 -> 2169 bytes
 .../AppIcon.appiconset/Icon-40@2x.png           |  Bin 0 -> 5276 bytes
 .../AppIcon.appiconset/Icon-40@3x.png           |  Bin 0 -> 8588 bytes
 .../AppIcon.appiconset/Icon-60@2x.png           |  Bin 0 -> 8588 bytes
 .../AppIcon.appiconset/Icon-60@3x.png           |  Bin 0 -> 13818 bytes
 .../AppIcon.appiconset/Icon-76.png              |  Bin 0 -> 4899 bytes
 .../AppIcon.appiconset/Icon-76@2x.png           |  Bin 0 -> 11268 bytes
 .../AppIcon.appiconset/Icon-83.5@2x.png         |  Bin 0 -> 12556 bytes
 .../AppIcon.appiconset/Icon-Small.png           |  Bin 0 -> 1354 bytes
 .../AppIcon.appiconset/Icon-Small@2x.png        |  Bin 0 -> 3552 bytes
 .../AppIcon.appiconset/Icon-Small@3x.png        |  Bin 0 -> 5772 bytes
 .../Brand Assets.launchimage/Contents.json      |   36 +
 .../WeexDemo/Assets.xcassets/Contents.json      |    6 +
 .../Assets.xcassets/back.imageset/Contents.json |   23 +
 .../Assets.xcassets/back.imageset/back.png      |  Bin 0 -> 1244 bytes
 .../Assets.xcassets/back.imageset/back@2x.png   |  Bin 0 -> 1646 bytes
 .../Assets.xcassets/back.imageset/back@3x.png   |  Bin 0 -> 2179 bytes
 .../reload.imageset/Contents.json               |   23 +
 .../Assets.xcassets/reload.imageset/reload.png  |  Bin 0 -> 542 bytes
 .../reload.imageset/reload@2x.png               |  Bin 0 -> 1037 bytes
 .../reload.imageset/reload@3x.png               |  Bin 0 -> 1516 bytes
 .../Assets.xcassets/scan.imageset/Contents.json |   23 +
 .../Assets.xcassets/scan.imageset/scan.png      |  Bin 0 -> 1344 bytes
 .../Assets.xcassets/scan.imageset/scan@2x.png   |  Bin 0 -> 2458 bytes
 .../Assets.xcassets/scan.imageset/scan@3x.png   |  Bin 0 -> 3723 bytes
 .../WeexDemo/Base.lproj/LaunchScreen.storyboard |   26 +
 .../WeexDemo/DemoBaseViewController.h           |   13 +
 .../WeexDemo/DemoBaseViewController.m           |   34 +
 ios/playground/WeexDemo/DemoDefine.h            |   28 +
 ios/playground/WeexDemo/Info.plist              |   65 +
 ios/playground/WeexDemo/Scanner/WXScannerVC.h   |   14 +
 ios/playground/WeexDemo/Scanner/WXScannerVC.m   |  170 ++
 .../WeexDemo/UIViewController+WXDemoNaviBar.h   |   23 +
 .../WeexDemo/UIViewController+WXDemoNaviBar.m   |  103 +
 ios/playground/WeexDemo/WXDemoViewController.h  |   21 +
 ios/playground/WeexDemo/WXDemoViewController.m  |  217 +++
 .../WeexDemo/debug/WXATLoggerPlugin.h           |   14 +
 .../WeexDemo/debug/WXATLoggerPlugin.m           |   54 +
 .../WeexDemo/debug/WXATViewHierarchyPlugin.h    |   14 +
 .../WeexDemo/debug/WXATViewHierarchyPlugin.m    |   43 +
 .../extend/component/WXSelectComponent.h        |   14 +
 .../extend/component/WXSelectComponent.m        |  138 ++
 .../extend/handler/WXImgLoaderDefaultImpl.h     |   13 +
 .../extend/handler/WXImgLoaderDefaultImpl.m     |   52 +
 .../WeexDemo/extend/module/WXEventModule.h      |   15 +
 .../WeexDemo/extend/module/WXEventModule.m      |   36 +
 ios/playground/WeexDemo/main.m                  |   16 +
 ios/playground/WeexDemo/weex-icon.png           |  Bin 0 -> 53574 bytes
 ios/playground/WeexDemoTests/Info.plist         |   24 +
 ios/playground/WeexDemoTests/WeexDemoTests.m    |   39 +
 ios/playground/WeexUITestDemo-Info.plist        |   52 +
 ios/playground/WeexUITestDemoUITests/Info.plist |   24 +
 .../WeexUITestDemoUITests.m                     |   40 +
 ios/playground/weex.png                         |  Bin 0 -> 3187 bytes
 ios/playground/weex@2x.png                      |  Bin 0 -> 7294 bytes
 ios/sdk/LICENSE                                 |  202 ++
 ios/sdk/NOTICE                                  |   13 +
 ios/sdk/README.md                               |    0
 ios/sdk/WeexSDK.podspec                         |   33 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       | 1400 ++++++++++++++
 .../xcshareddata/xcschemes/WeexSDK.xcscheme     |   99 +
 .../xcschemes/WeexSDK_xcode7.xcscheme           |   80 +
 ios/sdk/WeexSDK/Info.plist                      |   26 +
 ios/sdk/WeexSDK/Resources/main.js               |    4 +
 .../WeexSDK/Sources/Bridge/WXBridgeContext.h    |   91 +
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    |  372 ++++
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.h |   13 +
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |  133 ++
 .../WeexSDK/Sources/Bridge/WXWebSocketBridge.h  |   15 +
 .../WeexSDK/Sources/Bridge/WXWebSocketBridge.m  |  203 ++
 .../WeexSDK/Sources/Component/WXAComponent.h    |   13 +
 .../WeexSDK/Sources/Component/WXAComponent.m    |   75 +
 .../WeexSDK/Sources/Component/WXCellComponent.h |   18 +
 .../WeexSDK/Sources/Component/WXCellComponent.m |   93 +
 .../Sources/Component/WXComponent_internal.h    |  163 ++
 .../WeexSDK/Sources/Component/WXDivComponent.h  |   13 +
 .../WeexSDK/Sources/Component/WXDivComponent.m  |   16 +
 .../Sources/Component/WXEmbedComponent.h        |   15 +
 .../Sources/Component/WXEmbedComponent.m        |  175 ++
 .../Sources/Component/WXImageComponent.h        |   13 +
 .../Sources/Component/WXImageComponent.m        |  234 +++
 .../Sources/Component/WXIndicatorComponent.h    |   33 +
 .../Sources/Component/WXIndicatorComponent.m    |  186 ++
 .../WeexSDK/Sources/Component/WXListComponent.h |   24 +
 .../WeexSDK/Sources/Component/WXListComponent.m |  296 +++
 .../Sources/Component/WXLoadingComponent.h      |   17 +
 .../Sources/Component/WXLoadingComponent.m      |  137 ++
 .../Sources/Component/WXLoadingIndicator.h      |   17 +
 .../Sources/Component/WXLoadingIndicator.m      |   78 +
 .../Sources/Component/WXRefreshComponent.h      |   17 +
 .../Sources/Component/WXRefreshComponent.m      |  143 ++
 .../Sources/Component/WXScrollerComponent.h     |   25 +
 .../Sources/Component/WXScrollerComponent.m     |  579 ++++++
 .../Sources/Component/WXSliderComponent.h       |   18 +
 .../Sources/Component/WXSliderComponent.m       |  446 +++++
 .../Sources/Component/WXSwitchComponent.h       |   13 +
 .../Sources/Component/WXSwitchComponent.m       |   89 +
 .../WeexSDK/Sources/Component/WXTextComponent.h |   13 +
 .../WeexSDK/Sources/Component/WXTextComponent.m |  365 ++++
 .../Sources/Component/WXTextInputComponent.h    |   14 +
 .../Sources/Component/WXTextInputComponent.m    |  385 ++++
 ios/sdk/WeexSDK/Sources/Component/WXTransform.h |   20 +
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m |  216 +++
 .../Sources/Component/WXVideoComponent.h        |   34 +
 .../Sources/Component/WXVideoComponent.m        |  293 +++
 .../WeexSDK/Sources/Component/WXWebComponent.h  |   21 +
 .../WeexSDK/Sources/Component/WXWebComponent.m  |  183 ++
 .../Sources/Controller/WXBaseViewController.h   |   35 +
 .../Sources/Controller/WXBaseViewController.m   |  186 ++
 .../Sources/Controller/WXRootViewController.h   |   33 +
 .../Sources/Controller/WXRootViewController.m   |   21 +
 ios/sdk/WeexSDK/Sources/Debug/WXDebugTool.h     |   28 +
 ios/sdk/WeexSDK/Sources/Debug/WXDebugTool.m     |  115 ++
 .../Sources/Display/WXComponent+Display.h       |   13 +
 .../Sources/Display/WXComponent+Display.m       |  463 +++++
 .../WeexSDK/Sources/Display/WXDisplayQueue.h    |   16 +
 .../WeexSDK/Sources/Display/WXDisplayQueue.m    |   45 +
 ios/sdk/WeexSDK/Sources/Display/WXLayer.h       |   13 +
 ios/sdk/WeexSDK/Sources/Display/WXLayer.m       |   21 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h    |   89 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  186 ++
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h     |   45 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m     |   63 +
 .../WeexSDK/Sources/Events/WXComponent+Events.h |   13 +
 .../WeexSDK/Sources/Events/WXComponent+Events.m |  621 ++++++
 .../Sources/Handler/WXNavigationDefaultImpl.h   |   14 +
 .../Sources/Handler/WXNavigationDefaultImpl.m   |  353 ++++
 .../Sources/Handler/WXNetworkDefaultImpl.h      |   14 +
 .../Sources/Handler/WXNetworkDefaultImpl.m      |  105 +
 ios/sdk/WeexSDK/Sources/Layout/Layout.c         | 1324 +++++++++++++
 ios/sdk/WeexSDK/Sources/Layout/Layout.h         |  177 ++
 .../WeexSDK/Sources/Layout/WXComponent+Layout.h |   13 +
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |  296 +++
 .../WeexSDK/Sources/Manager/WXBridgeManager.h   |  119 ++
 .../WeexSDK/Sources/Manager/WXBridgeManager.m   |  239 +++
 .../Sources/Manager/WXComponentFactory.h        |   35 +
 .../Sources/Manager/WXComponentFactory.m        |  139 ++
 .../Sources/Manager/WXComponentManager.h        |  138 ++
 .../Sources/Manager/WXComponentManager.m        |  545 ++++++
 .../WeexSDK/Sources/Manager/WXHandlerFactory.h  |   29 +
 .../WeexSDK/Sources/Manager/WXHandlerFactory.m  |   49 +
 .../WeexSDK/Sources/Manager/WXModuleFactory.h   |   49 +
 .../WeexSDK/Sources/Manager/WXModuleFactory.m   |  225 +++
 .../WeexSDK/Sources/Manager/WXModuleManager.h   |   16 +
 .../WeexSDK/Sources/Manager/WXModuleManager.m   |  139 ++
 ios/sdk/WeexSDK/Sources/Manager/WXSDKManager.h  |   41 +
 ios/sdk/WeexSDK/Sources/Manager/WXSDKManager.m  |   73 +
 ios/sdk/WeexSDK/Sources/Model/WXBridgeMethod.h  |   24 +
 ios/sdk/WeexSDK/Sources/Model/WXBridgeMethod.m  |   41 +
 .../Sources/Model/WXComponent+Navigation.h      |   22 +
 .../Sources/Model/WXComponent+Navigation.m      |  178 ++
 ios/sdk/WeexSDK/Sources/Model/WXComponent.h     |  310 +++
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |  288 +++
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h   |  200 ++
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |  314 +++
 .../Sources/Model/WXSDKInstance_private.h       |   22 +
 .../WeexSDK/Sources/Module/WXAnimationModule.h  |   14 +
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |   75 +
 ios/sdk/WeexSDK/Sources/Module/WXDomModule.h    |   13 +
 ios/sdk/WeexSDK/Sources/Module/WXDomModule.m    |  148 ++
 ios/sdk/WeexSDK/Sources/Module/WXInstanceWrap.h |   13 +
 ios/sdk/WeexSDK/Sources/Module/WXInstanceWrap.m |   44 +
 .../WeexSDK/Sources/Module/WXModalUIModule.h    |   14 +
 .../WeexSDK/Sources/Module/WXModalUIModule.m    |  308 +++
 .../WeexSDK/Sources/Module/WXNavigatorModule.h  |   14 +
 .../WeexSDK/Sources/Module/WXNavigatorModule.m  |  156 ++
 .../WeexSDK/Sources/Module/WXStorageModule.h    |   14 +
 .../WeexSDK/Sources/Module/WXStorageModule.m    |  202 ++
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.h |   14 +
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |  152 ++
 ios/sdk/WeexSDK/Sources/Module/WXTimerModule.h  |   14 +
 ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m  |   75 +
 .../WeexSDK/Sources/Module/WXWebViewModule.h    |   15 +
 .../WeexSDK/Sources/Module/WXWebViewModule.m    |   70 +
 .../Sources/Protocol/WXAppMonitorProtocol.h     |   26 +
 .../WeexSDK/Sources/Protocol/WXBridgeProtocol.h |   25 +
 .../Sources/Protocol/WXDestroyProtocol.h        |   18 +
 .../Sources/Protocol/WXEventModuleProtocol.h    |   15 +
 .../Sources/Protocol/WXImgLoaderProtocol.h      |   36 +
 .../WeexSDK/Sources/Protocol/WXModuleProtocol.h |   47 +
 .../Sources/Protocol/WXNavigationProtocol.h     |  143 ++
 .../Sources/Protocol/WXNetworkProtocol.h        |   32 +
 .../Sources/Protocol/WXScrollerProtocol.h       |   56 +
 .../Sources/Protocol/WXTextComponentProtocol.h  |   15 +
 .../Sources/Supporting Files/WeexSDK-Prefix.pch |   11 +
 ios/sdk/WeexSDK/Sources/Utility/NSArray+Weex.h  |   23 +
 ios/sdk/WeexSDK/Sources/Utility/NSArray+Weex.m  |   37 +
 ios/sdk/WeexSDK/Sources/Utility/NSTimer+Weex.h  |   17 +
 ios/sdk/WeexSDK/Sources/Utility/NSTimer+Weex.m  |   32 +
 .../Sources/Utility/WXAppConfiguration.h        |   37 +
 .../Sources/Utility/WXAppConfiguration.m        |   72 +
 ios/sdk/WeexSDK/Sources/Utility/WXAssert.h      |   61 +
 ios/sdk/WeexSDK/Sources/Utility/WXAssert.m      |   21 +
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.h     |   58 +
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.m     |  622 ++++++
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |  118 ++
 ios/sdk/WeexSDK/Sources/Utility/WXLog.h         |  105 +
 ios/sdk/WeexSDK/Sources/Utility/WXLog.m         |  171 ++
 .../Utility/WXSimulatorShortcutMananger.h       |   16 +
 .../Utility/WXSimulatorShortcutMananger.m       |  118 ++
 .../Sources/Utility/WXThreadSafeCounter.h       |   20 +
 .../Sources/Utility/WXThreadSafeCounter.m       |   25 +
 .../Sources/Utility/WXThreadSafeMutableArray.h  |   16 +
 .../Sources/Utility/WXThreadSafeMutableArray.m  |  147 ++
 .../Utility/WXThreadSafeMutableDictionary.h     |   16 +
 .../Utility/WXThreadSafeMutableDictionary.m     |  121 ++
 ios/sdk/WeexSDK/Sources/Utility/WXType.h        |   65 +
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |  282 +++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     |  389 ++++
 .../Sources/Utility/WXWeakObjectWrapper.h       |   17 +
 .../Sources/Utility/WXWeakObjectWrapper.m       |   22 +
 .../Sources/View/WXComponent+ViewManangement.h  |   13 +
 .../Sources/View/WXComponent+ViewManangement.m  |  254 +++
 ios/sdk/WeexSDK/Sources/View/WXView.h           |   13 +
 ios/sdk/WeexSDK/Sources/View/WXView.m           |   49 +
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |   31 +
 ios/sdk/WeexSDK/dependency/SRWebSocket.h        |  140 ++
 ios/sdk/WeexSDK/dependency/SRWebSocket.m        | 1812 ++++++++++++++++++
 ios/sdk/WeexSDKTests/Info.plist                 |   24 +
 ios/sdk/WeexSDKTests/WeexENVTests.m             |   96 +
 ios/sdk/WeexSDKTests/WeexSDKTests.m             |   96 +
 ios/sdk/WeexSDKTests/test.js                    |   24 +
 ios/sdk/WeexSDKTests/weex-test.js               |   15 +
 ios/sdk/WeexSDK_MTL/WeexSDK_MTL.h               |   13 +
 ios/sdk/WeexSDK_MTL/WeexSDK_MTL.m               |   13 +
 ios/sdk/buildScripts.sh                         |   99 +
 240 files changed, 24613 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 252ea36..3ec0351 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ We agree that you may discuss technical information about Weex, except that you
  
 > A framework for building Mobile cross-platform UI.
 
-Support Android 4.1 (API 16) and iOS soon. See [Weex website](http://alibaba.github.io/weex/) for more information. 
+Support Android 4.1 (API 16) and iOS 7.0+. See [Weex website](http://alibaba.github.io/weex/) for more information. 
 
 ## For Windows
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/CFNetwork.gcno
----------------------------------------------------------------------
diff --git a/ios/playground/CFNetwork.gcno b/ios/playground/CFNetwork.gcno
new file mode 100644
index 0000000..5b6ec63
Binary files /dev/null and b/ios/playground/CFNetwork.gcno differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/CoreGraphics.gcno
----------------------------------------------------------------------
diff --git a/ios/playground/CoreGraphics.gcno b/ios/playground/CoreGraphics.gcno
new file mode 100644
index 0000000..cf63b22
Binary files /dev/null and b/ios/playground/CoreGraphics.gcno differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/Foundation.gcno
----------------------------------------------------------------------
diff --git a/ios/playground/Foundation.gcno b/ios/playground/Foundation.gcno
new file mode 100644
index 0000000..e13f146
Binary files /dev/null and b/ios/playground/Foundation.gcno differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/ObjectiveC.gcno
----------------------------------------------------------------------
diff --git a/ios/playground/ObjectiveC.gcno b/ios/playground/ObjectiveC.gcno
new file mode 100644
index 0000000..ae8b21c
Binary files /dev/null and b/ios/playground/ObjectiveC.gcno differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/Podfile
----------------------------------------------------------------------
diff --git a/ios/playground/Podfile b/ios/playground/Podfile
new file mode 100644
index 0000000..46ae78b
--- /dev/null
+++ b/ios/playground/Podfile
@@ -0,0 +1,11 @@
+platform :ios, '7.0'
+#inhibit_all_warnings!
+
+target 'WeexDemo' do
+  pod 'WeexSDK', :path=>'../sdk/'
+  pod 'SDWebImage', '3.7.5'
+  pod 'SocketRocket', '0.4.2'
+  pod 'ZXingObjC', '~> 3.0'
+  pod 'ATSDK-Weex', '0.0.1'
+end
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/QuartzCore.gcno
----------------------------------------------------------------------
diff --git a/ios/playground/QuartzCore.gcno b/ios/playground/QuartzCore.gcno
new file mode 100644
index 0000000..0113b7c
Binary files /dev/null and b/ios/playground/QuartzCore.gcno differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/README.md
----------------------------------------------------------------------
diff --git a/ios/playground/README.md b/ios/playground/README.md
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo.xcodeproj/project.pbxproj b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..f788f71
--- /dev/null
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@ -0,0 +1,882 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE88A2B1C8544E6003329DE /* WXScannerVC.m */; };
+		74CC79EB1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 74CC79EA1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m */; };
+		775BEE801C1E8ECC008D1629 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE7F1C1E8ECC008D1629 /* main.m */; };
+		775BEE831C1E8ECC008D1629 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE821C1E8ECC008D1629 /* AppDelegate.m */; };
+		775BEE861C1E8ECC008D1629 /* WXDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE851C1E8ECC008D1629 /* WXDemoViewController.m */; };
+		775BEE8B1C1E8ECC008D1629 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */; };
+		775BEE8E1C1E8ECC008D1629 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8C1C1E8ECC008D1629 /* LaunchScreen.storyboard */; };
+		775BEE991C1E8ECC008D1629 /* WeexDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE981C1E8ECC008D1629 /* WeexDemoTests.m */; };
+		84361D2F1CA10F8E00F43825 /* WXScannerVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE88A2B1C8544E6003329DE /* WXScannerVC.m */; };
+		84361D331CA10F8E00F43825 /* WXDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE851C1E8ECC008D1629 /* WXDemoViewController.m */; };
+		84361D371CA10F8E00F43825 /* UIViewController+WXDemoNaviBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 74CC79EA1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m */; };
+		84361D381CA10F8E00F43825 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE821C1E8ECC008D1629 /* AppDelegate.m */; };
+		84361D3B1CA10F8E00F43825 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 775BEE7F1C1E8ECC008D1629 /* main.m */; };
+		84361D421CA10F8E00F43825 /* libPods-WeexDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7601607D735D7F8D88971230 /* libPods-WeexDemo.a */; };
+		84361D581CA10F8E00F43825 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8C1C1E8ECC008D1629 /* LaunchScreen.storyboard */; };
+		84361D5B1CA10F8E00F43825 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */; };
+		84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
+		DC5E503E1D0D97130059F0EB /* weex.png in Resources */ = {isa = PBXBuildFile; fileRef = DC5E503C1D0D97130059F0EB /* weex.png */; };
+		DC5E503F1D0D97130059F0EB /* weex@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DC5E503D1D0D97130059F0EB /* weex@2x.png */; };
+		DC65C4FA1CEB032F00B2F84F /* bundlejs in Resources */ = {isa = PBXBuildFile; fileRef = DC65C4F91CEB032F00B2F84F /* bundlejs */; };
+		DC6DD9D21CFE9BC400549297 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
+		DCA812F91D0401420029BF62 /* WXSelectComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFFA1D029748001C8592 /* WXSelectComponent.m */; };
+		DCA812FA1D0401500029BF62 /* WXEventModule.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABB0001D02975E001C8592 /* WXEventModule.m */; };
+		DCA812FB1D0401570029BF62 /* WXImgLoaderDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFFD1D029753001C8592 /* WXImgLoaderDefaultImpl.m */; };
+		DCABAFF31D029685001C8592 /* WXATLoggerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */; };
+		DCABAFF41D029685001C8592 /* WXATViewHierarchyPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */; };
+		DCABAFFB1D029748001C8592 /* WXSelectComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFFA1D029748001C8592 /* WXSelectComponent.m */; };
+		DCABAFFE1D029753001C8592 /* WXImgLoaderDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFFD1D029753001C8592 /* WXImgLoaderDefaultImpl.m */; };
+		DCABB0011D02975E001C8592 /* WXEventModule.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABB0001D02975E001C8592 /* WXEventModule.m */; };
+		DCD286E01CF491AC00C601CA /* weex-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = DCD286DF1CF491AC00C601CA /* weex-icon.png */; };
+		EAEC716BE3E43DBC8494EC51 /* libPods-WeexDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7601607D735D7F8D88971230 /* libPods-WeexDemo.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		775BEE951C1E8ECC008D1629 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 775BEE731C1E8ECC008D1629 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 775BEE7A1C1E8ECC008D1629;
+			remoteInfo = WeexDemo;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		22E4D2883CC56188A2CA9C13 /* Pods-WeexDemo.uitest.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.uitest.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.uitest.xcconfig"; sourceTree = "<group>"; };
+		2AE88A2A1C8544E6003329DE /* WXScannerVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXScannerVC.h; path = Scanner/WXScannerVC.h; sourceTree = "<group>"; };
+		2AE88A2B1C8544E6003329DE /* WXScannerVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXScannerVC.m; path = Scanner/WXScannerVC.m; sourceTree = "<group>"; };
+		5AF8846546DAC65CAC038806 /* Pods-WeexDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.debug.xcconfig"; sourceTree = "<group>"; };
+		7453E3641C9FA971001EB427 /* DemoDefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoDefine.h; sourceTree = "<group>"; };
+		7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; };
+		74CC79E91C2B9E4700829368 /* UIViewController+WXDemoNaviBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+WXDemoNaviBar.h"; sourceTree = "<group>"; };
+		74CC79EA1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+WXDemoNaviBar.m"; sourceTree = "<group>"; };
+		7601607D735D7F8D88971230 /* libPods-WeexDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WeexDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		775BEE7B1C1E8ECC008D1629 /* WeexDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		775BEE7F1C1E8ECC008D1629 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		775BEE811C1E8ECC008D1629 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		775BEE821C1E8ECC008D1629 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		775BEE841C1E8ECC008D1629 /* WXDemoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WXDemoViewController.h; sourceTree = "<group>"; };
+		775BEE851C1E8ECC008D1629 /* WXDemoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WXDemoViewController.m; sourceTree = "<group>"; };
+		775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		775BEE8D1C1E8ECC008D1629 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		775BEE8F1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		775BEE941C1E8ECC008D1629 /* WeexDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WeexDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		775BEE981C1E8ECC008D1629 /* WeexDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WeexDemoTests.m; sourceTree = "<group>"; };
+		775BEE9A1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		84361D751CA10F8E00F43825 /* WeexUITestDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexUITestDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		84361D761CA10F8F00F43825 /* WeexUITestDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "WeexUITestDemo-Info.plist"; path = "/Users/admin/Documents/03_project_git/01_Weex/weex-samples/ios/WeexUITestDemo-Info.plist"; sourceTree = "<absolute>"; };
+		9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.release.xcconfig"; sourceTree = "<group>"; };
+		DC5E503C1D0D97130059F0EB /* weex.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = weex.png; sourceTree = "<group>"; };
+		DC5E503D1D0D97130059F0EB /* weex@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "weex@2x.png"; sourceTree = "<group>"; };
+		DC65C4F91CEB032F00B2F84F /* bundlejs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = bundlejs; sourceTree = "<group>"; };
+		DCABAFEF1D029685001C8592 /* WXATLoggerPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXATLoggerPlugin.h; path = debug/WXATLoggerPlugin.h; sourceTree = "<group>"; };
+		DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXATLoggerPlugin.m; path = debug/WXATLoggerPlugin.m; sourceTree = "<group>"; };
+		DCABAFF11D029685001C8592 /* WXATViewHierarchyPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXATViewHierarchyPlugin.h; path = debug/WXATViewHierarchyPlugin.h; sourceTree = "<group>"; };
+		DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXATViewHierarchyPlugin.m; path = debug/WXATViewHierarchyPlugin.m; sourceTree = "<group>"; };
+		DCABAFF91D029748001C8592 /* WXSelectComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXSelectComponent.h; path = extend/component/WXSelectComponent.h; sourceTree = "<group>"; };
+		DCABAFFA1D029748001C8592 /* WXSelectComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXSelectComponent.m; path = extend/component/WXSelectComponent.m; sourceTree = "<group>"; };
+		DCABAFFC1D029753001C8592 /* WXImgLoaderDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXImgLoaderDefaultImpl.h; path = extend/handler/WXImgLoaderDefaultImpl.h; sourceTree = "<group>"; };
+		DCABAFFD1D029753001C8592 /* WXImgLoaderDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXImgLoaderDefaultImpl.m; path = extend/handler/WXImgLoaderDefaultImpl.m; sourceTree = "<group>"; };
+		DCABAFFF1D02975E001C8592 /* WXEventModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXEventModule.h; path = extend/module/WXEventModule.h; sourceTree = "<group>"; };
+		DCABB0001D02975E001C8592 /* WXEventModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WXEventModule.m; path = extend/module/WXEventModule.m; sourceTree = "<group>"; };
+		DCD286DF1CF491AC00C601CA /* weex-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "weex-icon.png"; path = "WeexDemo/weex-icon.png"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		775BEE781C1E8ECC008D1629 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				DC6DD9D21CFE9BC400549297 /* libsqlite3.0.tbd in Frameworks */,
+				EAEC716BE3E43DBC8494EC51 /* libPods-WeexDemo.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		775BEE911C1E8ECC008D1629 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		84361D3C1CA10F8E00F43825 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */,
+				84361D421CA10F8E00F43825 /* libPods-WeexDemo.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		2AE88A291C8544D7003329DE /* scanner */ = {
+			isa = PBXGroup;
+			children = (
+				2AE88A2A1C8544E6003329DE /* WXScannerVC.h */,
+				2AE88A2B1C8544E6003329DE /* WXScannerVC.m */,
+			);
+			name = scanner;
+			sourceTree = "<group>";
+		};
+		327BB19797F63D5309FB91BF /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */,
+				7601607D735D7F8D88971230 /* libPods-WeexDemo.a */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		74CC79EC1C2B9FC600829368 /* Demo */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFF51D0296DB001C8592 /* extend */,
+				D5ADF0861C77133B00597CA6 /* Source */,
+			);
+			name = Demo;
+			sourceTree = "<group>";
+		};
+		775BEE721C1E8ECC008D1629 = {
+			isa = PBXGroup;
+			children = (
+				775BEE7D1C1E8ECC008D1629 /* WeexDemo */,
+				775BEE971C1E8ECC008D1629 /* WeexDemoTests */,
+				775BEE7C1C1E8ECC008D1629 /* Products */,
+				A9E45DD060512F73B9F51C03 /* Pods */,
+				327BB19797F63D5309FB91BF /* Frameworks */,
+				DC65C4421CEB006C00B2F84F /* resource */,
+				84361D761CA10F8F00F43825 /* WeexUITestDemo-Info.plist */,
+			);
+			sourceTree = "<group>";
+		};
+		775BEE7C1C1E8ECC008D1629 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				775BEE7B1C1E8ECC008D1629 /* WeexDemo.app */,
+				775BEE941C1E8ECC008D1629 /* WeexDemoTests.xctest */,
+				84361D751CA10F8E00F43825 /* WeexUITestDemo.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		775BEE7D1C1E8ECC008D1629 /* WeexDemo */ = {
+			isa = PBXGroup;
+			children = (
+				74CC79EC1C2B9FC600829368 /* Demo */,
+				775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */,
+				775BEE8C1C1E8ECC008D1629 /* LaunchScreen.storyboard */,
+				775BEE8F1C1E8ECC008D1629 /* Info.plist */,
+				775BEE7E1C1E8ECC008D1629 /* Supporting Files */,
+			);
+			path = WeexDemo;
+			sourceTree = "<group>";
+		};
+		775BEE7E1C1E8ECC008D1629 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				775BEE7F1C1E8ECC008D1629 /* main.m */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		775BEE971C1E8ECC008D1629 /* WeexDemoTests */ = {
+			isa = PBXGroup;
+			children = (
+				775BEE981C1E8ECC008D1629 /* WeexDemoTests.m */,
+				775BEE9A1C1E8ECC008D1629 /* Info.plist */,
+			);
+			path = WeexDemoTests;
+			sourceTree = "<group>";
+		};
+		A9E45DD060512F73B9F51C03 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				5AF8846546DAC65CAC038806 /* Pods-WeexDemo.debug.xcconfig */,
+				9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */,
+				22E4D2883CC56188A2CA9C13 /* Pods-WeexDemo.uitest.xcconfig */,
+			);
+			name = Pods;
+			sourceTree = "<group>";
+		};
+		D5ADF0861C77133B00597CA6 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				2AE88A291C8544D7003329DE /* scanner */,
+				DCABAFED1D029642001C8592 /* debug */,
+				74CC79E91C2B9E4700829368 /* UIViewController+WXDemoNaviBar.h */,
+				74CC79EA1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m */,
+				775BEE811C1E8ECC008D1629 /* AppDelegate.h */,
+				775BEE821C1E8ECC008D1629 /* AppDelegate.m */,
+				775BEE841C1E8ECC008D1629 /* WXDemoViewController.h */,
+				775BEE851C1E8ECC008D1629 /* WXDemoViewController.m */,
+				7453E3641C9FA971001EB427 /* DemoDefine.h */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		DC65C4421CEB006C00B2F84F /* resource */ = {
+			isa = PBXGroup;
+			children = (
+				DCD286DF1CF491AC00C601CA /* weex-icon.png */,
+				DC5E503C1D0D97130059F0EB /* weex.png */,
+				DC5E503D1D0D97130059F0EB /* weex@2x.png */,
+				DC65C4F91CEB032F00B2F84F /* bundlejs */,
+			);
+			name = resource;
+			sourceTree = "<group>";
+		};
+		DCABAFED1D029642001C8592 /* debug */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFEF1D029685001C8592 /* WXATLoggerPlugin.h */,
+				DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */,
+				DCABAFF11D029685001C8592 /* WXATViewHierarchyPlugin.h */,
+				DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */,
+			);
+			name = debug;
+			sourceTree = "<group>";
+		};
+		DCABAFF51D0296DB001C8592 /* extend */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFF81D029716001C8592 /* component */,
+				DCABAFF71D0296E8001C8592 /* handler */,
+				DCABAFF61D0296E2001C8592 /* module */,
+			);
+			name = extend;
+			sourceTree = "<group>";
+		};
+		DCABAFF61D0296E2001C8592 /* module */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFFF1D02975E001C8592 /* WXEventModule.h */,
+				DCABB0001D02975E001C8592 /* WXEventModule.m */,
+			);
+			name = module;
+			sourceTree = "<group>";
+		};
+		DCABAFF71D0296E8001C8592 /* handler */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFFC1D029753001C8592 /* WXImgLoaderDefaultImpl.h */,
+				DCABAFFD1D029753001C8592 /* WXImgLoaderDefaultImpl.m */,
+			);
+			name = handler;
+			sourceTree = "<group>";
+		};
+		DCABAFF81D029716001C8592 /* component */ = {
+			isa = PBXGroup;
+			children = (
+				DCABAFF91D029748001C8592 /* WXSelectComponent.h */,
+				DCABAFFA1D029748001C8592 /* WXSelectComponent.m */,
+			);
+			name = component;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		775BEE7A1C1E8ECC008D1629 /* WeexDemo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 775BEEA81C1E8ECC008D1629 /* Build configuration list for PBXNativeTarget "WeexDemo" */;
+			buildPhases = (
+				359BEE13DD78032A2CB791E8 /* Check Pods Manifest.lock */,
+				74CC7A221C2C13BF00829368 /* Start Samples */,
+				775BEE771C1E8ECC008D1629 /* Sources */,
+				775BEE781C1E8ECC008D1629 /* Frameworks */,
+				775BEE791C1E8ECC008D1629 /* Resources */,
+				0B3B6C05EE2F8A3B30DE551F /* Copy Pods Resources */,
+				5ED24D6A09B32268BB031206 /* Embed Pods Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = WeexDemo;
+			productName = WeexDemo;
+			productReference = 775BEE7B1C1E8ECC008D1629 /* WeexDemo.app */;
+			productType = "com.apple.product-type.application";
+		};
+		775BEE931C1E8ECC008D1629 /* WeexDemoTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 775BEEAB1C1E8ECC008D1629 /* Build configuration list for PBXNativeTarget "WeexDemoTests" */;
+			buildPhases = (
+				775BEE901C1E8ECC008D1629 /* Sources */,
+				775BEE911C1E8ECC008D1629 /* Frameworks */,
+				775BEE921C1E8ECC008D1629 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				775BEE961C1E8ECC008D1629 /* PBXTargetDependency */,
+			);
+			name = WeexDemoTests;
+			productName = WeexDemoTests;
+			productReference = 775BEE941C1E8ECC008D1629 /* WeexDemoTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+		84361D261CA10F8E00F43825 /* WeexUITestDemo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 84361D711CA10F8E00F43825 /* Build configuration list for PBXNativeTarget "WeexUITestDemo" */;
+			buildPhases = (
+				84361D271CA10F8E00F43825 /* Check Pods Manifest.lock */,
+				84361D291CA10F8E00F43825 /* Sources */,
+				84361D3C1CA10F8E00F43825 /* Frameworks */,
+				84361D431CA10F8E00F43825 /* Resources */,
+				84361D6F1CA10F8E00F43825 /* Copy Pods Resources */,
+				84361D701CA10F8E00F43825 /* Embed Pods Frameworks */,
+				567369891CE436EB000A646C /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = WeexUITestDemo;
+			productName = WeexDemo;
+			productReference = 84361D751CA10F8E00F43825 /* WeexUITestDemo.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		775BEE731C1E8ECC008D1629 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0710;
+				ORGANIZATIONNAME = taobao;
+				TargetAttributes = {
+					775BEE7A1C1E8ECC008D1629 = {
+						CreatedOnToolsVersion = 7.1.1;
+						DevelopmentTeam = E9NTP5L2G2;
+					};
+					775BEE931C1E8ECC008D1629 = {
+						CreatedOnToolsVersion = 7.1.1;
+						DevelopmentTeam = 445VCMGQD2;
+						TestTargetID = 775BEE7A1C1E8ECC008D1629;
+					};
+				};
+			};
+			buildConfigurationList = 775BEE761C1E8ECC008D1629 /* Build configuration list for PBXProject "WeexDemo" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 775BEE721C1E8ECC008D1629;
+			productRefGroup = 775BEE7C1C1E8ECC008D1629 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				775BEE7A1C1E8ECC008D1629 /* WeexDemo */,
+				775BEE931C1E8ECC008D1629 /* WeexDemoTests */,
+				84361D261CA10F8E00F43825 /* WeexUITestDemo */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		775BEE791C1E8ECC008D1629 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				DC5E503E1D0D97130059F0EB /* weex.png in Resources */,
+				DC5E503F1D0D97130059F0EB /* weex@2x.png in Resources */,
+				DCD286E01CF491AC00C601CA /* weex-icon.png in Resources */,
+				DC65C4FA1CEB032F00B2F84F /* bundlejs in Resources */,
+				775BEE8E1C1E8ECC008D1629 /* LaunchScreen.storyboard in Resources */,
+				775BEE8B1C1E8ECC008D1629 /* Assets.xcassets in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		775BEE921C1E8ECC008D1629 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		84361D431CA10F8E00F43825 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				84361D581CA10F8E00F43825 /* LaunchScreen.storyboard in Resources */,
+				84361D5B1CA10F8E00F43825 /* Assets.xcassets in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		0B3B6C05EE2F8A3B30DE551F /* Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Copy Pods Resources";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		359BEE13DD78032A2CB791E8 /* Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Check Pods Manifest.lock";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n    cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n    exit 1\nfi\n";
+			showEnvVarsInLog = 0;
+		};
+		567369891CE436EB000A646C /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "myFile=\"XcodeCoverage/exportenv.sh\"\n\nif [ -f \"$myFile\" ]; then\nXcodeCoverage/exportenv.sh\nfi";
+		};
+		5ED24D6A09B32268BB031206 /* Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Embed Pods Frameworks";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "
+";
+			showEnvVarsInLog = 0;
+		};
+		74CC7A221C2C13BF00829368 /* Start Samples */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Start Samples";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "set -x\n\nif nc -w 5 -z localhost 12580 ; then\n    echo \"Port 12580 already in use, server is running\"\nelse\n    open \"$SRCROOT/../../start\"\nfi\n\n";
+		};
+		84361D271CA10F8E00F43825 /* Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Check Pods Manifest.lock";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n    cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n    exit 1\nfi\n";
+			showEnvVarsInLog = 0;
+		};
+		84361D6F1CA10F8E00F43825 /* Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Copy Pods Resources";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		84361D701CA10F8E00F43825 /* Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Embed Pods Frameworks";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "
+";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		775BEE771C1E8ECC008D1629 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				DCABAFFB1D029748001C8592 /* WXSelectComponent.m in Sources */,
+				DCABAFF31D029685001C8592 /* WXATLoggerPlugin.m in Sources */,
+				2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */,
+				775BEE861C1E8ECC008D1629 /* WXDemoViewController.m in Sources */,
+				74CC79EB1C2B9E4700829368 /* UIViewController+WXDemoNaviBar.m in Sources */,
+				DCABB0011D02975E001C8592 /* WXEventModule.m in Sources */,
+				775BEE831C1E8ECC008D1629 /* AppDelegate.m in Sources */,
+				DCABAFF41D029685001C8592 /* WXATViewHierarchyPlugin.m in Sources */,
+				775BEE801C1E8ECC008D1629 /* main.m in Sources */,
+				DCABAFFE1D029753001C8592 /* WXImgLoaderDefaultImpl.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		775BEE901C1E8ECC008D1629 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				775BEE991C1E8ECC008D1629 /* WeexDemoTests.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		84361D291CA10F8E00F43825 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				DCA812FB1D0401570029BF62 /* WXImgLoaderDefaultImpl.m in Sources */,
+				DCA812FA1D0401500029BF62 /* WXEventModule.m in Sources */,
+				DCA812F91D0401420029BF62 /* WXSelectComponent.m in Sources */,
+				84361D2F1CA10F8E00F43825 /* WXScannerVC.m in Sources */,
+				84361D331CA10F8E00F43825 /* WXDemoViewController.m in Sources */,
+				84361D371CA10F8E00F43825 /* UIViewController+WXDemoNaviBar.m in Sources */,
+				84361D381CA10F8E00F43825 /* AppDelegate.m in Sources */,
+				84361D3B1CA10F8E00F43825 /* main.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		775BEE961C1E8ECC008D1629 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 775BEE7A1C1E8ECC008D1629 /* WeexDemo */;
+			targetProxy = 775BEE951C1E8ECC008D1629 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		775BEE8C1C1E8ECC008D1629 /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				775BEE8D1C1E8ECC008D1629 /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		775BEEA61C1E8ECC008D1629 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+				GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		775BEEA71C1E8ECC008D1629 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		775BEEA91C1E8ECC008D1629 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5AF8846546DAC65CAC038806 /* Pods-WeexDemo.debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets";
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/WeexDemo",
+					"$(PROJECT_DIR)",
+				);
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				INFOPLIST_FILE = WeexDemo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-licucore",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		775BEEAA1C1E8ECC008D1629 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets";
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/WeexDemo",
+					"$(PROJECT_DIR)",
+				);
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				INFOPLIST_FILE = WeexDemo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-licucore",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+		775BEEAC1C1E8ECC008D1629 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				INFOPLIST_FILE = WeexDemoTests/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemoTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WeexDemo.app/WeexDemo";
+			};
+			name = Debug;
+		};
+		775BEEAD1C1E8ECC008D1629 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				INFOPLIST_FILE = WeexDemoTests/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemoTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WeexDemo.app/WeexDemo";
+			};
+			name = Release;
+		};
+		84361D721CA10F8E00F43825 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5AF8846546DAC65CAC038806 /* Pods-WeexDemo.debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/WeexDemo",
+					"$(PROJECT_DIR)",
+				);
+				GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+				GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"$(inherited)",
+					"COCOAPODS=1",
+					"UITEST=1",
+				);
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				INFOPLIST_FILE = "WeexUITestDemo-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MODULE_NAME = NO;
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-licucore",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+			};
+			name = Debug;
+		};
+		84361D741CA10F8E00F43825 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/WeexDemo",
+					"$(PROJECT_DIR)",
+				);
+				GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+				GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				INFOPLIST_FILE = "WeexUITestDemo-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MODULE_NAME = NO;
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-licucore",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.taobao.WeexDemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		775BEE761C1E8ECC008D1629 /* Build configuration list for PBXProject "WeexDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				775BEEA61C1E8ECC008D1629 /* Debug */,
+				775BEEA71C1E8ECC008D1629 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		775BEEA81C1E8ECC008D1629 /* Build configuration list for PBXNativeTarget "WeexDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				775BEEA91C1E8ECC008D1629 /* Debug */,
+				775BEEAA1C1E8ECC008D1629 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		775BEEAB1C1E8ECC008D1629 /* Build configuration list for PBXNativeTarget "WeexDemoTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				775BEEAC1C1E8ECC008D1629 /* Debug */,
+				775BEEAD1C1E8ECC008D1629 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		84361D711CA10F8E00F43825 /* Build configuration list for PBXNativeTarget "WeexUITestDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				84361D721CA10F8E00F43825 /* Debug */,
+				84361D741CA10F8E00F43825 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 775BEE731C1E8ECC008D1629 /* Project object */;
+}

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexDemo.xcscheme
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexDemo.xcscheme b/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexDemo.xcscheme
new file mode 100644
index 0000000..ba80275
--- /dev/null
+++ b/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexDemo.xcscheme
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0710"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "775BEE7A1C1E8ECC008D1629"
+               BuildableName = "WeexDemo.app"
+               BlueprintName = "WeexDemo"
+               ReferencedContainer = "container:WeexDemo.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "775BEE931C1E8ECC008D1629"
+               BuildableName = "WeexDemoTests.xctest"
+               BlueprintName = "WeexDemoTests"
+               ReferencedContainer = "container:WeexDemo.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "775BEE9E1C1E8ECC008D1629"
+               BuildableName = "WeexDemoUITests.xctest"
+               BlueprintName = "WeexDemoUITests"
+               ReferencedContainer = "container:WeexDemo.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "775BEE7A1C1E8ECC008D1629"
+            BuildableName = "WeexDemo.app"
+            BlueprintName = "WeexDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "775BEE7A1C1E8ECC008D1629"
+            BuildableName = "WeexDemo.app"
+            BlueprintName = "WeexDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "775BEE7A1C1E8ECC008D1629"
+            BuildableName = "WeexDemo.app"
+            BlueprintName = "WeexDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexUITestDemo.xcscheme
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexUITestDemo.xcscheme b/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexUITestDemo.xcscheme
new file mode 100644
index 0000000..6a68091
--- /dev/null
+++ b/ios/playground/WeexDemo.xcodeproj/xcshareddata/xcschemes/WeexUITestDemo.xcscheme
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0720"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "84361D261CA10F8E00F43825"
+               BuildableName = "WeexUITestDemo.app"
+               BlueprintName = "WeexUITestDemo"
+               ReferencedContainer = "container:WeexDemo.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "84361D261CA10F8E00F43825"
+            BuildableName = "WeexUITestDemo.app"
+            BlueprintName = "WeexUITestDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "84361D261CA10F8E00F43825"
+            BuildableName = "WeexUITestDemo.app"
+            BlueprintName = "WeexUITestDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "84361D261CA10F8E00F43825"
+            BuildableName = "WeexUITestDemo.app"
+            BlueprintName = "WeexUITestDemo"
+            ReferencedContainer = "container:WeexDemo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/AppDelegate.h
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/AppDelegate.h b/ios/playground/WeexDemo/AppDelegate.h
new file mode 100644
index 0000000..210c5ac
--- /dev/null
+++ b/ios/playground/WeexDemo/AppDelegate.h
@@ -0,0 +1,16 @@
+/**
+ * Created by Weex.
+ * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
+ *
+ * This source code is licensed under the Apache Licence 2.0.
+ * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
+ */
+
+#import <UIKit/UIKit.h>
+
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/AppDelegate.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/AppDelegate.m b/ios/playground/WeexDemo/AppDelegate.m
new file mode 100644
index 0000000..5295055
--- /dev/null
+++ b/ios/playground/WeexDemo/AppDelegate.m
@@ -0,0 +1,192 @@
+/**
+ * Created by Weex.
+ * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
+ *
+ * This source code is licensed under the Apache Licence 2.0.
+ * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
+ */
+
+#import "AppDelegate.h"
+#import "WXDemoViewController.h"
+#import "UIViewController+WXDemoNaviBar.h"
+#import "WXStreamModule.h"
+#import "WXSelectComponent.h"
+#import "WXEventModule.h"
+#import "WXNavigationDefaultImpl.h"
+#import "WXImgLoaderDefaultImpl.h"
+#import "DemoDefine.h"
+#import "WXScannerVC.h"
+#import <WeexSDK/WXSDKEngine.h>
+#import <WeexSDK/WXLog.h>
+#import <WeexSDK/WXDebugTool.h>
+#import <WeexSDK/WXAppConfiguration.h>
+#import <AVFoundation/AVFoundation.h>
+#import <ATSDK/ATManager.h>
+
+@interface AppDelegate ()
+@end
+
+@implementation AppDelegate
+
+#pragma mark
+#pragma mark application
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
+    self.window.backgroundColor = [UIColor whiteColor];
+    
+    [self initWeexSDK];
+    
+    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[self demoController]];
+    [self.window makeKeyAndVisible];
+    
+    // Override point for customization after application launch.
+    [self startSplashScreen];
+    
+    return YES;
+}
+
+-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
+{
+    if ([shortcutItem.type isEqualToString:QRSCAN]) {
+        WXScannerVC * scanViewController = [[WXScannerVC alloc] init];
+        [(UINavigationController*)self.window.rootViewController pushViewController:scanViewController animated:YES];
+    }
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+    
+#ifdef UITEST
+#if !TARGET_IPHONE_SIMULATOR
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *documentsDirectory = [paths objectAtIndex:0];
+    setenv("GCOV_PREFIX", [documentsDirectory cStringUsingEncoding:NSUTF8StringEncoding], 1);
+    setenv("GCOV_PREFIX_STRIP", "6", 1);
+#endif
+    extern void __gcov_flush(void);
+    __gcov_flush();
+#endif
+}
+
+#pragma mark weex
+- (void)initWeexSDK
+{
+    [WXAppConfiguration setAppGroup:@"AliApp"];
+    [WXAppConfiguration setAppName:@"WeexDemo"];
+    [WXAppConfiguration setAppVersion:@"1.8.3"];
+    [WXAppConfiguration setExternalUserAgent:@"ExternalUA"];
+    
+    [WXSDKEngine initSDKEnviroment];
+    
+    [WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];
+    [WXSDKEngine registerHandler:[WXEventModule new] withProtocol:@protocol(WXEventModuleProtocol)];
+    
+    [WXSDKEngine registerComponent:@"select" withClass:[WXSelectComponent class]];
+    [WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
+    [self atAddPlugin];
+    
+#ifdef DEBUG
+    [WXDebugTool setDebug:YES];
+    [WXLog setLogLevel:WXLogLevelVerbose];
+#else
+    [WXDebugTool setDebug:NO];
+#endif
+ 
+#ifndef UITEST
+    [[ATManager shareInstance] show];
+#else
+    [WXDebugTool setDebug:NO];
+    [WXLog setLogLevel:WXLogLevelError];
+#endif
+    
+}
+
+-(UIViewController *)demoController
+{
+    
+    UIViewController *demo = [[WXDemoViewController alloc] init];
+    
+#if DEBUG
+    //If you are debugging in device , please change the host to current IP of your computer.
+    ((WXDemoViewController *)demo).url = [NSURL URLWithString:HOME_URL];
+#else
+    ((WXDemoViewController *)demo).url = [NSURL URLWithString:BUNDLE_URL];
+#endif
+    
+#ifdef UITEST
+    ((WXDemoViewController *)demo).url = [NSURL URLWithString:UITEST_HOME_URL];
+#endif
+    
+    return demo;
+}
+
+#pragma mark 
+#pragma mark animation when startup
+
+- (void)startSplashScreen
+{
+    UIView* splashView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+    splashView.backgroundColor = WEEX_COLOR;
+    
+    UIImageView *iconImageView = [UIImageView new];
+    UIImage *icon = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"weex-icon" ofType:@"png"]];
+    if ([icon respondsToSelector:@selector(imageWithRenderingMode:)]) {
+        iconImageView.image = [icon imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+        iconImageView.tintColor = [UIColor whiteColor];
+    } else {
+        iconImageView.image = icon;
+    }
+    iconImageView.frame = CGRectMake(0, 0, 320, 320);
+    iconImageView.contentMode = UIViewContentModeScaleAspectFit;
+    iconImageView.center = splashView.center;
+    [splashView addSubview:iconImageView];
+    
+    [self.window addSubview:splashView];
+    
+    float animationDuration = 1.4;
+    CGFloat shrinkDuration = animationDuration * 0.3;
+    CGFloat growDuration = animationDuration * 0.7;
+    
+    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
+        [UIView animateWithDuration:shrinkDuration delay:1.0 usingSpringWithDamping:0.7f initialSpringVelocity:10 options:UIViewAnimationOptionCurveEaseInOut animations:^{
+            CGAffineTransform scaleTransform = CGAffineTransformMakeScale(0.75, 0.75);
+            iconImageView.transform = scaleTransform;
+        } completion:^(BOOL finished) {
+            [UIView animateWithDuration:growDuration animations:^{
+                CGAffineTransform scaleTransform = CGAffineTransformMakeScale(20, 20);
+                iconImageView.transform = scaleTransform;
+                splashView.alpha = 0;
+            } completion:^(BOOL finished) {
+                [splashView removeFromSuperview];
+            }];
+        }];
+    } else {
+        [UIView animateWithDuration:shrinkDuration delay:1.0 options:0 animations:^{
+            CGAffineTransform scaleTransform = CGAffineTransformMakeScale(0.75, 0.75);
+            iconImageView.transform = scaleTransform;
+        } completion:^(BOOL finished) {
+            [UIView animateWithDuration:growDuration animations:^{
+                CGAffineTransform scaleTransform = CGAffineTransformMakeScale(20, 20);
+                iconImageView.transform = scaleTransform;
+                splashView.alpha = 0;
+            } completion:^(BOOL finished) {
+                [splashView removeFromSuperview];
+            }];
+        }];
+    }
+}
+
+#pragma mark
+
+- (void)atAddPlugin {
+    
+    [[ATManager shareInstance] addPluginWithId:@"weex" andName:@"weex" andIconName:@"weex" andEntry:@"" andArgs:@[@""]];
+    [[ATManager shareInstance] addSubPluginWithParentId:@"weex" andSubId:@"logger" andName:@"logger" andIconName:@"log" andEntry:@"WXATLoggerPlugin" andArgs:@[@""]];
+//    [[ATManager shareInstance] addSubPluginWithParentId:@"weex" andSubId:@"viewHierarchy" andName:@"hierarchy" andIconName:@"log" andEntry:@"WXATViewHierarchyPlugin" andArgs:@[@""]];
+    [[ATManager shareInstance] addSubPluginWithParentId:@"weex" andSubId:@"test2" andName:@"test" andIconName:@"at_arr_refresh" andEntry:@"" andArgs:@[]];
+    [[ATManager shareInstance] addSubPluginWithParentId:@"weex" andSubId:@"test3" andName:@"test" andIconName:@"at_arr_refresh" andEntry:@"" andArgs:@[]];
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..c64ff0d
--- /dev/null
+++ b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,86 @@
+{
+  "images" : [
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-40@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-40@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-60@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-60@3x.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "Icon-Small.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "Icon-Small@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "Icon-40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "Icon-40@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "Icon-76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "Icon-76@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "Icon-83.5@2x.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40.png
new file mode 100755
index 0000000..82122bb
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
new file mode 100755
index 0000000..6948740
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
new file mode 100755
index 0000000..7fcd869
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
new file mode 100755
index 0000000..7fcd869
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
new file mode 100755
index 0000000..a990667
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76.png
new file mode 100755
index 0000000..acf7b94
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
new file mode 100755
index 0000000..57b1a83
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
new file mode 100755
index 0000000..efd2a4c
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
new file mode 100755
index 0000000..5d402b3
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
new file mode 100644
index 0000000..8d8860b
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
new file mode 100755
index 0000000..4efd255
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/Brand Assets.launchimage/Contents.json
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/Brand Assets.launchimage/Contents.json b/ios/playground/WeexDemo/Assets.xcassets/Brand Assets.launchimage/Contents.json
new file mode 100644
index 0000000..a0ad363
--- /dev/null
+++ b/ios/playground/WeexDemo/Assets.xcassets/Brand Assets.launchimage/Contents.json	
@@ -0,0 +1,36 @@
+{
+  "images" : [
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/Contents.json
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/Contents.json b/ios/playground/WeexDemo/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/ios/playground/WeexDemo/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/back.imageset/Contents.json
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/back.imageset/Contents.json b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/Contents.json
new file mode 100644
index 0000000..3bad3d0
--- /dev/null
+++ b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "back.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "back@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "back@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back.png b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back.png
new file mode 100644
index 0000000..1f3e073
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@2x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@2x.png b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@2x.png
new file mode 100644
index 0000000..76d0bf8
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@2x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@3x.png
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@3x.png b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@3x.png
new file mode 100644
index 0000000..8180558
Binary files /dev/null and b/ios/playground/WeexDemo/Assets.xcassets/back.imageset/back@3x.png differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/185fe55c/ios/playground/WeexDemo/Assets.xcassets/reload.imageset/Contents.json
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/Assets.xcassets/reload.imageset/Contents.json b/ios/playground/WeexDemo/Assets.xcassets/reload.imageset/Contents.json
new file mode 100644
index 0000000..e2cd5af
--- /dev/null
+++ b/ios/playground/WeexDemo/Assets.xcassets/reload.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "reload.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "reload@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "reload@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file