diff --git a/animated-gif/build.gradle b/animated-gif/build.gradle index 0389c6cd94..3c17f002dd 100644 --- a/animated-gif/build.gradle +++ b/animated-gif/build.gradle @@ -8,6 +8,7 @@ dependencies { provided "com.google.code.findbugs:jsr305:${JSR_305_VERSION}" compile "com.parse.bolts:bolts-tasks:${BOLTS_ANDROID_VERSION}" provided "javax.annotation:javax.annotation-api:${ANNOTATION_API_VERSION}" + implementation "com.facebook.soloader:soloader:${SOLOADER_VERSION}" compile project(':fbcore') compile project(':animated-base') diff --git a/animated-gif/src/main/java/com/facebook/animated/gif/GifImage.java b/animated-gif/src/main/java/com/facebook/animated/gif/GifImage.java index b5e492a251..92ddda59cb 100644 --- a/animated-gif/src/main/java/com/facebook/animated/gif/GifImage.java +++ b/animated-gif/src/main/java/com/facebook/animated/gif/GifImage.java @@ -11,11 +11,11 @@ import com.facebook.common.internal.DoNotStrip; import com.facebook.common.internal.Preconditions; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imagepipeline.animated.base.AnimatedDrawableFrameInfo; import com.facebook.imagepipeline.animated.base.AnimatedDrawableFrameInfo.BlendOperation; import com.facebook.imagepipeline.animated.base.AnimatedImage; import com.facebook.imagepipeline.animated.factory.AnimatedImageDecoder; +import com.facebook.soloader.SoLoader; import java.nio.ByteBuffer; import javax.annotation.concurrent.ThreadSafe; @@ -41,7 +41,7 @@ public class GifImage implements AnimatedImage, AnimatedImageDecoder { private static synchronized void ensure() { if (!sInitialized) { sInitialized = true; - SoLoaderShim.loadLibrary("gifimage"); + SoLoader.loadLibrary("gifimage"); } } diff --git a/animated-gif/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryGifImplTest.java b/animated-gif/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryGifImplTest.java index 8973f3b8f4..3994e513ea 100644 --- a/animated-gif/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryGifImplTest.java +++ b/animated-gif/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryGifImplTest.java @@ -10,8 +10,18 @@ package com.facebook.imagepipeline.animated.factory; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; import android.graphics.Bitmap; import android.graphics.Rect; @@ -19,7 +29,6 @@ import com.facebook.common.memory.PooledByteBuffer; import com.facebook.common.references.CloseableReference; import com.facebook.common.references.ResourceReleaser; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imageformat.ImageFormat; import com.facebook.imagepipeline.animated.base.AnimatedDrawableBackend; import com.facebook.imagepipeline.animated.base.AnimatedImageResult; @@ -31,6 +40,7 @@ import com.facebook.imagepipeline.image.EncodedImage; import com.facebook.imagepipeline.testing.MockBitmapFactory; import com.facebook.imagepipeline.testing.TrivialPooledByteBuffer; +import com.facebook.soloader.SoLoader; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -58,7 +68,7 @@ public class AnimatedImageFactoryGifImplTest { public PowerMockRule rule = new PowerMockRule(); static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } private static ResourceReleaser FAKE_RESOURCE_RELEASER = diff --git a/animated-webp/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryWebPImplTest.java b/animated-webp/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryWebPImplTest.java index 79f012c1a3..c10e7c6ca4 100644 --- a/animated-webp/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryWebPImplTest.java +++ b/animated-webp/src/test/java/com/facebook/imagepipeline/animated/factory/AnimatedImageFactoryWebPImplTest.java @@ -10,8 +10,18 @@ package com.facebook.imagepipeline.animated.factory; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; import android.graphics.Bitmap; import android.graphics.Rect; @@ -19,7 +29,6 @@ import com.facebook.common.memory.PooledByteBuffer; import com.facebook.common.references.CloseableReference; import com.facebook.common.references.ResourceReleaser; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imageformat.ImageFormat; import com.facebook.imagepipeline.animated.base.AnimatedDrawableBackend; import com.facebook.imagepipeline.animated.base.AnimatedImageResult; @@ -57,10 +66,6 @@ public class AnimatedImageFactoryWebPImplTest { @Rule public PowerMockRule rule = new PowerMockRule(); - static { - SoLoaderShim.setInTestMode(); - } - private static ResourceReleaser FAKE_RESOURCE_RELEASER = new ResourceReleaser() { diff --git a/drawee-backends/drawee-pipeline/build.gradle b/drawee-backends/drawee-pipeline/build.gradle index b1fabcbc47..b323cbcfb9 100644 --- a/drawee-backends/drawee-pipeline/build.gradle +++ b/drawee-backends/drawee-pipeline/build.gradle @@ -6,6 +6,9 @@ version = VERSION_NAME dependencies { compileOnly "com.android.support:support-core-utils:${SUPPORT_LIB_VERSION}" compileOnly "com.google.code.findbugs:jsr305:${JSR_305_VERSION}" + + implementation "com.facebook.soloader:soloader:${SOLOADER_VERSION}" + api project(':fbcore') api project(':drawee') api project(':imagepipeline') diff --git a/drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/Fresco.java b/drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/Fresco.java index ebbd5543fe..dbd27229b6 100644 --- a/drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/Fresco.java +++ b/drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/Fresco.java @@ -15,6 +15,8 @@ import com.facebook.imagepipeline.core.ImagePipeline; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.core.ImagePipelineFactory; +import com.facebook.soloader.SoLoader; +import java.io.IOException; import javax.annotation.Nullable; /** @@ -57,6 +59,11 @@ public static void initialize( } else { sIsInitialized = true; } + try { + SoLoader.init(context, 0); + } catch (IOException e) { + throw new RuntimeException("Could not initialize SoLoader", e); + } // we should always use the application context to avoid memory leaks context = context.getApplicationContext(); if (imagePipelineConfig == null) { diff --git a/fbcore/src/main/java/com/facebook/common/soloader/SoLoaderShim.java b/fbcore/src/main/java/com/facebook/common/soloader/SoLoaderShim.java deleted file mode 100644 index fd047bb852..0000000000 --- a/fbcore/src/main/java/com/facebook/common/soloader/SoLoaderShim.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.common.soloader; - -/** - * A shim for loading shared libraries that the app can override. - */ -public class SoLoaderShim { - - /** - * Handler that can be overridden by the application. - */ - public interface Handler { - - void loadLibrary(String libraryName); - } - - /** - * Default handler for loading libraries. - */ - public static class DefaultHandler implements Handler { - - @Override - public void loadLibrary(String libraryName) { - System.loadLibrary(libraryName); - } - } - - private static volatile Handler sHandler = new DefaultHandler(); - - /** - * Sets the handler. - * - * @param handler the new handler - */ - public static void setHandler(Handler handler) { - if (handler == null) { - throw new NullPointerException("Handler cannot be null"); - } - sHandler = handler; - } - - /** - * See {@link Runtime#loadLibrary}. - * - * @param libraryName the library to load - */ - public static void loadLibrary(String libraryName) { - sHandler.loadLibrary(libraryName); - } - - public static void setInTestMode() { - setHandler( - new Handler() { - @Override - public void loadLibrary(String libraryName) { - } - }); - } -} diff --git a/gradle.properties b/gradle.properties index 5658bce8ba..0305e0d7d2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -40,6 +40,7 @@ MOCKITO_CORE_VERSION=1.10.19 NINEOLDANDROID_VERSION=2.4.0 POWERMOCK_VERSION=1.6.6 ROBOLECTRIC_VERSION=3.0 +SOLOADER_VERSION=0.3.0 SUPPORT_LIB_VERSION=27.0.2 VOLLEY_VERSION=1.0.0 diff --git a/imagepipeline-base/build.gradle b/imagepipeline-base/build.gradle index dcf6f9d408..5ae78b4b7e 100644 --- a/imagepipeline-base/build.gradle +++ b/imagepipeline-base/build.gradle @@ -11,6 +11,7 @@ dependencies { compileOnly "com.google.code.findbugs:jsr305:${JSR_305_VERSION}" compileOnly "javax.annotation:javax.annotation-api:${ANNOTATION_API_VERSION}" + implementation "com.facebook.soloader:soloader:${SOLOADER_VERSION}" implementation "com.parse.bolts:bolts-tasks:${BOLTS_ANDROID_VERSION}" implementation project(':fbcore') diff --git a/imagepipeline-base/src/test/java/com/facebook/imageformat/ImageFormatCheckerTest.java b/imagepipeline-base/src/test/java/com/facebook/imageformat/ImageFormatCheckerTest.java index 1119d3651d..0ccb4c4234 100644 --- a/imagepipeline-base/src/test/java/com/facebook/imageformat/ImageFormatCheckerTest.java +++ b/imagepipeline-base/src/test/java/com/facebook/imageformat/ImageFormatCheckerTest.java @@ -12,7 +12,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; -import com.facebook.common.soloader.SoLoaderShim; +import com.facebook.soloader.SoLoader; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -29,7 +29,7 @@ public class ImageFormatCheckerTest { static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } @Test diff --git a/imagepipeline/build.gradle b/imagepipeline/build.gradle index d2b12ff2ad..a9082f4072 100644 --- a/imagepipeline/build.gradle +++ b/imagepipeline/build.gradle @@ -12,6 +12,7 @@ dependencies { compileOnly "javax.annotation:javax.annotation-api:${ANNOTATION_API_VERSION}" api project(':imagepipeline-base') + implementation "com.facebook.soloader:soloader:${SOLOADER_VERSION}" implementation "com.parse.bolts:bolts-tasks:${BOLTS_ANDROID_VERSION}" implementation project(':fbcore') diff --git a/imagepipeline/src/main/java/com/facebook/imagepipeline/nativecode/ImagePipelineNativeLoader.java b/imagepipeline/src/main/java/com/facebook/imagepipeline/nativecode/ImagePipelineNativeLoader.java index 411e76356d..6363c0a75c 100644 --- a/imagepipeline/src/main/java/com/facebook/imagepipeline/nativecode/ImagePipelineNativeLoader.java +++ b/imagepipeline/src/main/java/com/facebook/imagepipeline/nativecode/ImagePipelineNativeLoader.java @@ -9,7 +9,7 @@ package com.facebook.imagepipeline.nativecode; -import com.facebook.common.soloader.SoLoaderShim; +import com.facebook.soloader.SoLoader; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -39,6 +39,6 @@ public class ImagePipelineNativeLoader { } public static void load() { - SoLoaderShim.loadLibrary("imagepipeline"); + SoLoader.loadLibrary("imagepipeline"); } } diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/BitmapPoolTest.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/BitmapPoolTest.java index 7f01a8b15a..3932750fde 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/BitmapPoolTest.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/BitmapPoolTest.java @@ -9,22 +9,29 @@ package com.facebook.imagepipeline.memory; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imagepipeline.testing.MockBitmapFactory; import com.facebook.imageutils.BitmapUtil; -import org.junit.*; -import org.junit.runner.*; -import org.mockito.*; +import com.facebook.soloader.SoLoader; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.invocation.*; -import org.mockito.stubbing.*; -import org.powermock.core.classloader.annotations.*; -import org.robolectric.*; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.robolectric.RobolectricTestRunner; /** Basic tests for BitmapPool */ @@ -34,7 +41,7 @@ public class BitmapPoolTest { static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } @Mock(answer = Answers.CALLS_REAL_METHODS) diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/TestUsingNativeMemoryChunk.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/TestUsingNativeMemoryChunk.java index b0ae08bdd4..c10ad7d3cf 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/TestUsingNativeMemoryChunk.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/memory/TestUsingNativeMemoryChunk.java @@ -8,7 +8,7 @@ */ package com.facebook.imagepipeline.memory; -import com.facebook.common.soloader.SoLoaderShim; +import com.facebook.soloader.SoLoader; import org.junit.BeforeClass; /** @@ -20,12 +20,6 @@ public class TestUsingNativeMemoryChunk { @BeforeClass public static void allowNativeStaticInitializers() { - SoLoaderShim.setHandler( - new SoLoaderShim.Handler() { - @Override - public void loadLibrary(String libraryName) { - // ignore it - } - }); + SoLoader.setInTestMode(); } } diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/ArtDecoderTest.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/ArtDecoderTest.java index e878bf8876..f04d4b6559 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/ArtDecoderTest.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/ArtDecoderTest.java @@ -9,8 +9,21 @@ package com.facebook.imagepipeline.platform; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyBoolean; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.mockito.PowerMockito.verifyStatic; @@ -24,13 +37,13 @@ import com.facebook.common.internal.Throwables; import com.facebook.common.memory.PooledByteBuffer; import com.facebook.common.references.CloseableReference; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imageformat.DefaultImageFormats; import com.facebook.imagepipeline.image.EncodedImage; import com.facebook.imagepipeline.memory.BitmapPool; import com.facebook.imagepipeline.testing.MockBitmapFactory; import com.facebook.imagepipeline.testing.TrivialPooledByteBuffer; import com.facebook.imageutils.JfifUtil; +import com.facebook.soloader.SoLoader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -66,7 +79,7 @@ public class ArtDecoderTest { public PowerMockRule rule = new PowerMockRule(); static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } private static final int RANDOM_SEED = 10101; diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/GingerbreadPurgeableDecoderTest.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/GingerbreadPurgeableDecoderTest.java index d305ca54ff..6191915af7 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/GingerbreadPurgeableDecoderTest.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/GingerbreadPurgeableDecoderTest.java @@ -21,13 +21,13 @@ import com.facebook.common.memory.PooledByteBuffer; import com.facebook.common.references.CloseableReference; import com.facebook.common.references.ResourceReleaser; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imagepipeline.image.EncodedImage; import com.facebook.imagepipeline.memory.BitmapCounter; import com.facebook.imagepipeline.memory.BitmapCounterProvider; import com.facebook.imagepipeline.nativecode.Bitmaps; import com.facebook.imagepipeline.testing.MockBitmapFactory; import com.facebook.imagepipeline.testing.TrivialPooledByteBuffer; +import com.facebook.soloader.SoLoader; import java.io.FileDescriptor; import org.junit.Before; import org.junit.Rule; @@ -56,7 +56,7 @@ public class GingerbreadPurgeableDecoderTest { public PowerMockRule rule = new PowerMockRule(); static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } protected static final int IMAGE_SIZE = 5; diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/KitKatPurgeableDecoderTest.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/KitKatPurgeableDecoderTest.java index 735ec617db..95454337f4 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/KitKatPurgeableDecoderTest.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/platform/KitKatPurgeableDecoderTest.java @@ -29,7 +29,6 @@ import com.facebook.common.memory.PooledByteBuffer; import com.facebook.common.references.CloseableReference; import com.facebook.common.references.ResourceReleaser; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imagepipeline.common.TooManyBitmapsException; import com.facebook.imagepipeline.image.EncodedImage; import com.facebook.imagepipeline.memory.BitmapCounter; @@ -38,6 +37,7 @@ import com.facebook.imagepipeline.nativecode.Bitmaps; import com.facebook.imagepipeline.testing.MockBitmapFactory; import com.facebook.imagepipeline.testing.TrivialPooledByteBuffer; +import com.facebook.soloader.SoLoader; import java.util.ConcurrentModificationException; import org.junit.Before; import org.junit.Rule; @@ -70,7 +70,7 @@ public class KitKatPurgeableDecoderTest { public PowerMockRule rule = new PowerMockRule(); static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } protected static final int IMAGE_SIZE = 5; diff --git a/imagepipeline/src/test/java/com/facebook/imagepipeline/producers/ResizeAndRotateProducerTest.java b/imagepipeline/src/test/java/com/facebook/imagepipeline/producers/ResizeAndRotateProducerTest.java index 15a12b3b1e..b68524a98f 100644 --- a/imagepipeline/src/test/java/com/facebook/imagepipeline/producers/ResizeAndRotateProducerTest.java +++ b/imagepipeline/src/test/java/com/facebook/imagepipeline/producers/ResizeAndRotateProducerTest.java @@ -10,8 +10,19 @@ package com.facebook.imagepipeline.producers; import static com.facebook.imagepipeline.producers.ResizeAndRotateProducer.calculateDownsampleNumerator; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.anyLong; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.media.ExifInterface; import android.net.Uri; @@ -21,7 +32,6 @@ import com.facebook.common.memory.PooledByteBufferFactory; import com.facebook.common.memory.PooledByteBufferOutputStream; import com.facebook.common.references.CloseableReference; -import com.facebook.common.soloader.SoLoaderShim; import com.facebook.imageformat.DefaultImageFormats; import com.facebook.imageformat.ImageFormat; import com.facebook.imagepipeline.common.ResizeOptions; @@ -33,21 +43,25 @@ import com.facebook.imagepipeline.testing.TestExecutorService; import com.facebook.imagepipeline.testing.TestScheduledExecutorService; import com.facebook.imagepipeline.testing.TrivialPooledByteBuffer; +import com.facebook.soloader.SoLoader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.concurrent.TimeUnit; -import org.junit.*; -import org.junit.runner.*; -import org.mockito.*; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.invocation.*; -import org.mockito.stubbing.*; -import org.powermock.api.mockito.*; -import org.powermock.core.classloader.annotations.*; -import org.powermock.modules.junit4.rule.*; -import org.robolectric.*; -import org.robolectric.annotation.*; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareOnlyThisForTest; +import org.powermock.modules.junit4.rule.PowerMockRule; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" }) @@ -57,7 +71,7 @@ public class ResizeAndRotateProducerTest { static { - SoLoaderShim.setInTestMode(); + SoLoader.setInTestMode(); } @Mock public Producer mInputProducer; diff --git a/static-webp/build.gradle b/static-webp/build.gradle index 1aac34fff6..d1f78942c8 100644 --- a/static-webp/build.gradle +++ b/static-webp/build.gradle @@ -8,6 +8,7 @@ dependencies { compileOnly "javax.annotation:javax.annotation-api:${ANNOTATION_API_VERSION}" compileOnly "com.google.code.findbugs:jsr305:${JSR_305_VERSION}" + implementation "com.facebook.soloader:soloader:${SOLOADER_VERSION}" implementation "com.parse.bolts:bolts-tasks:${BOLTS_ANDROID_VERSION}" implementation project(':fbcore') implementation project(':imagepipeline-base') diff --git a/static-webp/src/main/java/com/facebook/imagepipeline/nativecode/StaticWebpNativeLoader.java b/static-webp/src/main/java/com/facebook/imagepipeline/nativecode/StaticWebpNativeLoader.java index 95f9ada1d0..e0da2efb57 100644 --- a/static-webp/src/main/java/com/facebook/imagepipeline/nativecode/StaticWebpNativeLoader.java +++ b/static-webp/src/main/java/com/facebook/imagepipeline/nativecode/StaticWebpNativeLoader.java @@ -10,7 +10,7 @@ package com.facebook.imagepipeline.nativecode; import android.os.Build; -import com.facebook.common.soloader.SoLoaderShim; +import com.facebook.soloader.SoLoader; /** * Single place responsible for ensuring that `static-webp.so` is loaded @@ -26,12 +26,12 @@ public static synchronized void ensure() { // library if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { try { - SoLoaderShim.loadLibrary("fb_jpegturbo"); + SoLoader.loadLibrary("fb_jpegturbo"); } catch (UnsatisfiedLinkError error) { // Head in the sand } } - SoLoaderShim.loadLibrary("static-webp"); + SoLoader.loadLibrary("static-webp"); sInitialized = true; } }