You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by gu...@apache.org on 2017/10/11 11:02:25 UTC

[1/6] incubator-weex git commit: update so for app install on sdcard

Repository: incubator-weex
Updated Branches:
  refs/heads/release 045e83863 -> ccf0590b3


 update so for app install on sdcard


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

Branch: refs/heads/release
Commit: dbc94f421dfda8aeccea3791788a5079ff5bb923
Parents: 045e838
Author: yuhun-alibaba <to...@gmail.com>
Authored: Tue Oct 10 16:21:49 2017 +0800
Committer: yuhun-alibaba <to...@gmail.com>
Committed: Tue Oct 10 16:21:49 2017 +0800

----------------------------------------------------------------------
 android/sdk/libs/armeabi/libweexjsb.so | Bin 22620 -> 22620 bytes
 android/sdk/libs/armeabi/libweexjsc.so | Bin 338160 -> 342264 bytes
 android/sdk/libs/armeabi/libweexjss.so | Bin 6754016 -> 6754016 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dbc94f42/android/sdk/libs/armeabi/libweexjsb.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/armeabi/libweexjsb.so b/android/sdk/libs/armeabi/libweexjsb.so
index 4b13b06..cd36273 100755
Binary files a/android/sdk/libs/armeabi/libweexjsb.so and b/android/sdk/libs/armeabi/libweexjsb.so differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dbc94f42/android/sdk/libs/armeabi/libweexjsc.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/armeabi/libweexjsc.so b/android/sdk/libs/armeabi/libweexjsc.so
index 12f6df2..36eae45 100755
Binary files a/android/sdk/libs/armeabi/libweexjsc.so and b/android/sdk/libs/armeabi/libweexjsc.so differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dbc94f42/android/sdk/libs/armeabi/libweexjss.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/armeabi/libweexjss.so b/android/sdk/libs/armeabi/libweexjss.so
index 0187882..544d41d 100755
Binary files a/android/sdk/libs/armeabi/libweexjss.so and b/android/sdk/libs/armeabi/libweexjss.so differ


[5/6] incubator-weex git commit: * [ios] set default value to nil when the configuration is empty

Posted by gu...@apache.org.
* [ios] set default value to nil when the configuration is empty


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

Branch: refs/heads/release
Commit: 4376205615fdcbd4fd9f118a02961e074eb057bf
Parents: 9833852
Author: acton393 <zh...@gmail.com>
Authored: Wed Oct 11 11:45:45 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Oct 11 11:45:45 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/43762056/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
index b7a522a..fafc41d 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
@@ -122,9 +122,13 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
         
         if (attributes[@"alwaysScrollableVertical"]) {
             _alwaysScrollableVertical = [WXConvert NSString:attributes[@"alwaysScrollableVertical"]];
+        }else {
+            _alwaysScrollableVertical = nil;
         }
         if (attributes[@"alwaysScrollableHorizontal"]) {
             _alwaysScrollableHorizontal = [WXConvert NSString:attributes[@"alwaysScrollableHorizontal"]];
+        } else {
+            _alwaysScrollableHorizontal = nil;
         }
         _pagingEnabled = attributes[@"pagingEnabled"] ? [WXConvert BOOL:attributes[@"pagingEnabled"]] : NO;
         _loadMoreOffset = attributes[@"loadmoreoffset"] ? [WXConvert WXPixelType:attributes[@"loadmoreoffset"] scaleFactor:self.weexInstance.pixelScaleFactor] : 0;


[3/6] incubator-weex git commit: update x86 so

Posted by gu...@apache.org.
 update x86 so


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

Branch: refs/heads/release
Commit: 3cf15bc0d435d16d2647b66a29bf3088e90bf4db
Parents: 07bc5b0
Author: yuhun-alibaba <to...@gmail.com>
Authored: Tue Oct 10 18:17:43 2017 +0800
Committer: yuhun-alibaba <to...@gmail.com>
Committed: Tue Oct 10 18:17:43 2017 +0800

----------------------------------------------------------------------
 android/sdk/libs/x86/libweexjsc.so | Bin 12121924 -> 12126020 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3cf15bc0/android/sdk/libs/x86/libweexjsc.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/x86/libweexjsc.so b/android/sdk/libs/x86/libweexjsc.so
index ab27aa9..3698a49 100755
Binary files a/android/sdk/libs/x86/libweexjsc.so and b/android/sdk/libs/x86/libweexjsc.so differ


[2/6] incubator-weex git commit: init framework and insert cacheDir for debug

Posted by gu...@apache.org.
 init framework and insert cacheDir for debug


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

