(آموزشی) Force Close در Api19 به پایین..

پرسیده شده
فعالیت 1215 روز پیش
دیده شده 589 بار
3

سلام به استاد عزیز و دوستان گرامی..

 

موقع اجرای اپ روی Api۱۹ بودم که به Force Close برخورد می کردم.. 

یکم که تحقیق در موردش کردم متوجه شدم که لایبراری OkHttp که داخل لایبراری Retrofit قرار داره، Api زیر ۲۰ رو ساپورت نمیکنه.. تیمشون توی گیت هاب ۲۹ دسامبر ۲۰۱۸ این تغییر رو اعمال کردن ولی داخل برنچ هاشون برنچی رو تحت عنوان Okhttp۳.۱۲.x نگه داشتن برای کسایی که میخوان زیر api۲۰ رو هم ساپورت کنن.. ولی مشکلی که وجود داره این هستش که این برنچ به گفته ی یه مقاله ای داخل سایت Medium تا اخر همین ماه، یعنی ۴ روز دیگه معتبر هستش و احتمال ریمو شدن این برنچ بعد از این تاریخ هستش..

 

اگه که از خود لایبراری Okhttp استفاده کنید میتونین با خط کد زیر این مشکل رو برطرف کنید: (منبع: https://stackoverflow.com/a/۵۶۸۱۸۷۶۹)

//OkHttp
  implementation ("com.squareup.okhttp3:okhttp:3.12.12"){
      force = true //API 19 support
  }
  implementation 'com.squareup.okhttp3:logging-interceptor:3.12.12'

اگه که از لایبراری Retrofit استفاده میکنید طبق چیزی که داخل گیت هاب خوندم گفته شده که امکان ساپورتش وجود نخواهد داشت..

 

Exception Error in Api19

java.lang.ExceptionInInitializerError
        at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:202)
        at retrofit2.Retrofit$Builder.build(Retrofit.java:628)
        at com.abp.nikystore.service.http.ApiServiceKt.createApiServiceInstance(ApiService.kt:20)
        at com.abp.nikystore.App$onCreate$myModule$1$1.invoke(App.kt:25)
        at com.abp.nikystore.App$onCreate$myModule$1$1.invoke(App.kt:17)
        at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:53)
        at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:39)
        at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:47)
        at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:103)
        at org.koin.core.scope.Scope.resolveInstance(Scope.kt:236)
        at org.koin.core.scope.Scope.get(Scope.kt:204)
        at com.abp.nikystore.App$onCreate$myModule$1$2.invoke(App.kt:44)
        at com.abp.nikystore.App$onCreate$myModule$1$2.invoke(App.kt:17)
        at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:53)
        at org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
        at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:103)
        at org.koin.core.scope.Scope.resolveInstance(Scope.kt:236)
        at org.koin.core.scope.Scope.get(Scope.kt:204)
        at com.abp.nikystore.App$onCreate$myModule$1$3.invoke(App.kt:44)
        at com.abp.nikystore.App$onCreate$myModule$1$3.invoke(App.kt:17)
        at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:53)
        at org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
        at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:103)
        at org.koin.core.scope.Scope.resolveInstance(Scope.kt:236)
        at org.koin.core.scope.Scope.get(Scope.kt:204)
        at org.koin.android.viewmodel.factory.DefaultViewModelFactory.create(DefaultViewModelFactory.kt:31)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:164)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:130)
        at org.koin.android.viewmodel.ViewModelResolverKt.get(ViewModelResolver.kt:22)
        at org.koin.android.viewmodel.ViewModelResolverKt.resolveInstance(ViewModelResolver.kt:11)
        at org.koin.android.viewmodel.scope.ScopeExtKt.getViewModel(ScopeExt.kt:75)
        at org.koin.android.viewmodel.scope.ScopeExtKt.getViewModel(ScopeExt.kt:63)
        at org.koin.android.viewmodel.koin.KoinExtKt.getViewModel(KoinExt.kt:55)
        at org.koin.android.viewmodel.ext.android.FragmentExtKt.getViewModel(FragmentExt.kt:66)
        at com.abp.nikystore.feature.main.MainFragment$$special$$inlined$viewModel$2.invoke(FragmentExt.kt:68)
        at com.abp.nikystore.feature.main.MainFragment$$special$$inlined$viewModel$2.invoke(FragmentExt.kt)
        at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
        at com.abp.nikystore.feature.main.MainFragment.getMainViewModel(MainFragment.kt)
        at com.abp.nikystore.feature.main.MainFragment.onViewCreated(MainFragment.kt:25)
        at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManagerImpl.java:1144)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:851)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
        at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
    	at android.view.LayoutInflater.inflate(LayoutInflater

منبع مدیوم: https://medium.com/square-corner-blog/okhttp-3-13-requires-android-5-818bb78d07ce

 

امیدوارم این مطلب به کارتون بیاد..

موفق باشید..

فایل پیوست

4
حذف شده

سلام ابولفضل جان،مرسی که گفتی، اتفاقا الان که پیامت رو دیدم یادم اومد که یکی از دلایلی که در پروژه فیت آرنا کلا بی خیال ورژن های زیر ۲۱ شدم همین بود :)))) دستگاه های زیر ۲۱ انقدر تعدادشون کمه که اصلا ارزش پشتیبانی کردن نداره، احتمالا کسی که انقدر گوشی رد پایینی داره، خریدار هم نخواهد بود :)

فایل پیوست

سعید شاهینی

توسط

سعید شاهینی

7 دی 99

حذف شده
کمترین وظیفه ایه که میتونم در قبال آموزشاتون بکنم استاد:)) اصن از ارزش اپ کم میشه بخوای از اندروید 4 پشتیبانی کنی:)