์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ 1.9.0์์ ์ ๋๋ก ์๋ํ์ต๋๋ค.
2.0.0์ผ๋ก ์ ๋ฐ์ดํธํ๋๋ฐ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
1.9.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๊ฑฐ๋ 1.13.0์ผ๋ก ํ ์คํธํ์ต๋๋ค. ์ ์๋ํ์ต๋๋ค.
๋ฐ๋ผ์ 2.0.0์๋ ์ด ๋ผ์ธ์์ ์ฑ์ด ์ถฉ๋ํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Fresco.initialize(this);
์์ธํ ๋ด์ฉ์. ๋๋ ๋ํ ์๋ํ์ง ์๋ ์ด๋ฌํ ์๋ฃจ์ ์ ์๋ํ์ต๋๋ค.
implementation 'com.android.support:support-compat:28.0.0'
๋ํ gradle.properties์ ์ด ์ค์ ์ถ๊ฐํด๋ ์๋ํ์ง ์์ต๋๋ค.
android.enableJetifier = false
๋ค์ ๋ก๊ทธ ์ถ๋ ฅ๊ณผ ํจ๊ป. ๊ฐ์ฌ ํด์
--------- beginning of crash
06-30 12:16:38.778 5360-5360/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.my.app, PID: 5360
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/util/Pools$SynchronizedPool;
at com.facebook.imagepipeline.platform.PlatformDecoderFactory.buildPlatformDecoder(PlatformDecoderFactory.java:34)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformDecoder(ImagePipelineFactory.java:304)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformBitmapFactory(ImagePipelineFactory.java:296)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getAnimatedFactory(ImagePipelineFactory.java:159)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getImageDecoder(ImagePipelineFactory.java:219)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerFactory(ImagePipelineFactory.java:319)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerSequenceFactory(ImagePipelineFactory.java:350)
at com.facebook.imagepipeline.core.ImagePipelineFactory.getImagePipeline(ImagePipelineFactory.java:276)
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:53)
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:44)
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:37)
at com.facebook.drawee.backends.pipeline.Fresco.initializeDrawee(Fresco.java:96)
at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:85)
at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:38)
at com.my.app.activities.MainActivity.onCreate(MainActivity.java:77)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.util.Pools$SynchronizedPool" on path: DexPathList[[zip file "/data/app/com.my.app-2/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app-2/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.facebook.imagepipeline.platform.PlatformDecoderFactory.buildPlatformDecoder(PlatformDecoderFactory.java:34)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformDecoder(ImagePipelineFactory.java:304)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformBitmapFactory(ImagePipelineFactory.java:296)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getAnimatedFactory(ImagePipelineFactory.java:159)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getImageDecoder(ImagePipelineFactory.java:219)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerFactory(ImagePipelineFactory.java:319)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerSequenceFactory(ImagePipelineFactory.java:350)ย
at com.facebook.imagepipeline.core.ImagePipelineFactory.getImagePipeline(ImagePipelineFactory.java:276)ย
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:53)ย
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:44)ย
at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:37)ย
at com.facebook.drawee.backends.pipeline.Fresco.initializeDrawee(Fresco.java:96)ย
at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:85)ย
at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:38)ย
at com.my.app.activities.MainActivity.onCreate(MainActivity.java:77)ย
at android.app.Activity.performCreate(Activity.java:5990)ย
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)ย
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)ย
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)ย
at android.app.ActivityThread.access$800(ActivityThread.java:151)ย
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)ย
at android.os.Handler.dispatchMessage(Handler.java:102)ย
at android.os.Looper.loop(Looper.java:135)ย
at android.app.ActivityThread.main(ActivityThread.java:5254)ย
at java.lang.reflect.Method.invoke(Native Method)ย
at java.lang.reflect.Method.invoke(Method.java:372)ย
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)ย
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)ย
Suppressed: java.lang.ClassNotFoundException: androidx.core.util.Pools$SynchronizedPool
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 29 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
๋ฒ์ 2.0์๋ AndroidX ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ฑ์ด ์ฌ์ ํ ๋ ๊ฑฐ์ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ ๊ทธ๋ ์ด๋ํ ๋๊น์ง 1.14.2๋ฅผ ์ฌ์ฉํ์ธ์. ๊ณง 2.0.0์ ๋ํ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ๊ฒ์ํ ์์ ์ ๋๋ค.
@oprisnik ๊ฐ์ฌํฉ๋๋ค. AndroidX ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ด ์๋ํ์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค :)
์์ฒญ๋. ๋๋ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์์ ์ค์ด๋ฉฐ ๊ณง ์ฌ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ ์ฃ์กํฉ๋๋ค :)
์ด์ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/facebook/fresco/releases/tag/v2.0.0
AndroidX๊ฐ ์๋ ๋น๋์ ๊ฒฝ์ฐ v1.13.0์ ๊ณ์ ์ฌ์ฉํ์ธ์.
์๋ค ์,
์ต๊ทผ์ ๋ด ํ๋ ์ค์ฝ ๋ฒ์ ์ 1.9.0์์ 2.0.0์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ต๋๋ค. ๋ด ์ฑ์ Android P์ Android X ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. Android X ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๋งค๋ ฅ์ฒ๋ผ ์๋ํ์ง๋ง ์ด๋ค ์ด์ ๋ก Android X ์ฌ์ฉ v1.13.0์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉด ์ ์๋ํฉ๋๋ค. @oprisnik์ด ๋งํ ๊ฒ์ฒ๋ผ
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. :)
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.facebook.fresco:animated-gif:1.13.0'
์ด์ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/facebook/fresco/releases/tag/v2.0.0
AndroidX๊ฐ ์๋ ๋น๋์ ๊ฒฝ์ฐ v1.14.2๋ฅผ ๊ณ์ ์ฌ์ฉํ์ธ์.
v1.14.2๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด์ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/facebook/fresco/releases/tag/v2.0.0
AndroidX๊ฐ ์๋ ๋น๋์ ๊ฒฝ์ฐ v1.14.2๋ฅผ ๊ณ์ ์ฌ์ฉํ์ธ์.v1.14.2๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
v1.13.0์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๋ฒ์ 2.0์๋ AndroidX ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ฑ์ด ์ฌ์ ํ ๋ ๊ฑฐ์ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ ๊ทธ๋ ์ด๋ํ ๋๊น์ง 1.14.2๋ฅผ ์ฌ์ฉํ์ธ์. ๊ณง 2.0.0์ ๋ํ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ๊ฒ์ํ ์์ ์ ๋๋ค.
๋ฒ์ ์ 1.14.2๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ง๋ง ์ด ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํ์ต๋๋ค.
@iamsdk ๋ ํ ์ต๋๊น? ์๋ํด์ผํฉ๋๋ค. ์ด๋ฏธ ์๋ํ ๊ฒฝ์ฐ ์์ ๋ด ์ค๋ช ์ ํ์ธํ์ญ์์ค. https://github.com/facebook/fresco/issues/2365#issuecomment -510322092๋ฅผ ๋ฌด์
@iamsdk ๋ ํ ์ต๋๊น? ์๋ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ ์๋ํ ๊ฒฝ์ฐ ์์ ๋ด ์ค๋ช ์ ํ์ธํ์ญ์์ค. #2365 (comment) ๋ฌด์ํ์ญ์์ค.
์, v1.13.0์ ์๋ํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ ํ๋ก์ ํธ๋ฅผ androidx์ ๋ณํฉํ๊ณ ์ง๊ธ์ ์ ์๋ํฉ๋๋ค.
@iamsdk ๋ ํ ์ต๋๊น? ์๋ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ ์๋ํ ๊ฒฝ์ฐ ์์ ๋ด ์ค๋ช ์ ํ์ธํ์ญ์์ค. #2365 (comment) ๋ฌด์ํ์ญ์์ค.
๋น์ ์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ค ์,
์ต๊ทผ์ ๋ด ํ๋ ์ค์ฝ ๋ฒ์ ์ 1.9.0์์ 2.0.0์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ต๋๋ค. ๋ด ์ฑ์ Android P์ Android X ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. Android X ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๋งค๋ ฅ์ฒ๋ผ ์๋ํ์ง๋ง ์ด๋ค ์ด์ ๋ก Android X ์ฌ์ฉ v1.13.0์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉด ์ ์๋ํฉ๋๋ค. @oprisnik์ด ๋งํ ๊ฒ์ฒ๋ผ
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. :)
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.facebook.fresco:animated-gif:1.13.0'