panpf / sketch

Sketch is an image loading library designed for Compose Multiplatform and Android View. It is powerful and rich in functions. In addition to basic functions, it also supports GIF, SVG, video thumbnails, Exif Orientation, etc.
Apache License 2.0
2.05k stars 309 forks source link

me.panpf:sketch-gif:2.7.1版本使用targetSdkVersion 31闪退 #188

Closed MrHayden closed 10 months ago

MrHayden commented 10 months ago

java pending exception: [Native crash above happened with a Java pending exception as following] pl.droidsonroids.gif.GifIOException: GifError 103: Data is not in GIF format pl.droidsonroids.gif.GifInfoHandle.openFileDescriptor(GifInfoHandle.java:85) pl.droidsonroids.gif.GifInfoHandle.(GifInfoHandle.java:64) pl.droidsonroids.gif.GifDrawable.(GifDrawable.java:161) pl.droidsonroids.gif.GifDrawable.(GifDrawable.java:96) pl.droidsonroids.gif.GifViewUtils.setResource(GifViewUtils.java:58) pl.droidsonroids.gif.GifViewUtils$GifImageViewAttributes.getResourceId(GifViewUtils.java:141) pl.droidsonroids.gif.GifViewUtils$GifImageViewAttributes.(GifViewUtils.java:128) pl.droidsonroids.gif.GifViewUtils.initImageView(GifViewUtils.java:32) pl.droidsonroids.gif.GifImageView.(GifImageView.java:55) com.notedance.nn.view.widget.AnimDefaultView.(AnimDefaultView.java:46) com.notedance.nn.view.widget.AnimDefaultView.(AnimDefaultView.java:52) java.lang.reflect.Constructor.newInstance0(Native Method) java.lang.reflect.Constructor.newInstance(Constructor.java:343) android.view.LayoutInflater.createView(LayoutInflater.java:883) android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1035) android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:990) android.view.LayoutInflater.rInflate(LayoutInflater.java:1152) android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1113) android.view.LayoutInflater.rInflate(LayoutInflater.java:1155) android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1113) android.view.LayoutInflater.inflate(LayoutInflater.java:711) android.view.LayoutInflater.inflate(LayoutInflater.java:548) android.view.LayoutInflater.inflate(LayoutInflater.java:486) android.view.View.inflate(View.java:27940) com.notedance.nn.base.BaseActivity.setContentView(BaseActivity.java:445) com.notedance.nn.base.BaseActivity.bindView(BaseActivity.java:433) com.notedance.nn.base.BaseActivity.onCreate(BaseActivity.java:257) com.notedance.nn.base.mvp.BasePresentActivity.onCreate(BasePresentActivity.java:24) android.app.Activity.performCreate(Activity.java:8516) android.app.Activity.performCreate(Activity.java:8480) android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1418) android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3806) android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3971) android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) android.app.ActivityThread$H.handleMessage(ActivityThread.java:2389) android.os.Handler.dispatchMessage(Handler.java:106) android.os.Looper.loopOnce(Looper.java:210) android.os.Looper.loop(Looper.java:299) android.app.ActivityThread.main(ActivityThread.java:8261) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954) java: pl.droidsonroids.gif.GifInfoHandle.openFileDescriptor(GifInfoHandle.java:85) pl.droidsonroids.gif.GifInfoHandle.(GifInfoHandle.java:64) pl.droidsonroids.gif.GifDrawable.(GifDrawable.java:161) pl.droidsonroids.gif.GifDrawable.(GifDrawable.java:96) pl.droidsonroids.gif.GifViewUtils.setResource(GifViewUtils.java:58) pl.droidsonroids.gif.GifViewUtils$GifImageViewAttributes.getResourceId(GifViewUtils.java:141) pl.droidsonroids.gif.GifViewUtils$GifImageViewAttributes.(GifViewUtils.java:128) 2023-11-27 11:11:32.330 yyLog_error E pl.droidsonroids.gif.GifViewUtils.initImageView(GifViewUtils.java:32) pl.droidsonroids.gif.GifImageView.(GifImageView.java:55) com.notedance.nn.view.widget.AnimDefaultView.(AnimDefaultView.java:46) com.notedance.nn.view.widget.AnimDefaultView.(AnimDefaultView.java:52) java.lang.reflect.Constructor.newInstance0(Native Method) java.lang.reflect.Constructor.newInstance(Constructor.java:343) android.view.LayoutInflater.createView(LayoutInflater.java:883) android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1035) android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:990) android.view.LayoutInflater.rInflate(LayoutInflater.java:1152) android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1113) android.view.LayoutInflater.rInflate(LayoutInflater.java:1155) android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1113) android.view.LayoutInflater.inflate(LayoutInflater.java:711) android.view.LayoutInflater.inflate(LayoutInflater.java:548) android.view.LayoutInflater.inflate(LayoutInflater.java:486) android.view.View.inflate(View.java:27940) com.notedance.nn.base.BaseActivity.setContentView(BaseActivity.java:445) com.notedance.nn.base.BaseActivity.bindView(BaseActivity.java:433) com.notedance.nn.base.BaseActivity.onCreate(BaseActivity.java:257) com.notedance.nn.base.mvp.BasePresentActivity.onCreate(BasePresentActivity.java:24) android.app.Activity.performCreate(Activity.java:8516) android.app.Activity.performCreate(Activity.java:8480) android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1418) android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3806) android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3971) android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) android.app.ActivityThread$H.handleMessage(ActivityThread.java:2389) android.os.Handler.dispatchMessage(Handler.java:106) android.os.Looper.loopOnce(Looper.java:210) android.os.Looper.loop(Looper.java:299) android.app.ActivityThread.main(ActivityThread.java:8261) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)

MrHayden commented 10 months ago

改为使用implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.28'就可以了

panpf commented 10 months ago

从异常栈看你是直接用了 android-gif-drawable 里的 view,然后抛出的异常,这可能要升级 android-gif-drawable 的版本来尝试解决问题。

另外,sketch 2. 版本是拷贝了 android-gif-drawable 的源码做了修改,你再引入一次 android-gif-drawable 恐会出问题。3. 版本已经是直接依赖官方包了,所以你最好升级到 3.*版本再自行切换 android-gif-drawable 的版本来解决问题