From 46e1c9e99be5e54245eb2ff8d8568db0914bebeb Mon Sep 17 00:00:00 2001 From: fattire Date: Wed, 23 Oct 2019 17:26:05 -0700 Subject: [PATCH] Fix potential crash from fresco thank to ShawnDongAi on stackoverflow Disabling native code on exception seems to fix this issue. see: https://github.com/facebook/fresco/issues/2381#issuecomment-516825599 --- src/main/java/org/havenapp/main/HavenApp.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/havenapp/main/HavenApp.java b/src/main/java/org/havenapp/main/HavenApp.java index ab61507e..b6a967ef 100644 --- a/src/main/java/org/havenapp/main/HavenApp.java +++ b/src/main/java/org/havenapp/main/HavenApp.java @@ -19,10 +19,15 @@ import android.util.Log; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.multidex.MultiDexApplication; + import com.evernote.android.job.JobManager; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.decoder.SimpleProgressiveJpegConfig; +import com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader; import org.havenapp.main.database.HavenEventDB; import org.havenapp.main.service.HavenJobCreator; @@ -30,10 +35,6 @@ import java.io.IOException; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.multidex.MultiDexApplication; - public class HavenApp extends MultiDexApplication { @@ -54,14 +55,25 @@ public void onCreate() { mPrefs = new PreferenceManager(this); - ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this) + ImagePipelineConfig.Builder b = ImagePipelineConfig.newBuilder(this); + ImagePipelineConfig config = b .setProgressiveJpegConfig(new SimpleProgressiveJpegConfig()) .setResizeAndRotateEnabledForNetwork(true) .setDownsampleEnabled(true) .build(); Fresco.initialize(this,config); - + + try { + ImagePipelineNativeLoader.load(); + } catch (UnsatisfiedLinkError e) { + Fresco.shutDown(); + b.experiment().setNativeCodeDisabled(true); + config = b.build(); + Fresco.initialize(this, config); + e.printStackTrace(); + } + AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); if (mPrefs.getRemoteAccessActive())