ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Activity, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Fresco, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΡΠ΅ΡΠ΅Π· Android App Bundle , ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ Β«libimagepipeline.soΒ» ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ minify, R8 ΠΈΠ»ΠΈ Proguard, Π½ΠΎ Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» ΠΈΡ Π²ΡΠ΅ ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π» ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· App Bundle.
Π― ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Fresco ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ ΡΠΈΠ» ΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ».
ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅, Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π½Π°ΡΠ΅Π», - ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ APK Π½Π° abi
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π΄Π²ΠΎΠΈΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ APK.
android {
// Rest of your configuration here
bundle {
abi {
enableSplit false
}
}
}
ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ? # 2049
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ
ΠΎΡΡ ΠΈ ΡΠ²ΡΠ·Π°Π½Π°, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ
ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Android App Bundle Π² Fresco ΠΈΠ»ΠΈ SoLoader ΠΈ
ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π― ΠΌΠΎΠ³Ρ ΠΎΡΠΈΠ±Π°ΡΡΡΡ, Π½ΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ
ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΠ΅ Π±ΡΠ΅Π½Π΄Ρ.
Π, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°ΠΌ ΠΏΠΎ Π΄ΠΎΡΡΠ°Π²ΠΊΠ΅ Fresco, Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π½Π° Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΠΊΠ΅ΡΡ Android App Bundle, ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ splits
ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π°
Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ bundle
splits
ΠΊΠ»ΡΡ
ΠΠΎ Π²ΡΠΎΡΠ½ΠΈΠΊ, 11 Π΄Π΅ΠΊΠ°Π±ΡΡ 2018 Π³., 06:40 KimiChiu, [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ? # 2049
https://github.com/facebook/fresco/issues/2049-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΠΌΡ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/facebook/fresco/issues/2253#issuecomment-446089907 ,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/ABUQnQ4cZ-sWkG5b72Ea81wiQjS02yjlks5u31NxgaJpZM4ZIsuf
.
ΠΡΠΈΠ²Π΅Ρ @icerfish!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²ΡΡΠ°Π²ΠΊΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ). Π― ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ Fresco ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
Π― ΠΎΡΠΌΠ΅ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Β«ΠΎΡΠΈΠ±ΠΊΡΒ» ΠΈ Β«ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΡΡΒ», Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎ, Ρ ΡΠ΅ΠΌ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΠ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΡΠΈΠ²Π΅Ρ @lambdapioneer!
ΠΠΎΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ°:
FATAL EXCEPTION: FrescoIoBoundExecutor-8
Process: com.gobuzzvault.android, PID: 17499
java.lang.NoClassDefFoundError: com.facebook.imagepipeline.memory.NativeMemoryChunk
at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:25)
at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:13)
at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:267)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init>(MemoryPooledByteBufferOutputStream.java:51)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:73)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:24)
at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:87)
at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:99)
at com.facebook.imagepipeline.producers.LocalContentUriFetchProducer.getCameraImage(LocalContentUriFetchProducer.java:100)
at com.facebook.imagepipeline.producers.LocalContentUriFetchProducer.getEncodedImage(LocalContentUriFetchProducer.java:76)
at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:52)
at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:48)
at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:43)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:51)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:703)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:564)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:500)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:455)
at com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:40)
at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit>(NativeMemoryChunk.java:31)
at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:25)
at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:13)
at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:267)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init>(MemoryPooledByteBufferOutputStream.java:51)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:73)
at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:24)
at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:87)
at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:99)
at com.facebook.imagepipeline.producers.LocalContentUriThumbnailFetchProducer.getThumbnail(LocalContentUriThumbnailFetchProducer.java:135)
at com.facebook.imagepipeline.producers.LocalContentUriThumbnailFetchProducer.getCameraImage(LocalContentUriThumbnailFetchProducer.java:100)
at com.facebook.imagepipeline.producers.LocalContentUriThumbnailFetchProducer.getEncodedImage(LocalContentUriThumbnailFetchProducer.java:75)
at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:52)Β
at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:48)Β
at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:43)Β
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)Β
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)Β
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:51)Β
at java.lang.Thread.run(Thread.java:764)
ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΡ .
ΠΡΠΌΠΎΡΡΠ΅Π² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΡΠ°ΠΌΠΎΠΉ Fresco, Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ SoLoader. Π― ΠΎΡΠΏΡΠ°Π²Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π² ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² https://github.com/facebook/fresco/issues/2049#issuecomment -441088387
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Fresco 1.11 ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° .experiment().setNativeCodeDisabled(true)
Π² ImagePipelineConfig Fresco Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, Π½ΠΎ GIF-ΡΠ°ΠΉΠ»Ρ Π²ΡΠ»Π΅ΡΠ°Π»ΠΈ ΠΈΠ·-Π·Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΠΊΠ°ΠΊ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° SoLoader Ρ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. @icerfish , ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ GIF.
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ SoLoader, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Fresco. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ» ΠΏΠΈΠ°Ρ Ρ ΡΠΈΠΊΡΠΎΠΌ: facebook / soloader # 26
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅ΡΠΊΠ° ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π― ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ SoLoader lib. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ PR.
repositories {
maven {
url "https://dl.bintray.com/nnesterov/maven"
}
}
compile('com.facebook.fresco:fresco:1.10.0') {
exclude group: 'com.facebook.soloader', module: 'soloader'
}
compile("com.avito.android:patched-soloader:0.1.0")
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ patched-soloader Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»Π° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ
pre-lollipop. Π― ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
compile("com.avito.android:patched-soloader:0.1.1")
@ nesterov-n ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π΅ΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²ΠΎ ΡΡΠ΅ΡΠΊΡ?
@ nesterov-n Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ΅ΡΠΊΡ?
ΠΡΠΈΠ²Π΅Ρ, @theromis ΠΈ @ sailesh2
Π― Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π² Facebook (ΡΡΠΎ ΡΠ°ΠΊ Π³ΡΡΡΡΠ½ΠΎ). Π― ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Fresco, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ soloder lib Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ Ρ ΠΎΠΏΠΈΡΠ°Π» Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅. Π‘Π°ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ - com.avito.android:patched-soloader:0.1.2
ΠΠΎΠΉ PR Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ»ΠΎΠ°Π΄Π΅ΡΠ° ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ, Π½ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ ΡΠΎΠ»ΠΎΠ°Π΄Π΅ΡΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΡΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ»ΠΎΠ°Π΄Π΅ΡΠ° Π½Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Fresco Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΡΠ»ΠΈ ΡΡΠΎ ΡΡΠΎΡΠ½ΠΎ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠΏΠ°ΡΡΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ. ΠΡ Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Ρ ΡΡΠ΅ΡΠΊΠΎΠΉ. Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Fresco.
ΠΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SoLoader. ΠΡ Π²ΡΠΏΡΡΡΠΈΠΌ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Fresco Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΡΡΠΊΠ° Π²Π΅ΡΡΠΈΠΈ SoLoader.
@oprisnik ΠΊΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
SoLoader v0.6.0 ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π±ΡΠ» Π²ΡΠΏΡΡΠ΅Π½, ΠΈ Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Fresco (6fc071d1892166d11d1f237f10e2d9bcdf858087). ΠΡ Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π²ΡΠΏΡΡΠΊΠ° Bolts, Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ MIT (# 2257). ΠΡΠ»ΠΈ ΡΡΠΎΡ Π²ΡΠΏΡΡΠΊ Π·Π°ΠΉΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΌΡ Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΡΠΈΠΌ ΠΈ Π²ΡΠΏΡΡΡΠΈΠΌ Π±Π΅Π· ΡΡΠΎΠ³ΠΎ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ Π΄Π½Π΅ΠΉ.
ΠΠ΅ Ρ ΠΎΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΊΡΡΠ½ΡΠΌ, Π° ΡΠ°Π·Π²Π΅ ΡΡΠ΅ΡΠΊΡ Π½Π΅ Π²ΡΠΏΡΡΠΊΠ°ΡΡ? ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ.
ΠΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΡ 1.12.0, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ SoLoader.
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ proguard
-keep @ com.facebook.common.internal.DoNotStrip ΠΊΠ»Π°ΡΡ *
-keepclassmembers ΠΊΠ»Π°ΡΡ * {
@ com.facebook.common.internal.DoNotStrip *;
}
-keep @ com.facebook.soloader.DoNotOptimize ΠΊΠ»Π°ΡΡ *
-keepclassmembers ΠΊΠ»Π°ΡΡ * {
@ com.facebook.soloader.DoNotOptimize *;
}
-keepclassmembers ΠΊΠ»Π°ΡΡ * {
ΡΠΎΠ΄Π½ΡΠ΅
}
-dontwarn okio. *-dontwarn com.squareup.okhttp. *
-dontwarn okhttp3. *-dontwarn javax.annotation. *
-dontwarn com.android.volley.toolbox. *-dontwarn com.facebook.infer. *
@ProHzen ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΠΎΠ°Π΄Π΅ΡΠ°?
ΠΠ°, ΡΠ΅ΡΠΈΠ».
ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΠΎ ΡΡΠ΅ΡΠΊΠ΅ 2.0.0, :-(, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ nexus
@ProHzen ΠΡΠΈΠ²Π΅Ρ, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠΈΡΠ»Π°ΡΡ ΠΌΠ½Π΅ ΡΠ²ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅Π΄ΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠΉ? Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π», ΠΊΠ°ΠΊ ΠΈ Π²Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
ΡΡΠ΅ΡΠΊΠ°: 1.13.0
classpath 'com.android.tools. ΡΠ±ΠΎΡΠΊΠ°: gradle : 3.5.1 '
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ SoLoader, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Fresco. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ» ΠΏΠΈΠ°Ρ Ρ ΡΠΈΠΊΡΠΎΠΌ: facebook / soloader # 26
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅ΡΠΊΠ° ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π― ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ SoLoader lib. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ PR.