support load external shared Library from WXApplication (#2612)

diff --git a/build.gradle b/build.gradle
index 04ae472..f22e07a 100755
--- a/build.gradle
+++ b/build.gradle
@@ -17,6 +17,9 @@
         ndk{
             abiFilters "arm64-v8a", "armeabi-v7a", "x86"
         }
+        if(!getBuildConfigFields()?.containsKey('externalLibraryName')) {
+            buildConfigField "String", "externalLibraryName", "\"\""
+        }
     }
     applicationVariants.all { variant ->
         variant.outputs.each { output ->
diff --git a/src/main/java/com/alibaba/weex/WXApplication.java b/src/main/java/com/alibaba/weex/WXApplication.java
index ec714ed..7917529 100644
--- a/src/main/java/com/alibaba/weex/WXApplication.java
+++ b/src/main/java/com/alibaba/weex/WXApplication.java
@@ -22,7 +22,7 @@
 import android.app.Application;
 import android.os.Bundle;
 import android.support.multidex.MultiDex;
-
+import android.text.TextUtils;
 import com.alibaba.android.bindingx.plugin.weex.BindingX;
 import com.alibaba.weex.commons.adapter.DefaultWebSocketAdapterFactory;
 import com.alibaba.weex.commons.adapter.ImageAdapter;
@@ -73,17 +73,18 @@
     WXEnvironment.setApkDebugable(true);
     WXSDKEngine.addCustomOptions("appName", "WXSample");
     WXSDKEngine.addCustomOptions("appGroup", "WXApp");
-    WXSDKEngine.initialize(this,
-                           new InitConfig.Builder()
-                               //.setImgAdapter(new FrescoImageAdapter())// use fresco adapter
-                               .setImgAdapter(new ImageAdapter())
-                                   .setDrawableLoader(new PicassoBasedDrawableLoader(getApplicationContext()))
-                               .setWebSocketAdapterFactory(new DefaultWebSocketAdapterFactory())
-                               .setJSExceptionAdapter(new JSExceptionAdapter())
-                               .setHttpAdapter(new InterceptWXHttpAdapter())
-                               .setApmGenerater(new ApmGenerator())
-                               .build()
-                          );
+    InitConfig.Builder builder = new InitConfig.Builder()
+        //.setImgAdapter(new FrescoImageAdapter())// use fresco adapter
+        .setImgAdapter(new ImageAdapter())
+        .setDrawableLoader(new PicassoBasedDrawableLoader(getApplicationContext()))
+        .setWebSocketAdapterFactory(new DefaultWebSocketAdapterFactory())
+        .setJSExceptionAdapter(new JSExceptionAdapter())
+        .setHttpAdapter(new InterceptWXHttpAdapter())
+        .setApmGenerater(new ApmGenerator());
+    if(!TextUtils.isEmpty(BuildConfig.externalLibraryName)){
+      builder.addNativeLibrary(BuildConfig.externalLibraryName);
+    }
+    WXSDKEngine.initialize(this, builder.build());
     WXSDKManager.getInstance().setWxConfigAdapter(new DefaultConfigAdapter());
     WXSDKManager.getInstance().addWXAnalyzer(new WXAnalyzerDemoListener());
     WXAnalyzerDataTransfer.isOpenPerformance = false;