You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by mi...@apache.org on 2018/05/03 04:29:37 UTC

[1/3] incubator-weex git commit: [WEEX-281][android] Auto Startup Time Quick

Repository: incubator-weex
Updated Branches:
  refs/heads/master 3366d33bc -> cf531a167


[WEEX-281][android] Auto Startup Time Quick


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

Branch: refs/heads/master
Commit: ffbf07c6e1e08fdfb9c5b81c2a520883077650b1
Parents: ea2e12f
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Tue Apr 17 11:58:10 2018 +0800
Committer: jianbai.gbj <ji...@alibaba-inc.com>
Committed: Sat Apr 28 15:37:45 2018 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/WXEnvironment.java     |  5 ++++
 .../com/taobao/weex/bridge/WXBridgeManager.java | 24 +++++++++++++++---
 .../com/taobao/weex/bridge/WXModuleManager.java |  3 ++-
 .../weex/ui/ExternalLoaderComponentHolder.java  |  2 +-
 .../taobao/weex/ui/SimpleComponentHolder.java   |  2 +-
 .../com/taobao/weex/ui/WXComponentRegistry.java |  4 +++
 .../taobao/weex/ui/component/WXComponent.java   |  8 ++++--
 .../weex/ui/config/AutoScanConfigRegister.java  | 26 ++++++++++++++++++++
 8 files changed, 66 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java b/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
index 96ca990..8903a15 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
@@ -84,6 +84,11 @@ public class WXEnvironment {
   /** from init to sdk-ready **/
   public static long sSDKInitTime =0;
 
+  /**
+   * component and modules ready
+   * */
+  public static long sComponentsAndModulesReadyTime = 0;
+
   public static LogLevel sLogLevel = LogLevel.DEBUG;
   private static boolean isApkDebug = true;
   public static boolean isPerf = false;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index f931ccf..c3a0826 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -2115,6 +2115,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
           execRegisterFailTask();
           WXEnvironment.JsFrameworkInit = true;
           registerDomModule();
+          trackComponentAndModulesTime();
           String reinitInfo = "";
           if (reInitCount > 1) {
             reinitInfo = "reinit Framework:";
@@ -2155,6 +2156,17 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
     }
   }
 
+  private void trackComponentAndModulesTime() {
+    post(new Runnable() {
+      @Override
+      public void run() {
+        WXEnvironment.sComponentsAndModulesReadyTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart;
+        WXLogUtils.renderPerformanceLog("ComponentModulesReadyTime", WXEnvironment.sComponentsAndModulesReadyTime);
+        WXLogUtils.d("ComponentModulesReadyTime " + WXEnvironment.sComponentsAndModulesReadyTime);
+      }
+    });
+  }
+
   @SuppressWarnings("unchecked")
   private void invokeCallJSBatch(Message message) {
     if (mNextTickTasks.isEmpty() || !isJSFrameworkInit()) {
@@ -2293,12 +2305,18 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
         || components.size() == 0) {
       return;
     }
-    post(new Runnable() {
+    Runnable runnable = new Runnable() {
       @Override
       public void run() {
         invokeRegisterComponents(components, mRegisterComponentFailList);
       }
-    }, null);
+    };
+
+    if(isJSThread() && isJSFrameworkInit()){
+      runnable.run();
+    }else{
+      post(runnable, null);
+    }
   }
 
   public void execJSService(final String service) {
@@ -2359,9 +2377,9 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
             WXModuleManager.resetModuleState(module, true);
             WXLogUtils.e("[WXBridgeManager]invokeRegisterModules METHOD_REGISTER_MODULES success module:" + module);
           }
