diff --git a/android/sdk/libs/armeabi/libweexjsb.so b/android/sdk/libs/armeabi/libweexjsb.so index c46e857836..cb739b4037 100755 Binary files a/android/sdk/libs/armeabi/libweexjsb.so and b/android/sdk/libs/armeabi/libweexjsb.so differ diff --git a/android/sdk/libs/armeabi/libweexjsc.so b/android/sdk/libs/armeabi/libweexjsc.so index ec98d076d2..7a9d85b19d 100755 Binary files a/android/sdk/libs/armeabi/libweexjsc.so and b/android/sdk/libs/armeabi/libweexjsc.so differ diff --git a/android/sdk/libs/armeabi/libweexjss.so b/android/sdk/libs/armeabi/libweexjss.so index 5a8809c3c5..3efefa523f 100755 Binary files a/android/sdk/libs/armeabi/libweexjss.so and b/android/sdk/libs/armeabi/libweexjss.so differ diff --git a/android/sdk/libs/armeabi/libweexjst.so b/android/sdk/libs/armeabi/libweexjst.so new file mode 100755 index 0000000000..099256c3c4 Binary files /dev/null and b/android/sdk/libs/armeabi/libweexjst.so differ 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 b95c7a68c0..9586f2a0cc 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 @@ -50,7 +50,7 @@ class WXBridge implements IWXBridge { * * @param framework assets/main.js */ - public native int initFramework(String framework, WXParams params, String cacheDir, boolean onSdcard); + public native int initFramework(String framework, WXParams params, String cacheDir, boolean pieSupport); /** @@ -78,9 +78,9 @@ class WXBridge implements IWXBridge { public native void takeHeapSnapshot(String filename); - public int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean onSdcard){ + public int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean pieSupport){ if (MULTIPROCESS) { - return initFramework(framework, params, cacheDir, onSdcard); + return initFramework(framework, params, cacheDir, pieSupport); } else { return initFramework(framework, params); } 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 c44d7af7ac..3f0b6e379e 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 @@ -21,6 +21,7 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Handler; import android.os.Handler.Callback; import android.os.Looper; @@ -1013,7 +1014,6 @@ public void run() { if ("".equals(s)) { continue; } - // 寄存器内容裁剪 // if (("r0:").equals(s)) { // break; // } @@ -1026,8 +1026,6 @@ public void run() { } } else { WXLogUtils.e("[WXBridgeManager] callReportCrash crash file is empty"); - // 没收集到crash堆栈不上传 - // commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, "crash info file empty", instanceId, url); } file.delete(); } @@ -1369,7 +1367,6 @@ public void createInstance(final String instanceId, final String template, return; } - // 如果首次启动没初始化尽快返回Exception,并且异步初始化 if (!isJSFrameworkInit() && reInitCount == 1) { instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, "createInstance fail!"); post(new Runnable() { @@ -1571,27 +1568,22 @@ private void initFramework(String framework) { long start = System.currentTimeMillis(); String crashFile = ""; - boolean installOnSdcard = false; try { crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath(); } catch (Exception e) { e.printStackTrace(); } - + boolean pieSupport = true; 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; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { + pieSupport = false; } } catch (Exception e) { e.printStackTrace(); } - + WXLogUtils.d("[WXBridgeManager] initFrameworkEnv crashFile:" + crashFile + " pieSupport:" + pieSupport); // extends initFramework - if (mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, installOnSdcard) == INIT_FRAMEWORK_OK) { + if (mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport) == INIT_FRAMEWORK_OK) { WXEnvironment.sJSLibInitTime = System.currentTimeMillis() - start; WXLogUtils.renderPerformanceLog("initFramework", WXEnvironment.sJSLibInitTime); WXEnvironment.sSDKInitTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart; 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 9e83dde657..92b158552c 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 @@ -45,7 +45,7 @@ public interface IWXBridge extends IWXObject { * @param framework assets/main.js * @return */ - int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean onSdcard); + int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean pieSupport); /** * execute javascript function 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 e402ee7f54..827cc94783 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 @@ -70,6 +70,7 @@ public class WXSoInstallMgrSdk { private final static String X86 = "x86"; private final static String MIPS = "mips"; private final static String STARTUPSO = "/libweexjsb.so"; + private final static String STARTUPSOANDROID15 = "/libweexjst.so"; private final static int ARMEABI_Size = 3583820; private final static int X86_Size = 4340864; @@ -192,28 +193,40 @@ public static void copyStartUpSo() { // } // } catch (Throwable e) { // } + if (installOnSdcard) { String cacheFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath(); - File newfile = new File(cacheFile + STARTUPSO); + // if android api < 16 copy libweexjst.so else copy libweexjsb.so + boolean pieSupport = true; + File newfile; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { + pieSupport = false; + newfile = new File(cacheFile + STARTUPSOANDROID15); + } else { + newfile = new File(cacheFile + STARTUPSO); + } if (newfile.exists()) { return; } - String path = "/data/data/" + pkgName + "/lib";; + String path = "/data/data/" + pkgName + "/lib"; if (cacheFile != null && cacheFile.indexOf("/cache") > 0) { path = cacheFile.replace("/cache", "/lib"); } - String soName = path + STARTUPSO; + String soName; + if (pieSupport) { + soName = path + STARTUPSO; + } else { + soName = path + STARTUPSOANDROID15; + } + 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); } 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 5576de3d6b..1343f602d0 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,7 +204,7 @@ public int initFramework(String scriptsFramework,WXParams params) { } @Override - public int initFrameworkEnv(String scriptsFramework,WXParams params, String cacheDir, boolean onSdcard) { + public int initFrameworkEnv(String scriptsFramework,WXParams params, String cacheDir, boolean pieSupport) { if (!mInit) { return -1; }