Branch: refs/heads/release
Commit: 07bc5b0dc44762603f2465835a1b3530b76f238e
Parents: dbc94f4
Author: 御魂 <we...@alibaba-inc.com>
Authored: Mon Oct 9 16:40:02 2017 +0800
Committer: yuhun-alibaba <to...@gmail.com>
Committed: Tue Oct 10 17:23:17 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/bridge/WXBridge.java   | 17 ++++++
 .../com/taobao/weex/bridge/WXBridgeManager.java | 25 ++++++++-
 .../java/com/taobao/weex/common/IWXBridge.java  |  9 ++++
 .../taobao/weex/utils/WXSoInstallMgrSdk.java    | 56 ++++++++++++++++++++
 .../taobao/weex/bridge/WXWebsocketBridge.java   | 15 ++++++
 5 files changed, 121 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/07bc5b0d/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index 9d88fc2..b95c7a6 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -36,6 +36,8 @@ class WXBridge implements IWXBridge {
 
   public static final String TAG = "WXBridge";
 
+  public static final boolean MULTIPROCESS = true;
+
   /**
    * Init JSFrameWork
    *
@@ -43,6 +45,13 @@ class WXBridge implements IWXBridge {
    */
   public native int initFramework(String framework, WXParams params);
 
+  /**
+   * Init JSFrameWork
+   *
+   * @param framework assets/main.js
+   */
+  public native int initFramework(String framework, WXParams params, String cacheDir, boolean onSdcard);
+
 
   /**
    * Execute JavaScript function
@@ -68,6 +77,14 @@ class WXBridge implements IWXBridge {
    */
   public native void takeHeapSnapshot(String filename);
 
+
+  public int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean onSdcard){
+    if (MULTIPROCESS) {
+      return initFramework(framework, params, cacheDir, onSdcard);
+    } else {
+      return  initFramework(framework, params);
+    }
+  }
   /**
    * JavaScript uses this methods to call Android code
    *

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/07bc5b0d/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 a949e3b..07f2381 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
@@ -19,6 +19,8 @@
 package com.taobao.weex.bridge;
 
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.os.Handler;
 import android.os.Handler.Callback;
 import android.os.Looper;
@@ -1564,7 +1566,28 @@ public class WXBridgeManager implements Callback,BactchExecutor {
         }
 
         long start = System.currentTimeMillis();
-        if(mWXBridge.initFramework(framework, assembleDefaultOptions())==INIT_FRAMEWORK_OK){
+        String crashFile="";
+        boolean installOnSdcard = false;
+        try {
+          crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath();
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+
+        try {
+          PackageManager pm = WXEnvironment.getApplication().getApplicationContext().getPackageManager();
+          String pkgName = WXEnvironment.getApplication().getPackageName();
+          ApplicationInfo appInfo = pm.getApplicationInfo(pkgName, 0);
+          if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
+            // App on sdcard
+            installOnSdcard = true;
+          }
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+
+        // extends initFramework
+        if(mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, installOnSdcard)==INIT_FRAMEWORK_OK){
           WXEnvironment.sJSLibInitTime = System.currentTimeMillis() - start;
           WXLogUtils.renderPerformanceLog("initFramework", WXEnvironment.sJSLibInitTime);
           WXEnvironment.sSDKInitTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/07bc5b0d/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 9d4885c..9e83dde 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -38,6 +38,15 @@ public interface IWXBridge extends IWXObject {
    */
   int initFramework(String framework, WXParams params);
 
