Update for release 0.28 (#509)

diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index f3cb22b..d777191 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -188,7 +188,8 @@
             ['weex-third-party-extensions','List of Third Party Plugin']
           ],
           '/download/':[
-             ['download', "Source Download"] 
+             ['download', "Source Download"],
+             ['major_change', 'Major Change'] 
           ]
         }
       },
@@ -365,7 +366,8 @@
             ['weex-third-party-extensions','Weex 三方插件']
           ],
           '/zh/download/':[
-            ['download', "源代码下载"] 
+            ['download', "源代码下载"],
+            ['major_change', '重大变更']
           ]
         }
       }
diff --git a/docs/download/download.md b/docs/download/download.md
index d453bfb..8f0bd7c 100644
--- a/docs/download/download.md
+++ b/docs/download/download.md
@@ -12,17 +12,24 @@
 :::
 
 # Latest Release
+## 0.28.0
+* Released in Oct 23, 2019
+* [ChangeLog](https://github.com/apache/incubator-weex/releases/tag/0.28.0)
+* [Source](https://www.apache.org/dyn/closer.cgi?filename=incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz&action=download) | [Signature](https://www.apache.org/dist/incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz.asc) | [Checksum](https://dist.apache.org/repos/dist/release/incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz.sha512)
+* Binary
+    * Android 
+        * **Since 0.28.0, Weex would publish two convince binary in each release, please [read the documentation about the detail](major_change.html).**
+        * `compile 'org.apache.weex:sdk:0.28.0'`
+        * `compile 'org.apache.weex:sdk_legacy:0.28.0'`
+    * iOS 
+        `pod "WeexSDK","0.28.0"`
+
+# Archived Release
 ## 0.26.0
 * Released in July 11, 2019
 * [ChangeLog](https://github.com/apache/incubator-weex/releases/tag/0.26.0)
-* [Source](https://www.apache.org/dyn/closer.cgi?filename=incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz&action=download) | [Signature](https://www.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.asc) | [Checksum](https://dist.apache.org/repos/dist/release/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.sha512)
-* Binary
-    * Android 
-        `compile 'com.taobao.android:weex_sdk:0.26.0'`
-    * iOS 
-        `pod "WeexSDK","0.26.0"`
+* [Source](https://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz) | [Signature](ttps://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.asc) | [Checksum](https://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.sha512)
 
-# Archived Release
 ## 0.24.0
 * Released in May 23, 2019
 * [ChangeLog](https://github.com/apache/incubator-weex/releases/tag/0.24.0)
diff --git a/docs/download/major_change.md b/docs/download/major_change.md
new file mode 100644
index 0000000..ce311dd
--- /dev/null
+++ b/docs/download/major_change.md
@@ -0,0 +1,32 @@
+# Introduction
+This page introduces the break change of Weex, you can visit [GitHub page](https://github.com/apache/incubator-weex/releases) for detail changelog.
+
+# Version
+## 0.28
+**The following three major change in 0.28 only affects Android developers**
+### Android
+#### Package name
+Due to the fact that Weex was a software of Alibaba Group (the mother company of Taobao Software Cooperation, ltd.) before donated to ASF (Apache Software Foundation),the Android package name of Weex was `com.taobao.weex` before Weex 0.28.0 released. 
+
+Since Weex 0.28.0, the package name of Android(i.e. Java) files was changed to `org.apache.weex`, which may cause compiling failure if you try to upgrade from a older version. For backward-compatibility reasons, we provide an [artifact](#groupid-and-artifactid-in-jcenter) named `sdk_legacy` where all files are still in the package name of `com.taobao.weex`. The legacy artifact may not be maintained in the future, please upgrade to the new package name when it's possible for you.
+
+#### GroupId and artifactId in JCenter
+Due to the fact that Weex was a software of Alibaba Group (the mother company of Taobao Software Cooperation, ltd.) before donated to ASF (Apache Software Foundation),Weex Android was under `com.taobao.android:weex_sdk` in JCenter before Weex 0.28.0 release.
+
+Since 0.28.0, Weex provides a convince library in JCenter with the following groupId and artifactId:
+* `org.apache.weex:sdk` is the currently stable package of Weex, where all Java files are under the package of `org.apache.weex`.
+* `org.apache.weex:sdk_legacy` is the legacy package of Weex, where all Java files are under the package of `com.taobao.weex`. This artifact may not be maintained in the future, please upgrade to the new package name when it's possible for you.
+
+#### JavaScript Interpreter
+Before Weex 0.28.0, Weex Android relied and bundled [JavaScriptCore](https://github.com/alibaba/weex_js_engine/tree/bridge_branch_mergeTimer) into its convince binary(i.e. aar), and this approach have the following disadvantage:
+* JavaScriptCore is partly licensed under BSD, partly licensed under LGPL, which is against the [License policy of ASF](https://apache.org/legal/resolved.html#category-a)
+* Users of Weex has no choice of JavaScript Interpreter if we continue bundling JavaScriptCore in convince binary.
+* The JavaScriptCore Weex used is a pruning version of [official JavaScriptCore](https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.17.4/Source/JavaScriptCore/) in 2016 and not update since that time, which means we might miss a lot of new features.
+
+Since Weex 0.28.0, the JavaScript Interpreter is not bundled in the convince binary anymore, users have the freedom of using whatever JavaScript Interpreter they want as long as they implement the [same interface](https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.27.1/Source/JavaScriptCore/API/). 
+
+This means users have to bundle a JavaScript Interpreter in their APP to run Weex. For users who don't have idea about how to choose JavaScript Interpreter, one can insert the following code snippet into the `build.gradle` of the app:
+
+    apply from: 'https://raw.githubusercontent.com/apache/incubator-weex/release/0.28/android/sdk/buildSrc/download_jsc.gradle'
+
+The above code snippet will download and bundle [jsc-android](https://www.npmjs.com/package/jsc-android/v/241213.1.0) of version `241213.1.0`. This is only for demonstration purpose, users always have the freedom of choosing JavaScript Interpreter in their APP.
\ No newline at end of file
diff --git a/docs/guide/develop/integrate-to-android-app.md b/docs/guide/develop/integrate-to-android-app.md
index 5b19d46..34eca52 100644
--- a/docs/guide/develop/integrate-to-android-app.md
+++ b/docs/guide/develop/integrate-to-android-app.md
@@ -1,16 +1,9 @@
----
-title: Integrate to Your App
-type: guide
-group: Overview
-order: 1.3
-version: 2.1
----
-
-<!-- toc -->
-
 # Integrate to Android App
-::: warning 
-Considering the package size, Android x86 is not supported for the moment.  
+::: tip
+Currently, Weex supports the following [ABIs](https://developer.android.com/ndk/guides/abis.html):
+* x86
+* armeabi-v7a
+* arm64-v8a
 :::
 
 The following documents assume that you already have a certain Android development experience.
@@ -22,13 +15,18 @@
 
 ## 1. Configure dependency 
 
-edit `build.gradle`
+::: tip
+**Since 0.28.0, Weex would publish two convince binary in each release, please [read the documentation about the detail](../../download/major_change.html).**
+:::
 
-```javascript
+```
 dependencies {
     ...
-    // weex sdk and fastjson
-    compile 'com.taobao.android:weex_sdk:0.20.0.2@aar'
+    // Choose one of the following sdk of weex.
+    //compile 'org.apache.weex:sdk:0.28.0'
+    //compile 'org.apache.weex:sdk_legacy:0.28.0'
+
+    // fastjson
     compile 'com.alibaba:fastjson:1.1.46.android'
 
     //support library dependencies
diff --git a/docs/guide/develop/integrate-to-your-app.md b/docs/guide/develop/integrate-to-your-app.md
deleted file mode 100644
index 580953a..0000000
--- a/docs/guide/develop/integrate-to-your-app.md
+++ /dev/null
@@ -1,254 +0,0 @@
----

-title: Integrate to Your App

-type: guide

-group: Overview

-order: 1.3

-version: 2.1

----

-

-<!-- toc -->

-

-# Integrate to Your App

-> Weex Release Note:  https://github.com/apache/incubator-weex/releases 

-

-## Integrate to Android

-

-The following documents assume that you already have a certain Android development experience.

-

-

-### Quick Start Five Steps

-

-The keys to intergrating Weex into your Android application are the following five step:

-

-1. Configure Gradle dependency in build.gradle

-

-```javascript

-dependencies {

-    ...

-    // weex sdk and fastjson

-    compile 'com.taobao.android:weex_sdk:0.18.0@aar'

-    compile 'com.alibaba:fastjson:1.1.46.android'

-

-    //support library dependencies

-    compile 'com.android.support:recyclerview-v7:23.1.1'

-    compile 'com.android.support:support-v4:23.1.1'

-    compile 'com.android.support:appcompat-v7:23.1.1'

-}

-```

-

-2. Add required permissions in your AndroidManifest.xml

-

-```xml

-<uses-permission android:name="android.permission.INTERNET"/>

-<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

-<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

-<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

-```

-

-3. Init Weex SDK When Application Create

-

-```java

-InitConfig config = new InitConfig.Builder()

-					//imageLib interface 

-    				.setImgAdapter(new FrescoImageAdapter())

-    				//network lib interface

-    				.setHttpAdapter(new InterceptWXHttpAdapter())

-    				.build();

-WXSDKEngine.initialize(applicationContext,config);

-```

-

-- [demo init case](https://github.com/apache/incubator-weex/blob/master/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java)

-- [InterceptWXHttpAdapter](https://github.com/apache/incubator-weex/blob/master/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java)

-- [fresco  imageAdapter](https://github.com/apache/incubator-weex/blob/master/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java) 

-- [picasso imageAdapter](https://github.com/apache/incubator-weex/blob/master/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java)

-

-4. Create an WXSDKInstance,  add IWXRenderListener and activity lifecycle on it. load weex bundle url. when  page load success; target view will be send for you on  onViewCreated callback, set target view to activity contentView.

-

-```java

-public class MainActivity extends AppCompatActivity implements IWXRenderListener {

-  WXSDKInstance mWXSDKInstance;

-  @Override

-  protected void onCreate(Bundle savedInstanceState) {

-    super.onCreate(savedInstanceState);

-    setContentView(R.layout.activity_main);

-    mWXSDKInstance = new WXSDKInstance(this);

-    mWXSDKInstance.registerRenderListener(this);

-    /**

-    * bundleUrl source http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c

-    */

-    String pageName = "WXSample";

-    String bundleUrl = "http://dotwe.org/raw/dist/38e202c16bdfefbdb88a8754f975454c.bundle.wx";

-    mWXSDKInstance.renderByUrl(pageName, bundleUrl, null, null,WXRenderStrategy.APPEND_ASYNC);

-  }

-  @Override

-  public void onViewCreated(WXSDKInstance instance, View view) {

-    setContentView(view);

-  }

-  @Override

-  public void onRenderSuccess(WXSDKInstance instance, int width, int height) {

-  }

-  @Override

-  public void onRefreshSuccess(WXSDKInstance instance, int width, int height) {

-  }

-  @Override

-  public void onException(WXSDKInstance instance, String errCode, String msg) {

-  }

-  @Override

-  protected void onResume() {

-    super.onResume();

-    if(mWXSDKInstance!=null){

-      mWXSDKInstance.onActivityResume();

-    }

-  }

-  @Override

-  protected void onPause() {

-    super.onPause();

-    if(mWXSDKInstance!=null){

-       mWXSDKInstance.onActivityPause();

-    }

-  }

-  @Override

-  protected void onStop() {

-    super.onStop();

-    if(mWXSDKInstance!=null){

-      mWXSDKInstance.onActivityStop();

-    }

-  }

-  @Override

-  protected void onDestroy() {

-    super.onDestroy();

-    if(mWXSDKInstance!=null){

-      mWXSDKInstance.onActivityDestroy();

-    }

-  }

-}

-```

-

-5. Run app, start activity, then you will see hello world demo. well done.

-

-[Hello World Demo Source](http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c)

-

-Tip: Click QRCode Image in Demo Source Page, your will see compiled bundle js.

-

-## Integrated to iOS

-

-Through the [CocoaPods](https://cocoapods.org/) or [Carthage](https://github.com/Carthage/Carthage) integrated Weex iOS SDK to your project.

-First assume that you have finished installing the [iOS development environment](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/Setup/Setup.html) and [CocoaPods](https://guides.cocoapods.org/using/getting-started.html)(or [Carthage](https://github.com/Carthage/Carthage#installing-carthage)).

-

-### Step 1: Add Dependencies

-

-Import Weex iOS SDK to your existing project, if not, you can create a new project according to the [tutorial](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/Setup/Setup.html)).

-Before proceeding, make sure that the Podfile file is under the project file. If not, create one and open with  text editor(if Carthage, please ensure the [`Cartfile`](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile) in your project directory). You can choose one of Integration method.

-

-- using [CocoaPods](https://cocoapods.org/)

-	WeexSDK The latest version on cocoaPods can be obtained [here](https://cocoapods.org/pods/WeexSDK) .

-	Add the following to the Podfile file:

-

-	```object-c

-	source 'git@github.com:CocoaPods/Specs.git'

-	target 'YourTarget' do

-	    platform :ios, '7.0'

-	    pod 'WeexSDK', '0.17.0'   ## latest Weex SDK recommended

-	end

-	```

-	Open the command line, switch to the directory of the Podfile file, and run the pod install command. If there are no errors, it means that the environment has been configured.

-- using [Carthage](https://github.com/Carthage/Carthage)

-  [here](https://github.com/apache/incubator-weex/tags) you can get the latest version of WeexSDK.

-  Add `github "apache/incubator-weex"` to [`Cartfile`](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile)

-  Open the command line, switch to the directory of the Cartfile, and run `carthage update`.

-  [Add Carthage build framework to your project](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application)

-

-

-### Step 2: Initialize the Weex environment

-

-In the AppDelegate.m file to do the initialization operation, usually in the didFinishLaunchingWithOptions method as follows to add.

-

-```object-c

-//business configuration

-[WXAppConfiguration setAppGroup:@"AliApp"];

-[WXAppConfiguration setAppName:@"WeexDemo"];

-[WXAppConfiguration setAppVersion:@"1.0.0"];

-//init sdk environment

-[WXSDKEngine initSDKEnvironment];

-//register custom module and component,optional

-[WXSDKEngine registerComponent:@"MyView" withClass:[MyViewComponent class]];

-[WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];

-//register the implementation of protocol, optional

-[WXSDKEngine registerHandler:[WXNavigationDefaultImpl new] withProtocol:@protocol(WXNavigationProtocol)];

-//set the log level

-[WXLog setLogLevel: WXLogLevelAll];

-```

-

-### Step 3: Render weex Instance

-

-Weex supports both full page rendering and partial rendering. What you need to do is render Weex's view with the specified URL and add it to its parent container. The parent container is generally a viewController.

-

-```object-c

-#import <WeexSDK/WXSDKInstance.h>

-- (void)viewDidLoad

-{

-    [super viewDidLoad];

-    _instance = [[WXSDKInstance alloc] init];

-    _instance.viewController = self;

-    _instance.frame = self.view.frame;

-    __weak typeof(self) weakSelf = self;

-    _instance.onCreate = ^(UIView *view) {

-        [weakSelf.weexView removeFromSuperview];

-        weakSelf.weexView = view;

-        [weakSelf.view addSubview:weakSelf.weexView];

-    };

-    _instance.onFailed = ^(NSError *error) {

-        //process failure

-    };

-    _instance.renderFinish = ^ (UIView *view) {

-        //process renderFinish

-    };

-    NSURL *url = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"js"];

-    [_instance renderWithURL:url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];

-}

-```

-

-WXSDKInstance is a very important class that provides a basic method and some callbacks, such as renderWithURL, onCreate, onFailed, etc., can be found in WXSDKInstance.h.

-

-### Step 4: Destroy Weex Instance

-

-In the dealloc phase of the viewController destroyed Weex instance, can play a role in avoiding memory leaks.

-

-```object-c

-- (void)dealloc

-{

-    [_instance destroyInstance];

-}

-```

-

-#### Build your own WeexSDK.framework and Import to your project.

-

-The Weex SDK can be compiled from the source code. You can try the latest feature in the new feature or bugfix branch.

-

-- `git clone https://github.com/apache/incubator-weex.git'

-  you can use SSH

-

-	```

-	git clone git@github.com:apache/incubator-weex.git

-	```

-  or use https

-

-	```

-	git clone https://github.com/apache/incubator-weex.git

-	```

-

-- open WeexSDK.xcodeproj in `weex/ios/sdk`

-  switch target just below

-  ![img](http://img1.tbcdn.cn/L1/461/1/4fe050b36e7fea52f121e73790b1fdb7ea934e97)

-

-- Build this project or just use the xcode default hot key `⌘ + b`

-

-- Finally you can find `Products` directory in `weex/ios/sdk`, `WeexSDK.framework` was here

-  ![img](http://img4.tbcdn.cn/L1/461/1/52594fea03ee1154845d0f897558b81b4b5bef2e)

-

-- Add `js-framework`(which is in the `WeexSDK.framework` and renamed to `native-bundle-main.js`) to your main bundle

-  ![img](http://img1.tbcdn.cn/L1/461/1/bb3998595bafe9c9336411160c0b6bd3eeb843ef)

-- Import the framework you get above and import system framework

-  ![img](http://img1.tbcdn.cn/L1/461/1/ce309c54c7b3dd3607d7a3d07c44bfd0e0e10f86)

-- add `-ObjC` to your project settings,just like this

-![img](http://img3.tbcdn.cn/L1/461/1/430ae522f5031ff728c95efea49219a11e6852b3)

diff --git a/docs/zh/download/download.md b/docs/zh/download/download.md
index 97086cf..194ddb6 100644
--- a/docs/zh/download/download.md
+++ b/docs/zh/download/download.md
@@ -12,17 +12,24 @@
 :::
 
 # 最新版本
+## 0.28.0
+* 发布日期 2019年10月23日
+* [变更记录](https://github.com/apache/incubator-weex/releases/tag/0.28.0)
+* [源代码](https://www.apache.org/dyn/closer.cgi?filename=incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz&action=download) | [签名](https://www.apache.org/dist/incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz.asc) | [哈希](https://dist.apache.org/repos/dist/release/incubator/weex/0.28.0/apache-weex-incubating-0.28.0-src.tar.gz.sha512)
+* 二进制下载渠道
+    * Android 
+        * **从 0.28.0 开始,Weex 每次 Release 都将会发布两个二进制版本,请[阅读文档了解它们的区别](major_change.html)**
+        * `compile 'org.apache.weex:sdk:0.28.0'`
+        * `compile 'org.apache.weex:sdk_legacy:0.28.0'`
+    * iOS 
+        `pod "WeexSDK","0.28.0"
+
+# 历史版本
 ## 0.26.0
 * 发布日期 2019年7月11日
 * [变更记录](https://github.com/apache/incubator-weex/releases/tag/0.26.0)
-* [源代码](https://www.apache.org/dyn/closer.cgi?filename=incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz&action=download) | [签名](https://www.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.asc) | [哈希](https://dist.apache.org/repos/dist/release/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.sha512)
-* 二进制下载渠道
-    * Android 
-        `compile 'com.taobao.android:weex_sdk:0.26.0'`
-    * iOS 
-        `pod "WeexSDK", "0.26.0"`
+* [源代码](https://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz) | [签名](ttps://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.asc) | [哈希](https://archive.apache.org/dist/incubator/weex/0.26.0/apache-weex-incubating-0.26.0-src.tar.gz.sha512)
 
-# 历史版本
 ## 0.24.0
 * 发布日期 2019年5月23日
 * [变更记录](https://github.com/apache/incubator-weex/releases/tag/0.24.0)
diff --git a/docs/zh/download/major_change.md b/docs/zh/download/major_change.md
new file mode 100644
index 0000000..6d883b1
--- /dev/null
+++ b/docs/zh/download/major_change.md
@@ -0,0 +1,32 @@
+# Introduction
+本文档主要介绍 Weex 的重大变更,对于详细变更日志,请参考 [Weex GitHub page](https://github.com/apache/incubator-weex/releases).
+
+# 版本
+## 0.28
+**下述在 0.28 中的重大变更只影响 Android 用户。**
+### Android
+#### Java 包名
+由于 Weex 在捐献给 ASF(Apache Software Foundation) 前隶属于阿里巴巴集团(淘宝的母公司),因此在 `0.28.0` 之前,Android 代码中的 Java 包名是 `com.taobao.weex`
+
+从 `0.28.0` 之后,Android 代码中的 Java 包名被修改为 `org.apache.weex`。考虑到这个升级会给现有用户来不兼容,weex 提供了 `org.apache.weex:sdk_legacy` 作为[兼容性方案]((#groupid-and-artifactid-in-jcenter)。这个兼容性方案后续可能不再维护,请尽可能的依 `org.apache.weex:sdk` 并将现有代码的包名升级为 `org.apache.weex`。
+
+#### GroupId and artifactId in JCenter
+由于 Weex 在捐献给 ASF(Apache Software Foundation) 前隶属于阿里巴巴集团(淘宝的母公司),因此在 `0.28.0` 之前,Android 代码中的 Java 包名是 `com.taobao.weex`,因此在 `0.28.0` 之前,Weex 在JCenter 上的发布产物为 `com.taobao.android:weex_sdk`
+
+从 `0.28.0` 之后,Weex 在 JCenter 上的发布变更为如下形式:
+* `org.apache.weex:sdk` 是稳定且持续维护的 aar 包,在这个包中所有的 Java 类在 `org.apache.weex` 包名下。
+* `org.apache.weex:sdk_legacy` 是兼容性 aar 包,在这包中所有的 Java 类在 `com.taobao.weex` 包名下。兼容性包后续可能不再维护,请尽量升级到 `org.apache.weex:sdk` 上。
+
+#### JavaScript Interpreter
+在 `0.28.0` 之前, Weex Android 依赖并且将[JavaScriptCore](https://github.com/alibaba/weex_js_engine/tree/bridge_branch_mergeTimer) 作为 Weex 在 JCenter 上的发布产物的一部分,这种方式有如下缺陷:
+* JavaScriptCore 属于双重授权项目,一部分以 BSD 形式授权,另一部分以 LGPL 形式授权,而这与 ASF 的 [License 授权政策](https://apache.org/legal/resolved.html#category-a)相违背。
+* 如果将 JavaScriptCore 包含在 Weex 的 JCenter 发布产物中,会剥夺用户选择 JavaScript 解析引擎的自由。
+* Weex 内置的 JavaScriptCore 是基于 [JavaScriptCore 2016版](https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.17.4/Source/JavaScriptCore) 进行了裁剪,已经数年未更新。
+
+基于上述原因,从 Weex 0.28.0 开始,JavaScript 引擎将**不再**内置于 Weex 在 JCenter 上的发布产物中,用户可以自由选择它们喜欢的 JavaScript 引擎,只要这个引擎遵循了[指定接口](https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.27.1/Source/JavaScriptCore/API/)。
+
+这意味着用户需要在它们的 App 中内置 JavaScript 引擎,否则 Weex 将无法运行。对于不知道如何选择 JavaScript 用户的引擎,可以在 App 的 build.gradle 中引入下述脚本:
+
+    apply from: 'https://raw.githubusercontent.com/apache/incubator-weex/release/0.28/android/sdk/buildSrc/download_jsc.gradle'
+
+这个脚本将会下载并内置[jsc-android](https://www.npmjs.com/package/jsc-android/v/241213.1.0)到你的 App 中。上述脚本仅为演示时使用,用户依然有权利在 App 中选择其符合其诉求的 JavaScript 引擎。
\ No newline at end of file
diff --git a/docs/zh/guide/develop/integrate-to-android-app.md b/docs/zh/guide/develop/integrate-to-android-app.md
index ebfc945..48d9439 100644
--- a/docs/zh/guide/develop/integrate-to-android-app.md
+++ b/docs/zh/guide/develop/integrate-to-android-app.md
@@ -1,16 +1,9 @@
----
-title: Integrate to Your App
-type: guide
-group: Overview
-order: 1.3
-version: 2.1
----
-
-<!-- toc -->
-
 # 集成到Android应用
-::: warning
-考虑到包大小的问题, 暂不提供 Android x86 so 的支持.
+::: tip
+目前,Weex 支持以下 [ABI](https://developer.android.com/ndk/guides/abis.html):
+* x86
+* armeabi-v7a
+* arm64-v8a
 :::
 
 在执行以下步骤之前,请先确认您的Android开发环境是ok的。
@@ -21,13 +14,18 @@
 
 
 ## 1. 设置gradle依赖
-
+::: tip
+从 0.28.0 开始,Weex 每次 Release 都将会发布两个二进制版本,请[阅读文档了解它们的区别](../../download/major_change.html)
+:::
 
 ```
 dependencies {
     ...
-    // weex sdk and fastjson
-    compile 'com.taobao.android:weex_sdk:0.20.0.2@aar'
+    // 以下两个 weex_sdk 版本二选一
+    //compile 'org.apache.weex:sdk:0.28.0'
+    //compile 'org.apache.weex:sdk_legacy:0.28.0'
+
+    // fastjson
     compile 'com.alibaba:fastjson:1.1.46.android'
 
     //support library dependencies
diff --git a/docs/zh/guide/develop/integrate-to-your-app.md b/docs/zh/guide/develop/integrate-to-your-app.md
deleted file mode 100644
index f06a099..0000000
--- a/docs/zh/guide/develop/integrate-to-your-app.md
+++ /dev/null
@@ -1,305 +0,0 @@
----
-title: Integrate to Your App
-type: guide
-group: Overview
-order: 1.3
-version: 2.1
----
-
-<!-- toc -->
-
-# 集成到应用中
-> Weex Release Note:  https://github.com/apache/incubator-weex/releases 
-
-## 集成到Android应用
-
-在执行以下步骤之前,请先确认您的Android开发环境是ok的。
-
-
-### 1. 设置gradle依赖
-
-```
-dependencies {
-    ...
-    // weex sdk and fastjson
-    compile 'com.taobao.android:weex_sdk:0.18.0@aar'
-    compile 'com.alibaba:fastjson:1.1.46.android'
-
-    //support library dependencies
-    compile 'com.android.support:recyclerview-v7:23.1.1'
-    compile 'com.android.support:support-v4:23.1.1'
-    compile 'com.android.support:appcompat-v7:23.1.1'
-}
-```
-### 2. 声明权限
-
-在`AndroidManifest.xml`中声明权限 
-
-```xml
-//网络
-<uses-permission android:name="android.permission.INTERNET"/>
-<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-
-//sd卡读写
-<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
-```
-
-### 3. 初始化sdk
-
-
-```java
-InitConfig config = new InitConfig.Builder()
-					//图片库接口
-    				.setImgAdapter(new FrescoImageAdapter())
-    				//网络库接口
-    				.setHttpAdapter(new InterceptWXHttpAdapter())
-    				.build();
-WXSDKEngine.initialize(applicationContext,config);
-
-```
-
-- [demo init case](https://github.com/apache/incubator-weex/blob/master/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java)
-- [InterceptWXHttpAdapter](https://github.com/apache/incubator-weex/blob/master/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java)
-- [fresco  imageAdapter](https://github.com/apache/incubator-weex/blob/master/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java) 
-- [picasso imageAdapter](https://github.com/apache/incubator-weex/blob/master/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java)
-
-### 4. 创建weex实例WXSDKInstance 
-
-`WXSDKInstance`是weex渲染页面的基本单元,
-
-- 通过`instance.render(url)`拉取bundle,
-- 在回调`IWXRenderListener`的`onViewCreated `返回创建的view,
-- 将返回的view 添加到Activity的view上(rootView)
-
-[case WXPageActivity](https://github.com/apache/incubator-weex/blob/master/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java)
-
-```java
-public class MainActivity extends AppCompatActivity implements IWXRenderListener {
-  WXSDKInstance mWXSDKInstance;
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.activity_main);
-    mWXSDKInstance = new WXSDKInstance(this);
-    mWXSDKInstance.registerRenderListener(this);
-    /**
-    * bundleUrl source http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c
-    */
-    String pageName = "WXSample";
-    String bundleUrl = "http://dotwe.org/raw/dist/38e202c16bdfefbdb88a8754f975454c.bundle.wx";
-    mWXSDKInstance.renderByUrl(pageName, bundleUrl, null, null,WXRenderStrategy.APPEND_ASYNC);
-  }
-  @Override
-  public void onViewCreated(WXSDKInstance instance, View view) {
-    setContentView(view);
-  }
-  @Override
-  public void onRenderSuccess(WXSDKInstance instance, int width, int height) {
-  }
-  @Override
-  public void onRefreshSuccess(WXSDKInstance instance, int width, int height) {
-  }
-  @Override
-  public void onException(WXSDKInstance instance, String errCode, String msg) {
-  }
-  @Override
-  protected void onResume() {
-    super.onResume();
-    if(mWXSDKInstance!=null){
-      mWXSDKInstance.onActivityResume();
-    }
-  }
-  @Override
-  protected void onPause() {
-    super.onPause();
-    if(mWXSDKInstance!=null){
-       mWXSDKInstance.onActivityPause();
-    }
-  }
-  @Override
-  protected void onStop() {
-    super.onStop();
-    if(mWXSDKInstance!=null){
-      mWXSDKInstance.onActivityStop();
-    }
-  }
-  @Override
-  protected void onDestroy() {
-    super.onDestroy();
-    if(mWXSDKInstance!=null){
-      mWXSDKInstance.onActivityDestroy();
-    }
-  }
-}
-```
-
-### 5. 运行app
-
-Run app, start activity, then you will see hello world demo. well done.
-
-运行app,您将会看到一个 `hello world` 页面。
-
-- [Hello World Demo 源码](http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c)
-- 提示: 点击二维码, 可以看到最终编译的代码产物。
-
-### 6. SDK混淆规则
-若要在APP中使用混淆,请在相应的配置文件中添加如下规则:
-
-```java
--keep class com.taobao.weex.WXDebugTool{*;}
--keep class com.taobao.weex.devtools.common.LogUtil{*;}
--keepclassmembers class ** {
-  @com.taobao.weex.ui.component.WXComponentProp public *;
-}
--keep class com.taobao.weex.bridge.**{*;}
--keep class com.taobao.weex.dom.**{*;}
--keep class com.taobao.weex.adapter.**{*;}
--keep class com.taobao.weex.common.**{*;}
--keep class * implements com.taobao.weex.IWXObject{*;}
--keep class com.taobao.weex.ui.**{*;}
--keep class com.taobao.weex.ui.component.**{*;}
--keep class com.taobao.weex.utils.**{
-    public <fields>;
-    public <methods>;
-    }
--keep class com.taobao.weex.view.**{*;}
--keep class com.taobao.weex.module.**{*;}
--keep public class * extends com.taobao.weex.common.WXModule{*;}
--keep public class * extends com.taobao.weex.ui.component.WXComponent{*;}
--keep class * implements com.taobao.weex.ui.IExternalComponentGetter{*;}
-```
-
-
-## 集成到iOS应用
-
-
-通过 [CocoaPods](https://cocoapods.org/) 或者 [Carthage](https://github.com/Carthage/Carthage) 集成 Weex iOS SDK 到您的项目中。
-
-首先确认您的开发环境是OK的
-
-- [iOS development environment](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/Setup/Setup.html) 
-- [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) 或者 [Carthage](https://github.com/Carthage/Carthage#installing-carthage)).
-
-### 1. 添加依赖
-
-集成 Weex iOS SDK 到您现有的工程中, 如果没有的话, 可以参照[tutorial](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppStoreDistributionTutorial/Setup/Setup.html))创建一个新的工程。
-
-在开始之前,确认您的工程下有podfile文件,如果没有,手动创建一个。(如果使用的是`Cartfile`,确认[`Cartfile`](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile)在您的工程下)
-
-选择一种方式集成
-
-#### 使用[CocoaPods](https://cocoapods.org/)
-
-修改您的podfile	
-
-```object-c
-	source 'git@github.com:CocoaPods/Specs.git'
-	target 'YourTarget' do
-	    platform :ios, '7.0'
-	    pod 'WeexSDK', '0.17.0'   ## 建议使用最新的版本
-	end
-```
-
-可以从这里查[weex最新的版本地址](https://cocoapods.org/pods/WeexSDK) .
-
-在podfile目录下,运行命令
-```
-pod install
-```
-如果没有`error`提示的话,集成完毕
-
-#### 使用 [Carthage](https://github.com/Carthage/Carthage)
-
-[weex最新的版本地址](https://github.com/apache/incubator-weex/tags) .
-  
-添加 `github "apache/incubator-weex"` 到 [`Cartfile`](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile)
-  
-打开命令行,cd 到 artfile所在目录, 运行 `carthage update`.
- 
-[Add Carthage build framework to your project](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application)
-
-
-### 2. 初始化WEEX
-
-同常在 `AppDelegate.m`的 `didFinishLaunchingWithOptions`方法中进行初始化工作。 
-
-
-```object-c
-//业务设置
-[WXAppConfiguration setAppGroup:@"AliApp"];
-[WXAppConfiguration setAppName:@"WeexDemo"];
-[WXAppConfiguration setAppVersion:@"1.0.0"];
-//初始化weex sdk
-[WXSDKEngine initSDKEnvironment];
-//注册自定义的组件 和模块
-[WXSDKEngine registerComponent:@"MyView" withClass:[MyViewComponent class]];
-[WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
-//注册接口实现,如网络库、图片库
-[WXSDKEngine registerHandler:[WXNavigationDefaultImpl new] withProtocol:@protocol(WXNavigationProtocol)];
-//设置log等级
-[WXLog setLogLevel: WXLogLevelAll];
-```
-
-- [init case](https://github.com/apache/incubator-weex/blob/master/ios/playground/WeexDemo/AppDelegate.m)
-
-### 3. 渲染instnace页面
-
-我们同时支持全页页面 和 部分卡片渲染方式。您只需要在调用函数时,制定需要展示的尺寸,并且讲view 添加到容器view上。
-
-
-```object-c
-#import <WeexSDK/WXSDKInstance.h>
-- (void)viewDidLoad
-{
-    [super viewDidLoad];
-    _instance = [[WXSDKInstance alloc] init];
-    _instance.viewController = self;
-    _instance.frame = self.view.frame;
-    __weak typeof(self) weakSelf = self;
-    _instance.onCreate = ^(UIView *view) {
-        [weakSelf.weexView removeFromSuperview];
-        weakSelf.weexView = view;
-        [weakSelf.view addSubview:weakSelf.weexView];
-    };
-    _instance.onFailed = ^(NSError *error) {
-        //process failure
-    };
-    _instance.renderFinish = ^ (UIView *view) {
-        //process renderFinish
-    };
-    NSURL *url = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"js"];
-    [_instance renderWithURL:url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];
-}
-```
-
-WXSDKInstance 是一个非常重要的类,提供很多功能,比如渲染函数renderWithURL,各种事件回调, 比如, onCreate, onFailed, etc., 具体函数参见[WXSDKInstance](https://github.com/apache/incubator-weex/blob/master/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h)
-
-### 4. 销毁 Instance
-
-在`viewController `销毁时,需要同步调用instance的`destroyInstance`方法,weex会做内存回收,否则会出现内存泄漏。
-
-```object-c
-- (void)dealloc
-{
-    [_instance destroyInstance];
-}
-```
-
-## 构建framework并且引入到您的工程中
-
-如果您需要尝试最新的feature或者其它需求,可以根据master上最新的源码进行构建
-
-- `git clone https://github.com/apache/incubator-weex.git`
-- 打开 WeexSDK.xcodeproj in `weex/ios/sdk`,选择target
-  ![img](http://img1.tbcdn.cn/L1/461/1/4fe050b36e7fea52f121e73790b1fdb7ea934e97)
-- 点击编译图标 或者使用快捷键`⌘ + b`
-- 产物在  `weex/ios/sdk/Products `
-  ![img](http://img4.tbcdn.cn/L1/461/1/52594fea03ee1154845d0f897558b81b4b5bef2e)
-
-- 添加 `js-framework` 到工程中
-  ![img](http://img1.tbcdn.cn/L1/461/1/bb3998595bafe9c9336411160c0b6bd3eeb843ef)
-- 导入framework 和依赖的系统framework
-  ![img](http://img1.tbcdn.cn/L1/461/1/ce309c54c7b3dd3607d7a3d07c44bfd0e0e10f86)
-- 添加`-ObjC` 到工程设置
-![img](http://img3.tbcdn.cn/L1/461/1/430ae522f5031ff728c95efea49219a11e6852b3)