کرش زمان MBaaS.init در اندروید

  • 116 نمایش
  • آخرین پست 25 مرداد 1395
shams این را پست کرد 11 مرداد 1395

سلام

به محض اجرای دستور init در برنامه خطای زیر بوجود می آید و برنامه crash میکند. ورژنهای برنامه به صورت زیر هستند. گردل به صورت زیر است:

compileSdkVersion 23 
buildToolsVersion "23.0.2"
compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'ir.mbaas:sdk:1.2.0'

متن خطا:

  1. java.lang.RuntimeException: An error occured while executing doInBackground()
  2. at android.os.AsyncTask$3.done(AsyncTask.java:300)
  3. at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
  4. at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
  5. at java.util.concurrent.FutureTask.run(FutureTask.java:242)
  6. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  7. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  8. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  9. at java.lang.Thread.run(Thread.java:841)
  10. Caused by: java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat
  11. at com.google.android.gms.iid.zzd.zzde(Unknown Source)
  12. at com.google.android.gms.iid.zzd.<init>(Unknown Source)
  13. at com.google.android.gms.iid.zzd.<init>(Unknown Source)
  14. at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
  15. at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
  16. at ir.mbaas.sdk.logic.InstanceIdHelper$1.doInBackground(InstanceIdHelper.java:47)
  17. at ir.mbaas.sdk.logic.InstanceIdHelper$1.doInBackground(InstanceIdHelper.java:43)
  18. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  19. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  20. ... 4 more
  21. java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat
  22. at com.google.android.gms.iid.zzd.zzde(Unknown Source)
  23. at com.google.android.gms.iid.zzd.<init>(Unknown Source)
  24. at com.google.android.gms.iid.zzd.<init>(Unknown Source)
  25. at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
  26. at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
  27. at ir.mbaas.sdk.logic.InstanceIdHelper$1.doInBackground(InstanceIdHelper.java:47)
  28. at ir.mbaas.sdk.logic.InstanceIdHelper$1.doInBackground(InstanceIdHelper.java:43)
  29. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  30. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  31. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  32. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  33. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  34. at java.lang.Thread.run(Thread.java:841)

 

12 دیدگاه‌ها
مرتب‌سازی براساس استاندارد | جدیدترین | آرا
moradi این را پست کرد 11 مرداد 1395

سلام

ممنون که اطلاع دادید.

با توجه به پیغام زیر

Caused by: java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat

حدس می زنم نسخه android.support.v4 باعث این مشکل شده باشه، از چه نسخه com.android.support:support-v4 استفاده می کنید؟

shams این را پست کرد 12 مرداد 1395

سلام

در dependency های پروژه من موجود نیست.

حدس میزنم نسخه play-services-locaton موجود در ir.mbaas:sdk:1.2.0 قدیمی است. ظاهرا در نسخه  play-services:9.0.2 این مشکل حل شده.

moradi این را پست کرد 12 مرداد 1395

سلام

ما در نسخه های جدید sdk از play-services-locaton استفاده نمی کنیم و این امکان را به دلایلی غیرفعال کردیم. تنها اسم آن در لیست dependency ها وجود دارد که باید حذف شود.

می تونید نسخه play-services نصب شده روی گوشی یا شبیه سازتون رو بگید؟

shams این را پست کرد 12 مرداد 1395

سلام

طبق بررسی ها ظاهرا نسخه های قبل play-services:9.0.2 با بعضی نسخه های support library مشکل دارند که ممکن است در dependency های غیر مستقیم برنامه استفاده شده باشد.

play-services نصب شده روی گوشی 9.4.52 است.

moradi این را پست کرد 12 مرداد 1395 - آخرین ویرایش 12 مرداد 1395

سلام

ممنون که وقت گذاشتید، مشکل رو بررسی می کنیم و بهتون اطلاع می دم.

اگر وقت می کنید، سورس sdk به همراه یک برنامه ساده در آدرس https://github.com/irmbaas/PushNotification قرار دارد. اگر متوجه اشتباه یا نکته ایی شدید خوشحال می شم با ما در میان بگذارید.

moradi این را پست کرد 15 مرداد 1395

سلام