-
         }
       } catch (Throwable e) {
+        WXLogUtils.e("Weex [invokeRegisterModules]", e);
       }
     } catch (Throwable e) {
 	  WXExceptionUtils.commitCriticalExceptionRT(null,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
index 6bc4af4..32bb895 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
@@ -34,6 +34,7 @@ import com.taobao.weex.common.WXModule;
 import com.taobao.weex.dom.DOMAction;
 import com.taobao.weex.dom.WXDomModule;
 import com.taobao.weex.dom.action.Actions;
+import com.taobao.weex.ui.config.AutoScanConfigRegister;
 import com.taobao.weex.ui.config.ConfigModuleFactory;
 import com.taobao.weex.ui.module.WXTimerModule;
 import com.taobao.weex.utils.WXExceptionUtils;
@@ -92,7 +93,7 @@ public class WXModuleManager {
     } catch (Throwable e) {
 
     }
-
+    AutoScanConfigRegister.preLoad(factory);
     //execute task in js thread to make sure register order is same as the order invoke register method.
     WXBridgeManager.getInstance()
             .post(new Runnable() {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java b/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java
index fb487dc..52d71f6 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java
@@ -94,7 +94,7 @@ public class ExternalLoaderComponentHolder implements IFComponentHolder {
   }
 
   @Override
-  public String[] getMethods() {
+  public synchronized String[] getMethods() {
     if(mMethodInvokers == null && !generate()){
       //generate failed
       return new String[0];

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java b/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java
index 8d548ab..b9e8f70 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java
@@ -204,7 +204,7 @@ public class SimpleComponentHolder implements IFComponentHolder{
   }
 
   @Override
-  public String[] getMethods() {
+  public synchronized String[] getMethods() {
     if(mMethodInvokers == null){
       generate();
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java b/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java
index 39e3b89..57289dc 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java
@@ -23,6 +23,7 @@ import android.text.TextUtils;
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.bridge.WXBridgeManager;
 import com.taobao.weex.common.WXException;
+import com.taobao.weex.ui.config.AutoScanConfigRegister;
 import com.taobao.weex.utils.WXLogUtils;
 
 import java.util.ArrayList;
@@ -44,6 +45,9 @@ public class WXComponentRegistry {
       return false;
     }
 
+    //register component
+    AutoScanConfigRegister.preLoad(holder);
+
     //execute task in js thread to make sure register order is same as the order invoke register method.
     WXBridgeManager.getInstance()
         .post(new Runnable() {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 503e495..0176185 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -926,7 +926,9 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
 
   protected void updateBoxShadow() {
     if (!BoxShadowUtil.isBoxShadowEnabled()) {
-      WXLogUtils.w("BoxShadow", "box-shadow disabled");
+      if(WXEnvironment.isApkDebugable()) {
+        WXLogUtils.w("BoxShadow", "box-shadow disabled");
+      }
       return;
     }
 
@@ -994,7 +996,9 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
 
   protected void clearBoxShadow() {
     if (!BoxShadowUtil.isBoxShadowEnabled()) {
-      WXLogUtils.w("BoxShadow", "box-shadow disabled");
+      if(WXEnvironment.isApkDebugable()) {
+        WXLogUtils.w("BoxShadow", "box-shadow disabled");
+      }
       return;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffbf07c6/android/sdk/src/main/java/com/taobao/weex/ui/config/AutoScanConfigRegister.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/config/AutoScanConfigRegister.java b/android/sdk/src/main/java/com/taobao/weex/ui/config/AutoScanConfigRegister.java
index 5c35de6..597fb4d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/config/AutoScanConfigRegister.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/config/AutoScanConfigRegister.java
@@ -26,10 +26,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.taobao.weex.WXEnvironment;
 import com.taobao.weex.WXSDKEngine;
+import com.taobao.weex.bridge.JavascriptInvokable;
 import com.taobao.weex.utils.WXFileUtils;
 import com.taobao.weex.utils.WXLogUtils;
 
 import java.io.IOException;
+import java.util.concurrent.ConcurrentLinkedQueue;
 
 /**
  * Created by furture on 2018/2/7.
@@ -40,6 +42,20 @@ public class AutoScanConfigRegister {
 
     public static final  String TAG  = "WeexScanConfigRegister";
 
+    private static ConcurrentLinkedQueue<JavascriptInvokable> autoLoadClass  = new ConcurrentLinkedQueue<>();
+
+    /**
+     * pre load module class and methods when so&jsf init
+     **/
+    public static void preLoad(JavascriptInvokable invokable){
+        if(invokable instanceof ConfigModuleFactory){
+            return;
+        }
+        if(invokable instanceof ConfigComponentHolder){
+            return;
+        }
+        autoLoadClass.add(invokable);
+    }
 
     /**
      * auto scan config files and do auto config from files, none need center register
@@ -49,6 +65,16 @@ public class AutoScanConfigRegister {
             @Override
             public void run() {
                 doScanConfigSync();
+                JavascriptInvokable invokable = autoLoadClass.poll();
+                int count = 0;
+                while (invokable != null){
+                    invokable.getMethods();
+                    invokable = autoLoadClass.poll();
+                    count++;
+                }
+                if(WXEnvironment.isApkDebugable()){
+                    WXLogUtils.d(TAG, "auto preload class's methods count " + count);
+                }
             }
         });
        thread.setName("AutoScanConfigRegister");


[3/3] incubator-weex git commit: Merge remote-tracking branch 'apache/master' into release-0.19-quick-startup

Posted by mi...@apache.org.
Merge remote-tracking branch 'apache/master' into release-0.19-quick-startup


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

Branch: refs/heads/master
Commit: cf531a16735ce14055243cbe01c17c81a0835400
Parents: 440585a 3366d33
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Thu May 3 12:21:55 2018 +0800
Committer: jianbai.gbj <ji...@alibaba-inc.com>
Committed: Thu May 3 12:21:55 2018 +0800

----------------------------------------------------------------------
 .../com/taobao/weex/ui/component/WXImage.java   |  2 +-
 .../taobao/weex/ui/component/WXVContainer.java  | 17 ++++------
 .../weex/ui/component/binding/Statements.java   |  1 +
 .../Sources/Component/WXScrollerComponent.mm    | 35 ++++++++++++++++++++
 4 files changed, 44 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[2/3] incubator-weex git commit: Merge remote-tracking branch 'apache/master' into release-0.19-quick-startup

Posted by mi...@apache.org.
Merge remote-tracking branch 'apache/master' into release-0.19-quick-startup

# Conflicts:
#	android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
#	android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java


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

Branch: refs/heads/master
Commit: 440585adcfd96fbf7d69206cebd46346545f2950
Parents: ffbf07c 67d3f1d
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Sat Apr 28 15:47:51 2018 +0800
Committer: jianbai.gbj <ji...@alibaba-inc.com>
Committed: Sat Apr 28 15:47:51 2018 +0800

----------------------------------------------------------------------
 LICENSE                                         |  105 +-
 POSSIBLE-NOTICES-FOR-BIN-DIST                   |   20 +-
 WeexSDK.podspec                                 |    2 +-
 android/commons/build.gradle                    |   12 +-
 .../weex/commons/AbstractWeexActivity.java      |    4 -
 .../commons/adapter/FrescoImageComponent.java   |    6 +-
 .../weex/commons/adapter/ImageAdapter.java      |    4 -
 android/playground/app/build.gradle             |   24 +-
 .../benchmark/BenchmarkActivityTestRule.java    |   53 -
 .../alibaba/weex/benchmark/BenchmarkTest.java   |  106 +-
 .../weex/benchmark/WeexNativeCompareTest.java   |   22 +-
 .../weex/uitest/WeexUiTestCaseTcElementOpt.java |    6 +-
 .../com/alibaba/weex/BenchmarkActivity.java     |   29 +-
 .../java/com/alibaba/weex/WXApplication.java    |    3 -
 .../java/com/alibaba/weex/WXPageActivity.java   |   11 +-
 .../alibaba/weex/extend/component/RichText.java |    6 +-
 .../extend/component/WXComponentSyncTest.java   |    8 +-
 .../alibaba/weex/extend/component/WXMask.java   |   33 +-
 .../weex/extend/component/WXParallax.java       |   17 +-
 .../extend/component/dom/WXMaskDomObject.java   |  254 -
 .../weex/extend/module/WXWsonTestModule.java    |    1 -
 .../zxing/client/android/CaptureActivity.java   |  289 +-
 .../android/result/WifiResultHandler.java       |    2 +-
 android/sdk/.gitignore                          |    3 +-
 android/sdk/assets/main.js                      |    2 +-
 android/sdk/assets/weex-main-jsfm.js            |    2 +-
 android/sdk/assets/weex-rax-api.js              |    2 +-
 android/sdk/build.gradle                        |   58 +-
 android/sdk/gradle/wrapper/gradle-wrapper.jar   |  Bin 0 -> 52266 bytes
 .../gradle/wrapper/gradle-wrapper.properties    |    6 +
 android/sdk/libs/armeabi/libweexjsc.so          |  Bin 276000 -> 0 bytes
 android/sdk/libs/armeabi/libweexjss.so          |  Bin 2965608 -> 3758132 bytes
 android/sdk/libs/x86/libweexjsb.so              |  Bin
 android/sdk/libs/x86/libweexjsc.so              |  Bin 655556 -> 0 bytes
 android/sdk/libs/x86/libweexjss.so              |  Bin 8373712 -> 10928784 bytes
 android/sdk/proguard-rules.pro                  |    5 +-
 android/sdk/src/main/AndroidManifest.xml        |    5 +-
 .../main/java/com/taobao/weex/InitConfig.java   |    2 +-
 .../com/taobao/weex/LayoutFinishListener.java   |   26 -
 .../java/com/taobao/weex/RenderContainer.java   |   46 +-
 .../java/com/taobao/weex/WXEnvironment.java     |   14 +-
 .../main/java/com/taobao/weex/WXSDKEngine.java  |  206 +-
 .../java/com/taobao/weex/WXSDKInstance.java     |  485 +-
 .../main/java/com/taobao/weex/WXSDKManager.java |   13 +-
 .../com/taobao/weex/WeexFrameRateControl.java   |   88 +
 .../taobao/weex/adapter/ClassLoaderAdapter.java |    1 -
 .../appfram/websocket/WebSocketCloseCodes.java  |    2 +-
 .../com/taobao/weex/base/CalledByNative.java    |   22 +
 .../java/com/taobao/weex/base/FloatUtil.java    |   31 +
 .../taobao/weex/base/SystemMessageHandler.java  |  106 +
 .../java/com/taobao/weex/bridge/JSCallback.java |    2 -
 .../taobao/weex/bridge/ModuleFactoryImpl.java   |   21 +-
 .../taobao/weex/bridge/NativeInvokeHelper.java  |   16 +-
 .../java/com/taobao/weex/bridge/WXBridge.java   |  689 +-
 .../com/taobao/weex/bridge/WXBridgeManager.java | 1628 ++---
 .../java/com/taobao/weex/bridge/WXJSObject.java |    1 -
 .../com/taobao/weex/bridge/WXJsFunctions.java   |  110 +
 .../com/taobao/weex/bridge/WXModuleManager.java |   35 +-
 .../taobao/weex/bridge/WXValidateProcessor.java |    4 +-
 .../java/com/taobao/weex/common/Constants.java  |   23 +-
 .../java/com/taobao/weex/common/IWXBridge.java  |  110 +-
 .../com/taobao/weex/common/IWXDebugProxy.java   |    2 +-
 .../com/taobao/weex/common/IWXJsFunctions.java  |   72 +
 .../java/com/taobao/weex/common/IWXTask.java    |   23 -
 .../com/taobao/weex/common/WXErrorCode.java     |   16 +-
 .../com/taobao/weex/common/WXImageStrategy.java |    8 +
 .../taobao/weex/common/WXJSExceptionInfo.java   |   18 +-
 .../com/taobao/weex/common/WXPerformance.java   |  125 +-
 .../java/com/taobao/weex/common/WXRequest.java  |    8 +
 .../com/taobao/weex/dom/ApplyStyleConsumer.java |   59 -
 .../taobao/weex/dom/BasicEditTextDomObject.java |  107 -
 .../com/taobao/weex/dom/CSSAlignConvert.java    |   60 -
 .../java/com/taobao/weex/dom/CSSConstants.java  |   28 +
 .../weex/dom/CSSFlexDirectionConvert.java       |   42 -
 .../com/taobao/weex/dom/CSSJustifyConvert.java  |   42 -
 .../taobao/weex/dom/CSSPositionTypeConvert.java |   36 -
 .../java/com/taobao/weex/dom/CSSShorthand.java  |  112 +
 .../com/taobao/weex/dom/CSSWrapConvert.java     |   36 -
 .../java/com/taobao/weex/dom/DOMAction.java     |   30 -
 .../com/taobao/weex/dom/DOMActionContext.java   |   71 -
 .../taobao/weex/dom/DOMActionContextImpl.java   |  461 --
 .../java/com/taobao/weex/dom/DomContext.java    |   30 -
 .../com/taobao/weex/dom/ImmutableDomObject.java |   63 -
 .../java/com/taobao/weex/dom/RenderAction.java  |   29 -
 .../taobao/weex/dom/RenderActionContext.java    |   32 -
 .../com/taobao/weex/dom/RenderActionTask.java   |   65 -
 .../java/com/taobao/weex/dom/RenderContext.java |   32 +
 .../weex/dom/SafePutConcurrentHashMap.java      |   51 -
 .../weex/dom/TextAreaEditTextDomObject.java     |   58 -
 .../main/java/com/taobao/weex/dom/WXAttr.java   |  109 +-
 .../com/taobao/weex/dom/WXCellDomObject.java    |  124 -
 .../java/com/taobao/weex/dom/WXDomHandler.java  |  146 -
 .../java/com/taobao/weex/dom/WXDomManager.java  |  237 -
 .../java/com/taobao/weex/dom/WXDomModule.java   |  175 -
 .../java/com/taobao/weex/dom/WXDomObject.java   |  936 ---
 .../com/taobao/weex/dom/WXDomObjectFactory.java |   58 -
 .../java/com/taobao/weex/dom/WXDomRegistry.java |   59 -
 .../java/com/taobao/weex/dom/WXDomTask.java     |   34 -
 .../main/java/com/taobao/weex/dom/WXEvent.java  |    6 +-
 .../com/taobao/weex/dom/WXListDomObject.java    |   51 -
 .../taobao/weex/dom/WXRecyclerDomObject.java    |  281 -
 .../taobao/weex/dom/WXScrollerDomObject.java    |   49 -
 .../main/java/com/taobao/weex/dom/WXStyle.java  |  463 +-
 .../com/taobao/weex/dom/WXSwitchDomObject.java  |   58 -
 .../com/taobao/weex/dom/WXTextDomObject.java    |  601 --
 .../dom/action/AbstractAddElementAction.java    |  182 -
 .../dom/action/AbstractLayoutFinishAction.java  |   52 -
 .../java/com/taobao/weex/dom/action/Action.java |   26 -
 .../com/taobao/weex/dom/action/Actions.java     |  237 -
 .../weex/dom/action/AddElementAction.java       |  155 -
 .../taobao/weex/dom/action/AddEventAction.java  |  109 -
 .../taobao/weex/dom/action/AddRuleAction.java   |   68 -
 .../taobao/weex/dom/action/AnimationAction.java |  299 -
 .../weex/dom/action/CreateBodyAction.java       |  144 -
 .../weex/dom/action/CreateFinishAction.java     |   64 -
 .../weex/dom/action/ExecutableRenderAction.java |   48 -
 .../weex/dom/action/GetComponentRectAction.java |  116 -
 .../weex/dom/action/InvokeMethodAction.java     |   50 -
 .../weex/dom/action/ModuleInvocationAction.java |   76 -
 .../weex/dom/action/MoveElementAction.java      |  103 -
 .../weex/dom/action/RefreshFinishAction.java    |   39 -
 .../weex/dom/action/ReloadPageAction.java       |   66 -
 .../weex/dom/action/RemoveElementAction.java    |  109 -
 .../weex/dom/action/RemoveEventAction.java      |   80 -
 .../weex/dom/action/ScrollToElementAction.java  |   67 -
 .../taobao/weex/dom/action/TraceableAction.java |   83 -
 .../weex/dom/action/UpdateAttributeAction.java  |   83 -
 .../dom/action/UpdateComponentDataAction.java   |   69 -
 .../weex/dom/action/UpdateFinishAction.java     |   46 -
 .../weex/dom/action/UpdateStyleAction.java      |  118 -
 .../java/com/taobao/weex/dom/flex/CSSAlign.java |   14 -
 .../com/taobao/weex/dom/flex/CSSConstants.java  |   15 -
 .../com/taobao/weex/dom/flex/CSSDirection.java  |   12 -
 .../taobao/weex/dom/flex/CSSFlexDirection.java  |   13 -
 .../com/taobao/weex/dom/flex/CSSJustify.java    |   14 -
 .../com/taobao/weex/dom/flex/CSSLayout.java     |   76 -
 .../taobao/weex/dom/flex/CSSLayoutContext.java  |   18 -
 .../java/com/taobao/weex/dom/flex/CSSNode.java  |  642 --
 .../taobao/weex/dom/flex/CSSPositionType.java   |   11 -
 .../java/com/taobao/weex/dom/flex/CSSStyle.java |  123 -
 .../java/com/taobao/weex/dom/flex/CSSWrap.java  |   11 -
 .../taobao/weex/dom/flex/CachedCSSLayout.java   |   18 -
 .../com/taobao/weex/dom/flex/FloatUtil.java     |   18 -
 .../com/taobao/weex/dom/flex/LayoutEngine.java  |  934 ---
 .../com/taobao/weex/dom/flex/MeasureOutput.java |   15 -
 .../java/com/taobao/weex/dom/flex/Spacing.java  |  237 -
 .../weex/dom/text/FontBroadcastReceiver.java    |   79 -
 .../weex/dom/transition/WXTransition.java       |  317 +-
 .../com/taobao/weex/el/parse/Operators.java     |   17 +-
 .../java/com/taobao/weex/el/parse/Parser.java   |    3 +-
 .../java/com/taobao/weex/http/WXHttpUtil.java   |    8 +-
 .../com/taobao/weex/http/WXStreamModule.java    |   21 +-
 .../weex/layout/ContentBoxMeasurement.java      |   78 +
 .../com/taobao/weex/layout/MeasureMode.java     |   40 +
 .../com/taobao/weex/layout/MeasureSize.java     |   42 +
 .../measurefunc/TextContentBoxMeasurement.java  |  472 ++
 .../performance/WXAnalyzerDataTransfer.java     |   22 +-
 .../java/com/taobao/weex/tracing/WXTracing.java |    2 +-
 .../com/taobao/weex/ui/ComponentCreator.java    |    4 +-
 .../weex/ui/ExternalLoaderComponentHolder.java  |   14 +-
 .../java/com/taobao/weex/ui/IWXRenderTask.java  |   26 -
 .../taobao/weex/ui/RenderActionContextImpl.java |  113 -
 .../com/taobao/weex/ui/RenderContextImpl.java   |   75 +
 .../taobao/weex/ui/SimpleComponentHolder.java   |   26 +-
 .../com/taobao/weex/ui/WXComponentRegistry.java |    1 +
 .../com/taobao/weex/ui/WXRenderHandler.java     |   24 +-
 .../com/taobao/weex/ui/WXRenderManager.java     |  138 +-
 .../taobao/weex/ui/action/ActionAddRule.java    |   78 +
 .../weex/ui/action/ActionGetComponentRect.java  |  120 +
 .../weex/ui/action/ActionInvokeMethod.java      |   54 +
 .../taobao/weex/ui/action/ActionReloadPage.java |   49 +
 .../weex/ui/action/BasicComponentData.java      |  265 +
 .../weex/ui/action/BasicGraphicAction.java      |   69 +
 .../action/GraphicActionAbstractAddElement.java |   94 +
 .../weex/ui/action/GraphicActionAddElement.java |  115 +
 .../weex/ui/action/GraphicActionAddEvent.java   |   53 +
 .../weex/ui/action/GraphicActionAnimation.java  |  266 +
 .../weex/ui/action/GraphicActionCreateBody.java |   99 +
 .../ui/action/GraphicActionCreateFinish.java    |   70 +
 .../weex/ui/action/GraphicActionLayout.java     |   51 +
 .../ui/action/GraphicActionMoveElement.java     |   52 +
 .../ui/action/GraphicActionRefreshFinish.java   |   55 +
 .../ui/action/GraphicActionRemoveElement.java   |   56 +
 .../ui/action/GraphicActionRemoveEvent.java     |   49 +
 .../ui/action/GraphicActionScrollToElement.java |   51 +
 .../weex/ui/action/GraphicActionUpdateAttr.java |   52 +
 .../ui/action/GraphicActionUpdateStyle.java     |  134 +
 .../taobao/weex/ui/action/GraphicPosition.java  |   66 +
 .../com/taobao/weex/ui/action/GraphicSize.java  |   46 +
 .../com/taobao/weex/ui/action/IExecutable.java  |   25 +
 .../weex/ui/animation/TransformParser.java      |   25 +-
 .../weex/ui/animation/WXAnimationBean.java      |   12 +-
 .../weex/ui/animation/WXAnimationModule.java    |   27 +-
 .../ui/component/AbstractEditComponent.java     |  149 +-
 .../weex/ui/component/ComponentUtils.java       |  125 +-
 .../com/taobao/weex/ui/component/Textarea.java  |   41 +-
 .../java/com/taobao/weex/ui/component/WXA.java  |   25 +-
 .../taobao/weex/ui/component/WXBaseRefresh.java |    6 +-
 .../taobao/weex/ui/component/WXComponent.java   | 1559 ++---
 .../weex/ui/component/WXComponentFactory.java   |   37 +-
 .../weex/ui/component/WXComponentProp.java      |    5 +-
 .../com/taobao/weex/ui/component/WXDiv.java     |   25 +-
 .../com/taobao/weex/ui/component/WXEmbed.java   |   64 +-
 .../com/taobao/weex/ui/component/WXHeader.java  |   12 +-
 .../com/taobao/weex/ui/component/WXImage.java   |  237 +-
 .../taobao/weex/ui/component/WXIndicator.java   |   47 +-
 .../com/taobao/weex/ui/component/WXInput.java   |   15 +-
 .../com/taobao/weex/ui/component/WXLoading.java |   18 +-
 .../weex/ui/component/WXLoadingIndicator.java   |    7 +-
 .../com/taobao/weex/ui/component/WXRefresh.java |   23 +-
 .../taobao/weex/ui/component/WXScroller.java    |   95 +-
 .../com/taobao/weex/ui/component/WXSlider.java  |   28 +-
 .../weex/ui/component/WXSliderNeighbor.java     |   10 +-
 .../com/taobao/weex/ui/component/WXSwitch.java  |   76 +-
 .../com/taobao/weex/ui/component/WXText.java    |  127 +-
 .../taobao/weex/ui/component/WXVContainer.java  |  199 +-
 .../com/taobao/weex/ui/component/WXVideo.java   |   18 +-
 .../com/taobao/weex/ui/component/WXWeb.java     |   18 +-
 .../ui/component/basic/WXBasicComponent.java    |  215 +
 .../weex/ui/component/binding/Layouts.java      |  135 +-
 .../weex/ui/component/binding/Statements.java   |   74 +-
 .../component/helper/ScrollStartEndHelper.java  |   15 +-
 .../ui/component/helper/WXTimeInputHelper.java  |   70 +-
 .../ui/component/list/BasicListComponent.java   |  305 +-
 .../ui/component/list/GapItemDecoration.java    |   52 +-
 .../component/list/HorizontalListComponent.java |    6 +-
 .../ui/component/list/SimpleListComponent.java  |    6 +-
 .../ui/component/list/StickyHeaderHelper.java   |   46 +-
 .../taobao/weex/ui/component/list/WXCell.java   |   71 +-
 .../weex/ui/component/list/WXListComponent.java |  250 +-
 .../list/template/AsyncCellLoadTask.java        |    2 +-
 .../list/template/CellDataManager.java          |    3 +-
 .../component/list/template/TemplateCache.java  |    2 +
 .../list/template/TemplateStickyHelper.java     |   14 +-
 .../list/template/TemplateViewHolder.java       |   32 +-
 .../list/template/WXRecyclerTemplateList.java   |  217 +-
 .../pesudo/OnActivePseudoListener.java          |   26 -
 .../component/pesudo/OnActivePseudoListner.java |   26 +
 .../pesudo/TouchActivePseudoListener.java       |   12 +-
 .../weex/ui/config/ConfigComponentHolder.java   |    6 +-
 .../weex/ui/config/ConfigModuleFactory.java     |    1 -
 .../com/taobao/weex/ui/flat/FlatComponent.java  |    4 +-
 .../com/taobao/weex/ui/flat/FlatGUIContext.java |   62 +-
 .../taobao/weex/ui/flat/WidgetContainer.java    |   15 +-
 .../weex/ui/flat/widget/AndroidViewWidget.java  |   14 +-
 .../taobao/weex/ui/flat/widget/BaseWidget.java  |    4 +-
 .../taobao/weex/ui/flat/widget/TextWidget.java  |    1 +
 .../com/taobao/weex/ui/flat/widget/Widget.java  |   10 +-
 .../taobao/weex/ui/flat/widget/WidgetGroup.java |    4 +-
 .../com/taobao/weex/ui/module/WXDomModule.java  |  161 +
 .../com/taobao/weex/ui/module/WXMetaModule.java |   10 +-
 .../taobao/weex/ui/module/WXTimerModule.java    |   55 +-
 .../java/com/taobao/weex/ui/view/IWebView.java  |    4 +-
 .../taobao/weex/ui/view/WXCircleViewPager.java  |    4 +-
 .../com/taobao/weex/ui/view/WXImageView.java    |   34 +-
 .../com/taobao/weex/ui/view/WXScrollView.java   |    8 +-
 .../com/taobao/weex/ui/view/WXSwitchView.java   |   35 -
 .../com/taobao/weex/ui/view/WXTextView.java     |    4 +-
 .../com/taobao/weex/ui/view/WXVideoView.java    |    8 +-
 .../weex/ui/view/border/BorderCorner.java       |  207 +-
 .../weex/ui/view/border/BorderDrawable.java     |  332 +-
 .../taobao/weex/ui/view/border/BorderEdge.java  |   82 +-
 .../taobao/weex/ui/view/border/BorderStyle.java |   23 +-
 .../taobao/weex/ui/view/border/BorderUtil.java  |   53 +-
 .../view/border/BorderWidthStyleColorType.java  |   38 -
 .../weex/ui/view/border/BottomLeftCorner.java   |   77 +-
 .../weex/ui/view/border/BottomRightCorner.java  |   81 +-
 .../weex/ui/view/border/TopLeftCorner.java      |   74 +-
 .../weex/ui/view/border/TopRightCorner.java     |   77 +-
 .../taobao/weex/ui/view/gesture/WXGesture.java  |   39 +-
 .../ui/view/gesture/WXGestureObservable.java    |    4 +-
 .../ui/view/refresh/core/WXRefreshView.java     |    4 +-
 .../ui/view/refresh/core/WXSwipeLayout.java     |   40 +-
 .../ui/view/refresh/wrapper/BaseBounceView.java |   51 +-
 .../com/taobao/weex/utils/BoxShadowUtil.java    |   22 +-
 .../com/taobao/weex/utils/FunctionParser.java   |   20 +-
 .../com/taobao/weex/utils/ImageDrawable.java    |   10 +-
 .../taobao/weex/utils/SingleFunctionParser.java |    2 +-
 .../taobao/weex/utils/StaticLayoutProxy.java    |    8 +-
 .../com/taobao/weex/utils/TypefaceUtil.java     |    4 +-
 .../java/com/taobao/weex/utils/WXDomUtils.java  |   64 +-
 .../com/taobao/weex/utils/WXExceptionUtils.java |  124 +-
 .../java/com/taobao/weex/utils/WXJsonUtils.java |   37 -
 .../java/com/taobao/weex/utils/WXLogUtils.java  |   66 +-
 .../taobao/weex/utils/WXReflectionUtils.java    |   18 +-
 .../com/taobao/weex/utils/WXResourceUtils.java  |  106 +-
 .../taobao/weex/utils/WXSoInstallMgrSdk.java    |   63 +-
 .../java/com/taobao/weex/utils/WXUtils.java     |  135 +-
 .../java/com/taobao/weex/utils/WXViewUtils.java |   37 +-
 .../main/java/com/taobao/weex/wson/Wson.java    |  820 ---
 .../java/com/taobao/weex/WXSDKEngineTest.java   |    7 -
 .../java/com/taobao/weex/WXSDKInstanceTest.java |    1 -
 .../weex/adapter/DefaultUriAdapterTest.java     |    2 +-
 .../taobao/weex/bridge/WXBridgeManagerTest.java |   10 +-
 .../com/taobao/weex/bridge/WXBridgeTest.java    |    5 +-
 .../java/com/taobao/weex/dom/TestDomObject.java |   55 -
 .../com/taobao/weex/dom/WXDomModuleTest.java    |  131 -
 .../com/taobao/weex/dom/WXDomObjectTest.java    |  108 -
 .../com/taobao/weex/dom/WXDomStatementTest.java |    9 +-
 .../taobao/weex/dom/WXTextDomObjectTest.java    |    5 +-
 .../com/taobao/weex/dom/action/TestActions.java |   77 -
 .../weex/dom/transition/WXTransitionTest.java   |   96 -
 .../java/com/taobao/weex/el/FailedCaseTest.java |   50 -
 .../com/taobao/weex/el/IfStatementTest.java     |  155 -
 .../java/com/taobao/weex/el/ParserTest.java     |  244 -
 .../taobao/weex/http/WXStreamModuleTest.java    |   15 +-
 .../com/taobao/weex/ui/ComponentHolderTest.java |    3 -
 .../taobao/weex/ui/WXRenderStatementTest.java   |    4 +-
 .../weex/ui/animation/TransformParserTest.java  |   38 -
 .../ui/animation/WXAnimationModuleTest.java     |    5 +-
 .../taobao/weex/ui/component/ComponentTest.java |    9 +-
 .../weex/ui/component/EditComponentTest.java    |    1 -
 .../weex/ui/component/PriorityQueueTest.java    |   56 -
 .../taobao/weex/ui/component/TestComponent.java |    4 -
 .../weex/ui/component/WXComponentTest.java      |    2 +-
 .../com/taobao/weex/ui/component/WXDivTest.java |   11 +-
 .../taobao/weex/ui/component/WXEmbedTest.java   |    6 +-
 .../taobao/weex/ui/component/WXHeaderTest.java  |    4 -
 .../taobao/weex/ui/component/WXImageTest.java   |    2 -
 .../taobao/weex/ui/component/WXLoadingTest.java |    3 -
 .../taobao/weex/ui/component/WXRefreshTest.java |    1 -
 .../weex/ui/component/WXScrollerTest.java       |    5 -
 .../weex/ui/component/WXSliderNeighborTest.java |    1 -
 .../taobao/weex/ui/component/WXSliderTest.java  |    1 -
 .../taobao/weex/ui/component/WXSwitchTest.java  |    3 -
 .../taobao/weex/ui/component/WXTextTest.java    |   22 +-
 .../taobao/weex/ui/component/WXVideoTest.java   |    4 -
 .../com/taobao/weex/ui/component/WXWebTest.java |    3 -
 .../ui/component/binding/BindingValueTest.java  |   65 -
 .../ui/component/binding/StatementTest.java     |  186 -
 .../component/list/DefaultDragHelperTest.java   |    3 -
 .../ui/component/list/WXListComponentTest.java  |    5 +-
 .../weex/ui/module/WXModalUIModuleTest.java     |    9 +-
 .../weex/ui/module/WXTimerModuleTest.java       |   45 +-
 .../weex/ui/view/border/BorderDrawableTest.java |    1 -
 .../weex/ui/view/gesture/WXGestureTest.java     |    5 -
 .../taobao/weex/utils/WXExceptionUtilsTest.java |   74 -
 .../com/taobao/weex/utils/WXFileUtilsTest.java  |    9 -
 .../com/taobao/weex/utils/WXLogUtilsTest.java   |   17 +-
 .../weex/utils/WXReflectionUtilsTest.java       |    9 -
 .../java/com/taobao/weex/utils/WXUtilsTest.java |    3 +-
 .../java/com/taobao/weex/wson/AnnoTest.java     |   41 -
 .../test/java/com/taobao/weex/wson/Person.java  |   30 -
 ios/.gitignore                                  |    2 +
 .../WeexDemo.xcodeproj/project.pbxproj          |   12 +-
 ios/playground/WeexDemo/AppDelegate.m           |    9 +
 ios/playground/WeexDemo/WXExtModule.m           |    7 +
 ios/playground/WeexDemo/debug/DebugAnalyzer.h   |   24 +
 ios/playground/WeexDemo/debug/DebugAnzlyzer.m   |   30 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  391 +-
 ios/sdk/WeexSDK/Sources/Bridge/JSContext+Weex.h |   26 +
 ios/sdk/WeexSDK/Sources/Bridge/JSContext+Weex.m |   35 +
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    |  125 +-
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |    2 +
 .../Component/RecycleList/WXCellSlotComponent.m |   94 -
 .../RecycleList/WXCellSlotComponent.mm          |  117 +
 .../RecycleList/WXRecycleListComponent.m        |  618 --
 .../RecycleList/WXRecycleListComponent.mm       |  619 ++
 .../Component/Recycler/WXRecyclerComponent.m    |  738 ---
 .../Component/Recycler/WXRecyclerComponent.mm   |  768 +++
 .../WeexSDK/Sources/Component/WXCellComponent.h |    1 +
 .../WeexSDK/Sources/Component/WXCellComponent.m |  142 -
 .../Sources/Component/WXCellComponent.mm        |  174 +
 .../Sources/Component/WXComponent_internal.h    |   11 +-
 .../Sources/Component/WXCycleSliderComponent.m  |  681 --
 .../Sources/Component/WXCycleSliderComponent.mm |  692 ++
 .../WeexSDK/Sources/Component/WXEditComponent.m |  918 ---
 .../Sources/Component/WXEditComponent.mm        |  971 +++
 .../Sources/Component/WXHeaderComponent.m       |   87 -
 .../Sources/Component/WXHeaderComponent.mm      |  110 +
 .../Sources/Component/WXImageComponent.m        |   29 +-
 .../Sources/Component/WXIndicatorComponent.m    |   21 +-
 .../WeexSDK/Sources/Component/WXListComponent.m |  971 ---
 .../Sources/Component/WXListComponent.mm        |  997 +++
 .../Sources/Component/WXLoadingComponent.m      |  152 -
 .../Sources/Component/WXLoadingComponent.mm     |  164 +
 .../Sources/Component/WXRefreshComponent.m      |  207 -
 .../Sources/Component/WXRefreshComponent.mm     |  224 +
 .../Sources/Component/WXScrollerComponent.h     |    2 -
 .../Sources/Component/WXScrollerComponent.m     |  873 ---
 .../Sources/Component/WXScrollerComponent.mm    |  951 +++
 .../Component/WXSliderNeighborComponent.m       | 1803 ------
 .../Component/WXSliderNeighborComponent.mm      | 1812 ++++++
 .../Sources/Component/WXSwitchComponent.m       |  151 -
 .../Sources/Component/WXSwitchComponent.mm      |  162 +
 .../Sources/Component/WXTextAreaComponent.m     |  233 -
 .../Sources/Component/WXTextAreaComponent.mm    |  261 +
 .../WeexSDK/Sources/Component/WXTextComponent.h |    1 +
 .../WeexSDK/Sources/Component/WXTextComponent.m | 1076 ----
 .../Sources/Component/WXTextComponent.mm        | 1170 ++++
 .../WeexSDK/Sources/Display/UIBezierPath+Weex.m |    6 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |    2 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h     |   20 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m     |  106 +
 ios/sdk/WeexSDK/Sources/Layout/Layout.c         |    2 +
 .../WeexSDK/Sources/Layout/WXComponent+Layout.h |   60 +-
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |   38 +-
 .../Sources/Layout/WXComponent+Layout.mm        |  963 +++
 ios/sdk/WeexSDK/Sources/Layout/WXCoreFlexEnum.h |  107 +
 ios/sdk/WeexSDK/Sources/Layout/WXCoreLayout.cpp | 1038 +++
 ios/sdk/WeexSDK/Sources/Layout/WXCoreLayout.h   | 1073 +++
 ios/sdk/WeexSDK/Sources/Layout/WXCoreStyle.cpp  |  247 +
 ios/sdk/WeexSDK/Sources/Layout/WXCoreStyle.h    |  285 +
 ios/sdk/WeexSDK/Sources/Layout/WXLayoutDefine.h |    6 +
 .../Sources/Layout/WXScrollerComponent+Layout.h |   42 +
 .../Layout/WXScrollerComponent+Layout.mm        |   53 +
 .../WeexSDK/Sources/Manager/WXBridgeManager.m   |    6 +
 .../Sources/Manager/WXComponentManager.m        |  906 ---
 .../Sources/Manager/WXComponentManager.mm       | 1158 ++++
 .../WeexSDK/Sources/Manager/WXTracingManager.m  |    2 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.h     |   13 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |  841 ---
 ios/sdk/WeexSDK/Sources/Model/WXComponent.mm    |  953 +++
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |   27 +-
 .../Sources/Model/WXSDKInstance_performance.h   |   67 +
 .../Sources/Model/WXSDKInstance_performance.m   |   35 +
 .../Sources/Model/WXSDKInstance_private.h       |    5 +
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |   45 +-
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |    6 +
 ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m  |    6 +
 ios/sdk/WeexSDK/Sources/Module/WXTransition.h   |    4 +-
 ios/sdk/WeexSDK/Sources/Module/WXTransition.m   |  500 --
 ios/sdk/WeexSDK/Sources/Module/WXTransition.mm  |  519 ++
 .../Sources/Monitor/WXAnalyzerCenter+Transfer.h |   15 +
 .../WeexSDK/Sources/Monitor/WXAnalyzerCenter.h  |   16 +
 .../WeexSDK/Sources/Monitor/WXAnalyzerCenter.m  |  234 +
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.m  |    5 +
 ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h     |   27 +
 ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m     |   75 +-
 .../Sources/Protocol/WXAnalyzerProtocol.h       |   25 +
 .../Sources/Protocol/WXAppMonitorProtocol.h     |   19 +
 ios/sdk/WeexSDK/Sources/Utility/WXConvert.m     |   23 +
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |    2 +
 ios/sdk/WeexSDK/Sources/Utility/WXLog.h         |    4 +-
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |   17 +-
 .../Sources/View/WXComponent+ViewManagement.m   |  346 -
 .../Sources/View/WXComponent+ViewManagement.mm  |  347 +
 ios/sdk/WeexSDK/Sources/View/WXRootView.h       |    2 +
 ios/sdk/WeexSDK/Sources/View/WXRootView.m       |   17 +
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |    7 +
 test/pages/css/border.vue                       |    9 +
 weex_core/.clang-format                         |    2 +
 weex_core/.gitignore                            |    5 +
 weex_core/CMakeLists.txt                        |    5 +
 weex_core/Source/CMakeLists.txt                 |   91 +
 weex_core/Source/IPC/Buffering/IPCBuffer.h      |   13 +
 weex_core/Source/IPC/CMakeLists.txt             |   22 +
 weex_core/Source/IPC/IPCArguments.h             |   30 +
 weex_core/Source/IPC/IPCByteArray.h             |    8 +
 weex_core/Source/IPC/IPCCheck.cpp               |   17 +
 weex_core/Source/IPC/IPCCheck.h                 |   16 +
 weex_core/Source/IPC/IPCCommunicator.cpp        |  363 ++
 weex_core/Source/IPC/IPCCommunicator.h          |   30 +
 weex_core/Source/IPC/IPCException.cpp           |   32 +
 weex_core/Source/IPC/IPCException.h             |   16 +
 weex_core/Source/IPC/IPCFutexPageQueue.cpp      |  191 +
 weex_core/Source/IPC/IPCFutexPageQueue.h        |   48 +
 weex_core/Source/IPC/IPCHandler.cpp             |   36 +
 weex_core/Source/IPC/IPCHandler.h               |   18 +
 weex_core/Source/IPC/IPCListener.cpp            |   60 +
 weex_core/Source/IPC/IPCListener.h              |   14 +
 weex_core/Source/IPC/IPCLog.h                   |   12 +
 weex_core/Source/IPC/IPCMessageJS.h             |   41 +
 weex_core/Source/IPC/IPCResult.cpp              |  347 +
 weex_core/Source/IPC/IPCResult.h                |   34 +
 weex_core/Source/IPC/IPCSender.cpp              |   76 +
 weex_core/Source/IPC/IPCSender.h                |   15 +
 weex_core/Source/IPC/IPCString.h                |    7 +
 weex_core/Source/IPC/IPCType.h                  |   29 +
 .../Source/IPC/Serializing/IPCSerializer.cpp    |  206 +
 .../Source/IPC/Serializing/IPCSerializer.h      |   26 +
 weex_core/Source/IPC/ashmem.c                   |  100 +
 weex_core/Source/IPC/ashmem.h                   |   46 +
 weex_core/Source/IPC/futex.h                    |  109 +
 weex_core/Source/__init__.py                    |    0
 weex_core/Source/android/__init__.py            |    0
 weex_core/Source/android/base/base64/base64.cpp |   33 +
 weex_core/Source/android/base/base64/base64.h   |    9 +
 .../android/base/base64/modp_base64/modp_b64.cc |  265 +
 .../android/base/base64/modp_base64/modp_b64.h  |  165 +
 .../base/base64/modp_base64/modp_b64_data.h     |  285 +
 .../Source/android/base/jni/android_jni.cpp     |  108 +
 weex_core/Source/android/base/jni/android_jni.h |   63 +
 .../Source/android/base/jni/scoped_java_ref.cpp |   75 +
 .../Source/android/base/jni/scoped_java_ref.h   |  122 +
 weex_core/Source/android/base/log_utils.h       |   55 +
 .../android/base/string/scoped_jstring.cpp      |   47 +
 .../Source/android/base/string/scoped_jstring.h |   45 +
 .../android/base/string/scoped_jstring_utf8.cpp |   38 +
 .../android/base/string/scoped_jstring_utf8.h   |   49 +
 .../Source/android/base/string/string_utils.h   |  150 +
 .../android/bridge/impl/bridge_impl_android.cpp |  893 +++
 .../android/bridge/impl/bridge_impl_android.h   |  124 +
 .../content_box_measurement_impl_android.cpp    |   54 +
 .../impl/content_box_measurement_impl_android.h |   41 +
 .../bridge/impl/measure_mode_impl_android.cpp   |   36 +
 .../bridge/impl/measure_mode_impl_android.h     |   33 +
 .../bridge/impl/weexcore_impl_android.cpp       |  461 ++
 .../android/bridge/impl/weexcore_impl_android.h |   55 +
 .../Source/android/jniprebuild/__init__.py      |    0
 .../android/jniprebuild/android_jar.classes     |   98 +
 weex_core/Source/android/jniprebuild/jni_files  |    5 +
 .../Source/android/jniprebuild/jni_generator.py | 1469 +++++
 .../Source/android/jniprebuild/jni_load.cc      |   24 +
 .../jniheader/ContentBoxMeasurement_jni.h       |  165 +
 .../jniprebuild/jniheader/MeasureMode_jni.h     |   85 +
 .../jniheader/SystemMessageHandler_jni.h        |  132 +
 .../jniprebuild/jniheader/WXBridge_jni.h        |  345 +
 .../Source/android/jniprebuild/prebuild.sh      |   13 +
 .../jsengine/multiprocess/ExtendJSApi.cpp       |  680 ++
 .../android/jsengine/multiprocess/ExtendJSApi.h |  105 +
 .../jsengine/multiprocess/WeexJSConnection.cpp  |  429 ++
 .../jsengine/multiprocess/WeexJSConnection.h    |   43 +
 .../android/jsengine/multiprocess/WeexProxy.cpp |  708 ++
 .../android/jsengine/multiprocess/WeexProxy.h   |   94 +
 weex_core/Source/base/Compatible.cpp            |  122 +
 weex_core/Source/base/CoreConstants.h           |   28 +
 weex_core/Source/base/TimeUtils.h               |   30 +
 weex_core/Source/base/ViewUtils.h               |  120 +
 weex_core/Source/base/fpconv.cpp                |  332 +
 weex_core/Source/base/fpconv.h                  |   33 +
 weex_core/Source/base/powers.h                  |  129 +
 weex_core/Source/core/bridge/bridge.h           |   99 +
 .../Source/core/config/core_environment.cpp     |   81 +
 weex_core/Source/core/config/core_environment.h |   86 +
 weex_core/Source/core/css/constants_name.h      |   81 +
 weex_core/Source/core/css/constants_value.h     |   63 +
 weex_core/Source/core/css/css_value_getter.cpp  |  106 +
 weex_core/Source/core/css/css_value_getter.h    |   41 +
 weex_core/Source/core/layout/flex_enum.h        |  125 +
 weex_core/Source/core/layout/layout.cpp         | 1052 +++
 weex_core/Source/core/layout/layout.h           | 1091 ++++
 weex_core/Source/core/layout/style.cpp          |  265 +
 weex_core/Source/core/layout/style.h            |  303 +
 .../Source/core/moniter/render_performance.cpp  |   50 +
 .../Source/core/moniter/render_performance.h    |   69 +
 weex_core/Source/core/parser/dom_parser.cpp     |  582 ++
 weex_core/Source/core/parser/dom_parser.h       |  147 +
 .../Source/core/render/action/render_action.h   |   38 +
 .../render/action/render_action_add_element.cpp |   51 +
 .../render/action/render_action_add_element.h   |   49 +
 .../render/action/render_action_add_event.cpp   |   42 +
 .../render/action/render_action_add_event.h     |   40 +
 .../render/action/render_action_createbody.cpp  |   47 +
 .../render/action/render_action_createbody.h    |   45 +
 .../action/render_action_createfinish.cpp       |   37 +
 .../render/action/render_action_createfinish.h  |   38 +
 .../core/render/action/render_action_layout.cpp |   51 +
 .../core/render/action/render_action_layout.h   |   49 +
 .../action/render_action_move_element.cpp       |   40 +
 .../render/action/render_action_move_element.h  |   42 +
 .../action/render_action_remove_element.cpp     |   37 +
 .../action/render_action_remove_element.h       |   38 +
 .../action/render_action_remove_event.cpp       |   42 +
 .../render/action/render_action_remove_event.h  |   40 +
 .../render/action/render_action_update_attr.cpp |   40 +
 .../render/action/render_action_update_attr.h   |   41 +
 .../action/render_action_update_style.cpp       |   47 +
 .../render/action/render_action_update_style.h  |   48 +
 .../core/render/manager/render_manager.cpp      |  214 +
 .../Source/core/render/manager/render_manager.h |   91 +
 .../core/render/node/factory/i_render_factory.h |   31 +
 .../core/render/node/factory/i_render_object.h  |   60 +
 .../render/node/factory/render_appbar_factory.h |   36 +
 .../render/node/factory/render_cell_factory.h   |   35 +
 .../core/render/node/factory/render_creator.cpp |   71 +
 .../core/render/node/factory/render_creator.h   |   63 +
 .../node/factory/render_indicator_factory.h     |   36 +
 .../render/node/factory/render_input_factory.h  |   36 +
 .../render/node/factory/render_list_factory.h   |   36 +
 .../render/node/factory/render_mask_factory.h   |   36 +
 .../node/factory/render_scroller_factory.h      |   36 +
 .../render/node/factory/render_switch_factory.h |   36 +
 .../render/node/factory/render_text_factory.h   |   36 +
 .../node/factory/render_textarea_factory.h      |   36 +
 .../core/render/node/factory/render_type.h      |   41 +
 .../render/node/factory/simple_render_factory.h |   37 +
 .../Source/core/render/node/render_appbar.h     |   86 +
 weex_core/Source/core/render/node/render_cell.h |   30 +
 .../Source/core/render/node/render_indicator.h  |   30 +
 .../Source/core/render/node/render_input.h      |   30 +
 weex_core/Source/core/render/node/render_list.h |  235 +
 weex_core/Source/core/render/node/render_mask.h |   55 +
 .../Source/core/render/node/render_object.cpp   |  157 +
 .../Source/core/render/node/render_object.h     |  412 ++
 .../Source/core/render/node/render_scroller.h   |   65 +
 .../Source/core/render/node/render_switch.h     |   30 +
 weex_core/Source/core/render/node/render_text.h |   44 +
 .../Source/core/render/node/render_textarea.h   |   30 +
 .../Source/core/render/page/render_page.cpp     |  649 ++
 weex_core/Source/core/render/page/render_page.h |  198 +
 weex_core/Source/rapidjson/allocators.h         |  271 +
 weex_core/Source/rapidjson/document.h           | 2618 ++++++++
 weex_core/Source/rapidjson/encodedstream.h      |  299 +
 weex_core/Source/rapidjson/encodings.h          |  716 +++
 weex_core/Source/rapidjson/error/en.h           |   74 +
 weex_core/Source/rapidjson/error/error.h        |  161 +
 weex_core/Source/rapidjson/filereadstream.h     |   99 +
 weex_core/Source/rapidjson/filewritestream.h    |  104 +
 weex_core/Source/rapidjson/fwd.h                |  151 +
 .../Source/rapidjson/internal/biginteger.h      |  290 +
 weex_core/Source/rapidjson/internal/diyfp.h     |  258 +
 weex_core/Source/rapidjson/internal/dtoa.h      |  245 +
 weex_core/Source/rapidjson/internal/ieee754.h   |   78 +
 weex_core/Source/rapidjson/internal/itoa.h      |  304 +
 weex_core/Source/rapidjson/internal/meta.h      |  181 +
 weex_core/Source/rapidjson/internal/pow10.h     |   55 +
 weex_core/Source/rapidjson/internal/regex.h     |  734 +++
 weex_core/Source/rapidjson/internal/stack.h     |  231 +
 weex_core/Source/rapidjson/internal/strfunc.h   |   69 +
 weex_core/Source/rapidjson/internal/strtod.h    |  269 +
 weex_core/Source/rapidjson/internal/swap.h      |   46 +
 weex_core/Source/rapidjson/istreamwrapper.h     |  115 +
 weex_core/Source/rapidjson/memorybuffer.h       |   70 +
 weex_core/Source/rapidjson/memorystream.h       |   71 +
 .../Source/rapidjson/msinttypes/inttypes.h      |  316 +
 weex_core/Source/rapidjson/msinttypes/stdint.h  |  300 +
 weex_core/Source/rapidjson/ostreamwrapper.h     |   81 +
 weex_core/Source/rapidjson/pointer.h            | 1358 ++++
 weex_core/Source/rapidjson/prettywriter.h       |  277 +
 weex_core/Source/rapidjson/rapidjson.h          |  628 ++
 weex_core/Source/rapidjson/reader.h             | 2221 +++++++
 weex_core/Source/rapidjson/schema.h             | 2026 ++++++
 weex_core/Source/rapidjson/stream.h             |  179 +
 weex_core/Source/rapidjson/stringbuffer.h       |  121 +
 weex_core/Source/rapidjson/writer.h             |  711 ++
 weex_core/Source/weexjsc_version_script.txt     |    4 +
 weex_core/__init__.py                           |    0
 weex_core/tools/cpplint.py                      | 6086 ++++++++++++++++++
 629 files changed, 67617 insertions(+), 29282 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/440585ad/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/440585ad/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --cc android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index c3a0826,1a288ee..a297113
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@@ -2302,10 -1841,10 +1853,10 @@@ public class WXBridgeManager implement
     */
    public void registerComponents(final List<Map<String, Object>> components) {
      if (mJSHandler == null || components == null
-         || components.size() == 0) {
+             || components.size() == 0) {
        return;
      }
 -    post(new Runnable() {
 +    Runnable runnable = new Runnable() {
        @Override
        public void run() {
          invokeRegisterComponents(components, mRegisterComponentFailList);
@@@ -2377,16 -1910,16 +1928,16 @@@
              WXModuleManager.resetModuleState(module, true);
              WXLogUtils.e("[WXBridgeManager]invokeRegisterModules METHOD_REGISTER_MODULES success module:" + module);
            }
 -
          }
        } catch (Throwable e) {
 +        WXLogUtils.e("Weex [invokeRegisterModules]", e);
        }
      } catch (Throwable e) {
- 	  WXExceptionUtils.commitCriticalExceptionRT(null,
- 			  WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES,
- 			  "invokeRegisterModules", WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES.getErrorMsg() +
- 			  " \n " + e.getMessage() + modules.entrySet().toString(),
- 			  null );
+       WXExceptionUtils.commitCriticalExceptionRT(null,
+               WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES,
+               "invokeRegisterModules", WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES.getErrorMsg() +
+                       " \n " + e.getMessage() + modules.entrySet().toString(),
+               null );
  
        WXLogUtils.e("[WXBridgeManager] invokeRegisterModules:", e);
      }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/440585ad/android/sdk/src/main/java/com/taobao/weex/ui/ExternalLoaderComponentHolder.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/440585ad/android/sdk/src/main/java/com/taobao/weex/ui/SimpleComponentHolder.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/440585ad/android/sdk/src/main/java/com/taobao/weex/ui/WXComponentRegistry.java
----------------------------------------------------------------------