Fresco: java.lang.NoClassDefFoundError: ํ•ด๊ฒฐ ์‹คํŒจ: Landroidx/core/util/Pools$SynchronizedPool;

์— ๋งŒ๋“  2019๋…„ 06์›” 30์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/fresco

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” 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

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์–˜๋“ค ์•„,

์ตœ๊ทผ์— ๋‚ด ํ”„๋ ˆ์Šค์ฝ” ๋ฒ„์ „์„ 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'

๋ชจ๋“  11 ๋Œ“๊ธ€

๋ฒ„์ „ 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๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
image

์ด์ œ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/facebook/fresco/releases/tag/v2.0.0
AndroidX๊ฐ€ ์•„๋‹Œ ๋นŒ๋“œ์˜ ๊ฒฝ์šฐ v1.14.2๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์„ธ์š”.

v1.14.2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
image

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) ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค.

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