لطفا نسخه 1.3 sdk رو تست کنید. play-services-locaton حذف و تغییرات جزئی دیگری اعمال شد. در صورتیکه همچنان مشکل وجود دارد به ما اطلاع دهید.

ممنون

shams این را پست کرد 15 مرداد 1395

سلام

مشکل حل شد:

 

compileSdkVersion 24 
compile 'com.google.android.gms:play-services-gcm:9.2.0'
compile 'ir.mbaas:sdk:1.3.0'

shams این را پست کرد 18 مرداد 1395

سلام، مشکل فقط روی emulator حل شده بود، روی دیوایس واقعی با نسخه جدیدی که دادید، یک مشکل جدید بوجود آمده است.

همچنان زمان init، برنامه کرش میکند:

  1. java.lang.RuntimeException: An error occured while executing doInBackground()
  2. at android.os.AsyncTask$3.done(AsyncTask.java:300)
  3. at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
  4. at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
  5. at java.util.concurrent.FutureTask.run(FutureTask.java:242)
  6. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  7. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  8. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  9. at java.lang.Thread.run(Thread.java:841)
  10. Caused by: java.lang.NoSuchFieldError: PUBLIC_ONLY
  11. at java.lang.Class.getDeclaredAnnotation(Native Method)
  12. at java.lang.Class.getAnnotation(Class.java:290)
  13. at com.b.a.c.f.an.<clinit>(VisibilityChecker.java:170)
  14. at com.b.a.c.aa.<clinit>(ObjectMapper.java:261)
  15. at ir.mbaas.sdk.dfapi.JsonUtil.<clinit>(JsonUtil.java:14)
  16. at ir.mbaas.sdk.dfapi.ApiInvoker.deserialize(ApiInvoker.java:102)
  17. at ir.mbaas.sdk.apis.Registration.processResponse(Registration.java:70)
  18. at ir.mbaas.sdk.dfapi.BaseAsyncRequest.doInBackground(BaseAsyncRequest.java:126)
  19. at ir.mbaas.sdk.dfapi.BaseAsyncRequest.doInBackground(BaseAsyncRequest.java:29)
  20. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  21. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  22. ... 4 more
  23. java.lang.NoSuchFieldError: PUBLIC_ONLY
  24. at java.lang.Class.getDeclaredAnnotation(Native Method)
  25. at java.lang.Class.getAnnotation(Class.java:290)
  26. at com.b.a.c.f.an.<clinit>(VisibilityChecker.java:170)
  27. at com.b.a.c.aa.<clinit>(ObjectMapper.java:261)
  28. at ir.mbaas.sdk.dfapi.JsonUtil.<clinit>(JsonUtil.java:14)
  29. at ir.mbaas.sdk.dfapi.ApiInvoker.deserialize(ApiInvoker.java:102)
  30. at ir.mbaas.sdk.apis.Registration.processResponse(Registration.java:70)
  31. at ir.mbaas.sdk.dfapi.BaseAsyncRequest.doInBackground(BaseAsyncRequest.java:126)
  32. at ir.mbaas.sdk.dfapi.BaseAsyncRequest.doInBackground(BaseAsyncRequest.java:29)
  33. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  34. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  35. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  36. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  37. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  38. at java.lang.Thread.run(Thread.java:841)

mersam این را پست کرد 18 مرداد 1395

سلام، از proguard استفاده می کنید؟

اگر جواب آره هستش، خط های زیر رو توی فایل proguard پروژتون اضافه کنید، ببینید مشکل برطرف می شه؟

-keepnames class com.fasterxml.jackson.** { 
*; 
}
-keepnames interface com.fasterxml.jackson.** { 
    *; 
}

shams این را پست کرد 18 مرداد 1395

خیر این مورد را قبلا تست کردم. خطا بدون proguard است.

shams این را پست کرد 18 مرداد 1395

فکر میکنم در یک dependency دیگر از jackson استفاده شده بوده که با تغییر آن فعلا مشکل ظاهرا حل شد.

  • لایک شده توسط
  • moradi
dr.mohammad این را پست کرد 25 مرداد 1395 - آخرین ویرایش 25 مرداد 1395

packagingOptions {
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml'
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties'
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml'
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties'
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml'
        exclude 'META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties'
    }


از این کد ساتفاده کنید دیگه نیاز نیست dependency رو حذف کنید