+
+  /**
+   * init Weex
+   *
+   * @param framework assets/main.js
+   * @return
+   */
+  int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean onSdcard);
+
   /**
    * execute javascript function
    */

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/07bc5b0d/android/sdk/src/main/java/com/taobao/weex/utils/WXSoInstallMgrSdk.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXSoInstallMgrSdk.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXSoInstallMgrSdk.java
index a7fba8a..e402ee7 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXSoInstallMgrSdk.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXSoInstallMgrSdk.java
@@ -32,6 +32,7 @@ import com.taobao.weex.common.WXErrorCode;
 import com.taobao.weex.common.WXPerformance;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -68,6 +69,7 @@ public class WXSoInstallMgrSdk {
   private final static String ARMEABI = "armeabi"; //default
   private final static String X86 = "x86";
   private final static String MIPS = "mips";
+  private final static String STARTUPSO = "/libweexjsb.so";
 
   private final static int ARMEABI_Size = 3583820;
   private final static int X86_Size = 4340864;
@@ -111,6 +113,9 @@ public class WXSoInstallMgrSdk {
       return false;
     }
 
+    // copy startup so
+    copyStartUpSo();
+
     boolean InitSuc = false;
     if (checkSoIsValid(libName, BuildConfig.ARMEABI_Size) ||checkSoIsValid(libName, BuildConfig.X86_Size)) {
 
@@ -170,6 +175,57 @@ public class WXSoInstallMgrSdk {
     return InitSuc;
   }
 
+  /**
+   * copyStartUpSo
+   */
+  public static void copyStartUpSo() {
+    try {
+      boolean installOnSdcard = true;
+      String pkgName = WXEnvironment.getApplication().getPackageName();
+      // cp weexjsb any way
+//      try {
+//        PackageManager pm = WXEnvironment.getApplication().getApplicationContext().getPackageManager();
+//        ApplicationInfo appInfo = pm.getApplicationInfo(pkgName, 0);
+//        if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
+//          // App on sdcard
+//          installOnSdcard = true;
+//        }
+//      } catch (Throwable e) {
+//      }
+      if (installOnSdcard) {
+
+        String cacheFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath();
+        File newfile = new File(cacheFile + STARTUPSO);
+        if (newfile.exists()) {
+          return;
+        }
+
+        String path = "/data/data/" + pkgName + "/lib";;
+        if (cacheFile != null && cacheFile.indexOf("/cache") > 0) {
+          path = cacheFile.replace("/cache", "/lib");
+        }
+
+        String soName = path + STARTUPSO;
+        File oldfile = new File(soName);
+        if (oldfile.exists()) {
+          //获得原文件流
+          FileInputStream inputStream = new FileInputStream(oldfile);
+          byte[] data = new byte[1024];
+          //输出流
+          FileOutputStream outputStream =new FileOutputStream(newfile);
+          //开始处理流
+          while (inputStream.read(data) != -1) {
+            outputStream.write(data);
+          }
+          inputStream.close();
+          outputStream.close();
+        }
+      }
+    } catch (Throwable e) {
+      e.printStackTrace();
+    }
+  }
+
   private static String _getFieldReflectively(Build build, String fieldName) {
     try {
       final Field field = Build.class.getField(fieldName);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/07bc5b0d/android/weex_debug/src/main/java/com/taobao/weex/bridge/WXWebsocketBridge.java
----------------------------------------------------------------------
diff --git a/android/weex_debug/src/main/java/com/taobao/weex/bridge/WXWebsocketBridge.java b/android/weex_debug/src/main/java/com/taobao/weex/bridge/WXWebsocketBridge.java
index b686f7c..5576de3 100644
--- a/android/weex_debug/src/main/java/com/taobao/weex/bridge/WXWebsocketBridge.java
+++ b/android/weex_debug/src/main/java/com/taobao/weex/bridge/WXWebsocketBridge.java
@@ -204,6 +204,21 @@ public class WXWebsocketBridge implements IWXBridge,WXWebSocketManager.JSDebugge
     }
 
     @Override
+    public int initFrameworkEnv(String scriptsFramework,WXParams params, String cacheDir, boolean onSdcard) {
+        if (!mInit) {
+            return -1;
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("method", "evalFramework");
+        ArrayList<String> args = new ArrayList<>();
+        args.add(scriptsFramework);
+        map.put("arguments", args);
+        WXWebSocketManager.getInstance().sendMessage(JSON.toJSONString(map));
+        return 0;
+    }
+
+    @Override
     public void takeHeapSnapshot(String filename) {}
 
     @Override


[6/6] incubator-weex git commit: Revert "* [ios] set default value to nil when the configuration is empty"

Posted by gu...@apache.org.
Revert "* [ios] set default value to nil when the configuration is empty"

This reverts commit 4376205615fdcbd4fd9f118a02961e074eb057bf.


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

Branch: refs/heads/release
Commit: ccf0590b344c4adce40030315b7be1d22dd99ac9
Parents: 4376205
Author: acton393 <zh...@gmail.com>
Authored: Wed Oct 11 12:25:29 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Oct 11 12:25:29 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ccf0590b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
index fafc41d..b7a522a 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
@@ -122,13 +122,9 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
         
         if (attributes[@"alwaysScrollableVertical"]) {
             _alwaysScrollableVertical = [WXConvert NSString:attributes[@"alwaysScrollableVertical"]];
-        }else {
-            _alwaysScrollableVertical = nil;
         }
         if (attributes[@"alwaysScrollableHorizontal"]) {
             _alwaysScrollableHorizontal = [WXConvert NSString:attributes[@"alwaysScrollableHorizontal"]];
-        } else {
-            _alwaysScrollableHorizontal = nil;
         }
         _pagingEnabled = attributes[@"pagingEnabled"] ? [WXConvert BOOL:attributes[@"pagingEnabled"]] : NO;
         _loadMoreOffset = attributes[@"loadmoreoffset"] ? [WXConvert WXPixelType:attributes[@"loadmoreoffset"] scaleFactor:self.weexInstance.pixelScaleFactor] : 0;


[4/6] incubator-weex git commit: * [ios] bugfix list view can not scroll

Posted by gu...@apache.org.
* [ios] bugfix list view can not scroll


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

Branch: refs/heads/release
Commit: 9833852c0758b37f85a33db7592464d21f8cddce
Parents: 3cf15bc
Author: acton393 <zh...@gmail.com>
Authored: Wed Oct 11 11:39:53 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Oct 11 11:42:27 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXScrollerComponent.m     | 31 ++++++++++++--------
 1 file changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9833852c/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
index a7d042e..b7a522a 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.m
@@ -69,8 +69,8 @@
     CGPoint _lastContentOffset;
     CGPoint _lastScrollEventFiredOffset;
     BOOL _scrollable;
-    BOOL _alwaysScrollableVertical;
-    BOOL _alwaysScrollableHorizontal;
+    NSString * _alwaysScrollableVertical;
+    NSString * _alwaysScrollableHorizontal;
 
     // vertical & horizontal
     WXScrollDirection _scrollDirection;
@@ -119,10 +119,13 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
         _lastScrollEventFiredOffset = CGPointMake(0, 0);
         _scrollDirection = attributes[@"scrollDirection"] ? [WXConvert WXScrollDirection:attributes[@"scrollDirection"]] : WXScrollDirectionVertical;
         _showScrollBar = attributes[@"showScrollbar"] ? [WXConvert BOOL:attributes[@"showScrollbar"]] : YES;
-        // default value is NO;
-        _alwaysScrollableVertical = attributes[@"alwaysScrollableVertical"]?[WXConvert BOOL:attributes[@"alwaysScrollableVertical"]] : NO;
-        // default value is NO;
-        _alwaysScrollableHorizontal = attributes[@"alwaysScrollableHorizontal"]?[WXConvert BOOL:attributes[@"alwaysScrollableHorizontal"]] : NO;
+        
+        if (attributes[@"alwaysScrollableVertical"]) {
+            _alwaysScrollableVertical = [WXConvert NSString:attributes[@"alwaysScrollableVertical"]];
+        }
+        if (attributes[@"alwaysScrollableHorizontal"]) {
+            _alwaysScrollableHorizontal = [WXConvert NSString:attributes[@"alwaysScrollableHorizontal"]];
+        }
         _pagingEnabled = attributes[@"pagingEnabled"] ? [WXConvert BOOL:attributes[@"pagingEnabled"]] : NO;
         _loadMoreOffset = attributes[@"loadmoreoffset"] ? [WXConvert WXPixelType:attributes[@"loadmoreoffset"] scaleFactor:self.weexInstance.pixelScaleFactor] : 0;
         _loadmoreretry = attributes[@"loadmoreretry"] ? [WXConvert NSUInteger:attributes[@"loadmoreretry"]] : 0;
@@ -162,8 +165,12 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
     scrollView.showsHorizontalScrollIndicator = _showScrollBar;
     scrollView.scrollEnabled = _scrollable;
     scrollView.pagingEnabled = _pagingEnabled;
-    scrollView.alwaysBounceHorizontal = _alwaysScrollableHorizontal;
-    scrollView.alwaysBounceVertical = _alwaysScrollableVertical;
+    if (_alwaysScrollableHorizontal) {
+        scrollView.alwaysBounceHorizontal = [WXConvert BOOL:_alwaysScrollableHorizontal];
+    }
+    if (_alwaysScrollableVertical) {
+        scrollView.alwaysBounceVertical = [WXConvert BOOL:_alwaysScrollableVertical];
+    }
     if (WX_SYS_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) {
         // now use the runtime to forbid the contentInset being Adjusted.
         // here we add a category for scoller component view class compatible for new API,
@@ -232,13 +239,13 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
         ((UIScrollView *)self.view).scrollEnabled = _scrollable;
     }
     if (attributes[@"alwaysScrollableHorizontal"]) {
-        _alwaysScrollableHorizontal = [WXConvert BOOL:attributes[@"alwaysScrollableHorizontal"]];
-        ((UIScrollView*)self.view).alwaysBounceHorizontal = _alwaysScrollableHorizontal;
+        _alwaysScrollableHorizontal = [WXConvert NSString:attributes[@"alwaysScrollableHorizontal"]];
+        ((UIScrollView*)self.view).alwaysBounceHorizontal = [WXConvert BOOL:_alwaysScrollableHorizontal];
     }
     
     if (attributes[@"alwaysScrollableVertical"]) {
-        _alwaysScrollableVertical = [WXConvert BOOL:attributes[@"alwaysScrollableVertical"]];
-        ((UIScrollView*)self.view).alwaysBounceVertical = _alwaysScrollableVertical;
+        _alwaysScrollableVertical = [WXConvert NSString:attributes[@"alwaysScrollableVertical"]];
+        ((UIScrollView*)self.view).alwaysBounceVertical = [WXConvert BOOL:_alwaysScrollableVertical];
     }
     if (attributes[@"offsetAccuracy"]) {
         _offsetAccuracy = [WXConvert WXPixelType:attributes[@"offsetAccuracy"] scaleFactor:self.weexInstance.pixelScaleFactor];