অ্যান্ড্রয়েডআরআনটাইম: চর্বি ছাড়: অ্যান্ড্রয়েডম্যাপসপি-জুম টেবিলম্যানেজার


133

আমার অ্যাপ্লিকেশন যা গুগল ম্যাপস এসডিকে (ভি 2) ব্যবহার করে সবেমাত্র এই ব্যতিক্রমটি দিয়ে ক্রাশ শুরু হয়েছে:

Process: com.currentlocation.android, PID: 7328
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=12
        at com.google.maps.api.android.lib6.gmm6.vector.ct.<init>(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):9)
        at com.google.maps.api.android.lib6.gmm6.vector.cv.a(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):23)
        at com.google.maps.api.android.lib6.gmm6.util.m.run(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):14)
        at java.lang.Thread.run(Thread.java:919)

ভি 3 বিটা এসডিকে, স্ট্যাক ট্রেসটি হ'ল:

2020-04-23 15:59:06.064 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example, PID: 22717
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=12
        at com.google.android.libraries.maps.bv.zzbs.<init>(ZoomTable.java:24)
        at com.google.android.libraries.maps.bv.zzbv.zza(ZoomTableQuadTree.java:57)
        at com.google.android.libraries.maps.br.zzd.zza(Unknown Source:4)
        at com.google.android.libraries.maps.hi.zzas.zza(Suppliers.java:7)
        at com.google.android.libraries.maps.br.zza.zzh(SharedMapComponentImpl.java:58)
        at com.google.android.libraries.maps.gu.zzat.zza(RendererFactoryImpl.java:88)
        at com.google.android.libraries.maps.it.zzav.zza(GoogleMapImpl.java:59)
        at com.google.android.libraries.maps.it.zzci.zza(MapFragmentDelegateImpl.java:3)
        at com.google.android.libraries.maps.it.zzcg.zza(MapFragmentDelegateImpl.java:15)
        at com.google.android.libraries.maps.SupportMapFragment$zza.onCreateView(SupportMapFragment.java:15)
        at com.google.android.gms.dynamic.zae.zaa(com.google.android.gms:play-services-base@@17.1.0:4)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(com.google.android.gms:play-services-base@@17.1.0:9)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreateView(com.google.android.gms:play-services-base@@17.1.0:25)
        at com.google.android.libraries.maps.SupportMapFragment.onCreateView(SupportMapFragment.java:34)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:310)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1185)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1354)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1432)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1495)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2617)
        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
        at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:336)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1186)
        at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2222)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1995)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1951)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1847)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2621)
        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
        at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:336)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1186)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1354)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1432)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1495)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2617)
        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1432)
        at android.app.Activity.performStart(Activity.java:7848)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)
2020-04-23 15:59:06.064 E/AndroidRuntime:     at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

কারণটা কি?


10
সম্ভবত এটি Google মানচিত্রের সমস্যা
এডুয়ার্ডো হার্জার

1
এটি কি কোনও প্রোডাকশন অ্যাপ বা কেবল একটি পরীক্ষা?
user961186

18
দ্রষ্টব্য: এই প্রশ্নের উত্তর "আমাকেও" পোস্ট করবেন না। কেবলমাত্র উত্তর যা প্রশ্নের উত্তর উত্তর হিসাবে পোস্ট করা উচিত।
ওয়াই হা লি

3
: আপডেট এখানে হবে issuetracker.google.com/issues/154855417
lewkka

2
@ মিডনাইটগুয়েস্ট আপনি যদি কিছুটা প্রসারিত করেন তবে এটি একটি ভাল প্রশ্ন তৈরি করতে পারে।
মাকেন

উত্তর:


83

সম্পাদনা করুন : গুগল ( লিঙ্ক ) এর সরকারী সমাধান নীচে দেওয়া হল

সারসংক্ষেপ

গুগল ম্যাপস এসডিকে থ্রেড অ্যাপটি ক্র্যাশ করেছে (অ্যারেআই্যান্ডেক্সটআউটফাউন্ডস এক্সেকশন) - প্রস্তাবিত সমাধান

বিবরণ

উপর এপ্রিল 23 2020 11:30 পিডিটি থেকে শুরু , গুগল 4 ঘন্টা একটি Maps মোবাইল উপাদানের কনফিগারেশন একটি আপডেট পাবার জন্যে কাজ করেছিল Android এবং iOS জন্য মানচিত্র SDK আছে মধ্যে ক্র্যাশ triggering। ডিভাইসগুলিতে অ্যাপ্লিকেশনগুলি যা কনফিগারেশনের এই সংস্করণটি ডাউনলোড করেছে (আউটেজের সময়কালে) ক্রাশের ঝুঁকির মধ্যে রয়েছে। অ্যান্ড্রয়েড এবং আইওএসের জন্য মানচিত্রের এসডিকে জন্য ওয়ার্কআরউন্ড সমাধানগুলি দেওয়া হয়।

অ্যান্ড্রয়েডের জন্য মানচিত্র এসডিকে

অ্যান্ড্রয়েড ভি 2 এর জন্য মানচিত্র এসডিকে (গুগল প্লে পরিষেবাগুলিতে অন্তর্ভুক্ত)

ক্র্যাশটি ঠিক করতে গুগল প্লে পরিষেবাদির আপডেটগুলি গুগল প্লে পরিষেবাগুলির সংস্করণ 17.4.55 এবং আরও নতুন সহ সমস্ত ডিভাইসে প্রকাশিত হয়েছে। আপডেট ইনস্টল হওয়ার পরে ডিভাইসে গুগল প্লে পরিষেবাদির সংস্করণ নম্বরটিতে কোনও পরিবর্তন নেই। আপডেট মানচিত্র মডিউলটি পেতে বিকাশকারী বা শেষ ব্যবহারকারীদের কাছ থেকে কোনও পদক্ষেপের প্রয়োজন নেই; তবে, বিকাশকারীরা যাচাই করতে পারেন যে মডিউলটি প্রদত্ত ডিভাইসে নিম্নলিখিত অ্যাডবি কমান্ড সহ উপস্থিত রয়েছে:

adb shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider

আপনি বিভাগে Module Set ID: mapsতালিকাবদ্ধ লাইন দেখতে হবে Module Sets

Module Set ID: maps, Module Set Version: 2015120015120000

অ্যান্ড্রয়েড ভি 2 এর জন্য মানচিত্র এসডিকে ক্রাশের হারগুলি আবার স্বাভাবিক অবস্থায় ফিরে এসেছে।

এখন অবধি, যদি আপনি নীচে উল্লিখিত ক্লায়েন্ট-সাইড কোড কর্মকাণ্ডের সাথে আপনার অ্যাপ্লিকেশনটি আপডেট না করে থাকেন তবে আপনাকে আরও পদক্ষেপ নেওয়ার দরকার নেই।

আপনি যদি ইতিমধ্যে কাজের অ্যাপ্লিকেশনটি আপডেট করে থাকেন তবে আপনি নিজের অ্যাপ্লিকেশনটির পরবর্তী আপডেটে workaround অপসারণ করতে পারেন (তবে কর্মক্ষেত্রটি রাখা নিরাপদ)।

অ্যান্ড্রয়েড ভি 2 এর জন্য প্রিমিয়াম প্ল্যান ম্যাপস এসডিকে বা অ্যান্ড্রয়েড ভি 3 বিটার জন্য মানচিত্র এসডিকে (স্ট্যাটিক লাইব্রেরি)

যদি আপনার অ্যাপ্লিকেশনটি অ্যান্ড্রয়েড ভি 2 এর জন্য প্রিমিয়াম প্ল্যান ম্যাপস এসডিকে বা অ্যান্ড্রয়েড ভি 3 বিটা (স্ট্যাটিক লাইব্রেরি) এর জন্য মানচিত্র এসডিকে ব্যবহার করে এবং ক্র্যাশগুলির সম্মুখীন হয়, তবে আমরা আপনাকে আপনার অ্যাপ্লিকেশনটির আপডেটের মাধ্যমে নীচের কাজের ক্ষেত্রগুলি রোল আউট করার জন্য সুপারিশ করছি। আপনার অ্যাপ্লিকেশনটি SDK- এর একটি স্থিতিশীল ভার্সন লোড করছে যা কিছু ডিভাইসে খারাপ ডেটা সংরক্ষণের জন্য ঝুঁকির মধ্যে রয়েছে, কেবলমাত্র আপনার অ্যাপ্লিকেশনটির একটি আপডেটই সমস্যার সমাধান করতে পারে।

প্লে স্টোর পর্যালোচনা অনুমোদনগুলি

আপনি যদি নিজের অ্যাপ্লিকেশন আপডেট করেন তবে প্লে স্টোর পর্যালোচনা অনুমোদনের বিলম্বের অভিজ্ঞতা হয় তবে দয়া করে আপনার অ্যাপ্লিকেশনটির প্যাকেজ আইডি সহ একটি সমর্থন মামলা করুন : support সহায়তা দলের সাথে যোগাযোগ করুন । আমাদের সমর্থন দলটি অভ্যন্তরীণভাবে আপনার অনুরোধটি বাড়িয়ে তুলবে এবং অনুমোদনের ত্বরান্বিত করবে।

গুগল প্লে স্টোরে নেতিবাচক পর্যালোচনা

কিছু অ্যাপ্লিকেশন বিকাশকারী ক্র্যাশের কারণে শেষ ব্যবহারকারীদের দ্বারা ছেড়ে যাওয়া গুগল প্লে স্টোরটিতে 1-তারা পর্যালোচনা সম্পর্কে অনুসন্ধান করেছিল। গুগল প্লে-এর নীতি [1] লঙ্ঘনকারী কেবলমাত্র মন্তব্যগুলি সরানো যেতে পারে। আপনি প্লে কনসোল [2] এ আপত্তিজনক পর্যালোচনাগুলিও পতাকাঙ্কিত করতে পারেন। নেতিবাচক পর্যালোচনার কারণে অ্যাপ্লিকেশনগুলি গুগল প্লে স্টোর থেকে স্বয়ংক্রিয়ভাবে সরানো হবে না। এটিও লক্ষণীয় যে আপনার সামগ্রিক অ্যাপ পর্যালোচনা রেটিংয়ের গণনা সাম্প্রতিক পর্যালোচনার পক্ষে, যার অর্থ আপনার রেটিং সময়ের সাথে সাথে প্রাক-ঘটনার পর্যায়ে ফিরে আসবে।

[1] Play প্লে স্টোরটিতে রেটিং এবং পর্যালোচনা

[2] inappropriate অনুপযুক্ত পর্যালোচনা রিপোর্ট করুন

আইওএসের জন্য মানচিত্র এসডিকে

আইওএসে ক্র্যাশ রেটগুলি স্বাভাবিক অবস্থায় ফিরে এসেছে। যদি আপনার অ্যাপ্লিকেশনটি এখনও ক্র্যাশগুলির মুখোমুখি হয় তবে আপনাকে এখানে যোগাযোগ করা কোড ওয়ার্কারআউন্ডস সহ আপনার অ্যাপ্লিকেশনটি আপডেট এবং প্রকাশ করতে হবে।

অ্যাপল অ্যাপ স্টোরটিতে আপনার অ্যাপ্লিকেশন মোতায়েন বা ত্বরান্বিত করার বিষয়ে প্রশ্নের জন্য, সরাসরি অ্যাপলের সাথে যোগাযোগ করুন।


এই আপডেটের সাথে, আমরা এই সমস্যাটি বন্ধ করছি। আপনার ধৈর্য জন্য প্রত্যেককে ধন্যবাদ। আমাদের দল এই ঘটনার গভীরতর অভ্যন্তরীণ তদন্ত করছে; যত তাড়াতাড়ি সম্ভব, আমরা আমাদের বিশ্লেষণ প্রকাশ করব (প্রায় এক সপ্তাহে) ইতিমধ্যে, যদি আপনার কোনও প্রশ্ন থাকে বা এখনও সমস্যা অনুভব করছেন তবে দয়া করে একটি সমর্থন মামলা করুন

সমাধান নীচে উপস্থিত:

  • অ্যান্ড্রয়েডের শেষ ব্যবহারকারীরা প্রভাবিত অ্যাপ্লিকেশনটির ডেটা (কেবল ক্যাশে নয়) সাফ করতে পারবেন।

  • আইওএস-এ থাকা শেষ ব্যবহারকারীরা প্রভাবিত অ্যাপ (গুলি) পুনরায় ইনস্টল করতে পারেন।

  • অ্যাপ্লিকেশন বিকাশকারীরা তাদের শেষ ব্যবহারকারীদের জন্য সমস্যাটি সমাধান করার জন্য নীচের কোডটি ওয়ার্কআরউন্ড প্রয়োগ করতে পারে।

আইওএসের জন্য কোড সমালোচনা:

কোডটির জন্য প্রস্তাবিত প্লেসমেন্টটি জিএমএসএস সার্ভিসেস অ্যাপ্লিকেশন (_: didFinishLaunchingWithOptions :) (সুইফট) বা অ্যাপ্লিকেশন: ডিফিনিশলঞ্চিং উইথঅপশন: (উদ্দেশ্য-সি) পদ্ধতিতে করার আগে before বিশেষ করে:

সুইফট:

let key = "GoogleMapsServerControlledParamsKey_bug_154855417"
if !UserDefaults.standard.bool(forKey: key) {
    let urls = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
    if urls.count > 0 {
        let paramUrl = urls[0].appendingPathComponent("com.google.GoogleMaps/ServerControlledParams", isDirectory: false)
        try? FileManager.default.removeItem(at: paramUrl)
    }
    UserDefaults.standard.set(true, forKey: key)
}

উদ্দেশ্য গ:

NSString *key = @"GoogleMapsServerControlledParamsKey_bug_154855417";
BOOL keyExists = [[NSUserDefaults standardUserDefaults] boolForKey:key];
if (!keyExists) {
    NSArray<NSURL *> *array =
        [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory
                                               inDomains:NSUserDomainMask];
    if (array.count > 0) {
        NSURL *url =
            [array[0] URLByAppendingPathComponent:@"com.google.GoogleMaps/ServerControlledParams"
                                      isDirectory:NO];
        if (url) {
            [[NSFileManager defaultManager] removeItemAtURL:url error:NULL];
        }
    }
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key];
}

অ্যান্ড্রয়েডের জন্য কোড সমালোচনা:

কোডটির জন্য প্রস্তাবিত স্থান নির্ধারণ অ্যাপ্লিকেশন.অনক্রিয়েট () এ রয়েছে:

জাভা

try {
  SharedPreferences hasFixedGoogleBug154855417 = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE);
  if (!hasFixedGoogleBug154855417.contains("fixed")) {
    File corruptedZoomTables = new File(getFilesDir(), "ZoomTables.data");
    File corruptedSavedClientParameters = new File(getFilesDir(), "SavedClientParameters.data.cs");
    File corruptedClientParametersData =
        new File(
          getFilesDir(),
          "DATA_ServerControlledParametersManager.data."
              + getBaseContext().getPackageName());
    File corruptedClientParametersDataV1 =
        new File(
          getFilesDir(),
          "DATA_ServerControlledParametersManager.data.v1."
              + getBaseContext().getPackageName());
    corruptedZoomTables.delete();
    corruptedSavedClientParameters.delete();
    corruptedClientParametersData.delete();
    corruptedClientParametersDataV1.delete();
    hasFixedGoogleBug154855417.edit().putBoolean("fixed", true).apply();
  }
} catch (Exception e) {

}

Kotlin

try {
    val sharedPreferences = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE)
    if (!sharedPreferences.contains("fixed")) {
        val corruptedZoomTables = File(filesDir, "ZoomTables.data")
        val corruptedSavedClientParameters = File(filesDir, "SavedClientParameters.data.cs")
        val corruptedClientParametersData = File(filesDir, "DATA_ServerControlledParametersManager.data.${packageName}")
        val corruptedClientParametersDataV1 = File(filesDir, "DATA_ServerControlledParametersManager.data.v1.${packageName}")
        corruptedZoomTables.delete()
        corruptedSavedClientParameters.delete()
        corruptedClientParametersData.delete()
        corruptedClientParametersDataV1.delete()
        sharedPreferences.edit().putBoolean("fixed", true).apply()
    }
} catch (exception: Exception) {

}

এখানে সরবরাহকৃত কার্যক্ষেত্রগুলি অ্যান্ড্রয়েডের জন্য আমাদের এসডিকে-র সমস্ত উপলভ্য স্বাদ এবং সংস্করণগুলি কভার করে। আরও স্পষ্ট করার জন্য (আপনি যদি ওয়ার্কআরউন্ডের আগের সংস্করণটি প্রকাশ করেছিলেন যা এতগুলি ফাইল মুছেনি):

  • ম্যাপস অ্যান্ড্রয়েড এসডিকে ভি 2 ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে কেবল একটি ফাইল মুছতে হবে: জুমটবেবলস.ডাটা।
  • ম্যাপস অ্যান্ড্রয়েড এসডিকে ভি 3 বিটা ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিকে কেবল একটি ফাইল মুছতে হবে

    DATA_ServerControlledParametersManager.data.v1। + getBaseContext ()। getPackageName ()) বা

    DATA_ServerControlledParametersManager.data। + getBaseContext ()। getPackageName ())


1
আমাদের অ্যাপ এমুলেটর, একই কোডে কাজ করে তবে কোনও উত্পাদন ডিভাইসে নয়। জুম করার সময় এটি ঘটতে শুরু করে। চূড়ান্ত ব্যতিক্রম: অ্যান্ড্রয়েডম্যাপসপি-জুম
টেবিল

1
ত্রুটিটি অ্যান্ড্রয়েডে।
user961186

2
কেবলমাত্র মানচিত্র ব্যবহার করে অনেকগুলি অ্যাপ্লিকেশন ক্রাশ হচ্ছে, যার মধ্যে উবার, ল্যাফ্ট ইত্যাদি রয়েছে। গুগল মানচিত্রগুলি আমার পক্ষে কাজ করে বলে মনে হচ্ছে, এটি অবশ্যই পাবলিক এপিআই থেকে পৃথক অন্য একটি এপিআই এন্ডোয়েন্ট পয়েন্টে নির্দেশ করবে।
অ্যালেক্সভিপার্ল

16
এখানে আসল অপরাধটি হ'ল এমনকি যখন মানচিত্রের কলটি চেষ্টা / ধরার বিবৃতিতে আবদ্ধ করা হয় তখনও গুগল ম্যাপস কোনওভাবে আপনার ট্রায়াল কলকে ছাড়িয়ে যায় এবং কোনও ত্রুটি ছোঁড়ার পরিবর্তে অ্যাপটিকে ক্র্যাশ করে। কেবল সমস্ত কিছু ক্র্যাশ করে নয়, যখন মানচিত্রগুলি উপলভ্য না থাকে তখন একটি উপযুক্ত ব্যতিক্রম ছুঁড়ে ফেলা উচিত।
ব্রেটিনস

2
পাকিস্তানে একই সমস্যা
সৈয়দ রাজা মেহেদি

44

প্রতিটি অ্যাপ্লিকেশনে মনে হচ্ছে গুগল ম্যাপ জুমটবেবলস.ডেটা ফাইল তৈরি করে।

এখানে চিত্র বর্ণনা লিখুন

এই ফাইলটি ত্রুটিযুক্ত ছিল, এর ত্রুটিযুক্ত সংস্করণ যা মন্তব্য থেকে ডাউনলোড করা যেতে পারে । ইস্যুটি পুনরুত্পাদন করতে ডিভাইসের অ্যাপ্লিকেশন প্যাকেজগুলি থেকে জুমটবেলস.ডেটা সরান এবং ত্রুটিযুক্ত একটি প্রবেশ করান। অ্যাপ্লিকেশনটির ক্রাশ হওয়া উচিত।

বর্তমানে, গুগলের পক্ষ থেকে সমস্যাটি সমাধান করা হয়েছিল, তবে অ্যাপ্লিকেশনগুলিতে এখনও সেই ডেটা ফাইলের একটি ক্যাশেড সংস্করণ রয়েছে। সমস্যাটি সমাধানের জন্য আমাদের অ্যাপ্লিকেশন অনক্রিয়েট পদ্ধতিতে অ্যাপ্লিকেশন শুরু হওয়ার সাথে সাথে সেই ফাইলটি সরিয়ে নেওয়া উচিত।

private void fixGoogleMapBug() {
  try {
    SharedPreferences hasFixedGoogleBug154855417 = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE);
    if (!hasFixedGoogleBug154855417.contains("fixed")) {
      File corruptedZoomTables = new File(getFilesDir(), "ZoomTables.data");
      File corruptedSavedClientParameters = new File(getFilesDir(), "SavedClientParameters.data.cs");
      File corruptedClientParametersData =
          new File(
            getFilesDir(),
            "DATA_ServerControlledParametersManager.data."
                + getBaseContext().getPackageName());
      File corruptedClientParametersDataV1 =
          new File(
            getFilesDir(),
            "DATA_ServerControlledParametersManager.data.v1."
                + getBaseContext().getPackageName());
      corruptedZoomTables.delete();
      corruptedSavedClientParameters.delete();
      corruptedClientParametersData.delete();
      corruptedClientParametersDataV1.delete();
      hasFixedGoogleBug154855417.edit().putBoolean("fixed", true).apply();
    }
  } catch (Exception e) {

  }
}

আপডেট 1

সর্বশেষ গুগল বিকাশকারীদের মন্তব্যের ভিত্তিতে আমি হালকাভাবে আপডেট করেছি :

এখানে সরবরাহকৃত কার্যক্ষেত্রগুলি অ্যান্ড্রয়েডের জন্য আমাদের এসডিকে-র সমস্ত উপলভ্য স্বাদ এবং সংস্করণগুলি কভার করে। আরও স্পষ্ট করার জন্য (আপনি যদি ওয়ার্কআরউন্ডের আগের সংস্করণটি প্রকাশ করেছিলেন যা এতগুলি ফাইল মুছেনি):

ম্যাপস অ্যান্ড্রয়েড এসডিকে ভি 2 ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে কেবল একটি ফাইল মুছতে হবে: জুমটবেবলস.ডাটা। ম্যাপস অ্যান্ড্রয়েড এসডিকে ভি 3 বিটা ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে কেবল একটি ফাইল মুছে ফেলা উচিত, হয় ডায়াটা_সেভারসন্ট্রোলডপ্যারামিটারগুলি ম্যানেজ.ডেটা.ভি 1। + getBaseContext ()। getPackageName ()) বা DATA_ServerControlledParatersManager.data। + getBaseContext ()। getPackageName ())


2
জুমটবেলস.ডাটা ফাইল বাদ দিয়ে আমার পক্ষে কাজ করেছে। অনেক ধন্যবাদ! প্রত্যেকের এটি ব্যবহার করা উচিত এবং উত্তর হিসাবে চিহ্নিত করা উচিত!
এডুয়ার্ডো হার্জার

@ আর্থার অ্যাটআউট হ্যাঁ, আমি এখনই এটি করার জন্য এবং আমার প্রযোজনীয় অ্যাপ্লিকেশনগুলি ঠিক করেছি যা গুগলের
ফিক্সের

@ এডুয়ার্ডো হার্জার গুগলের ইটিএ 48 ঘন্টা এবং উত্পাদন পূর্ণ রোল আউট 48 ঘন্টা বেশি সময় লাগবে। (আপডেট পর্যালোচনা সময় + রোল আউট সময়)
মুহাম্মদ সাকিব

এটি আমার পক্ষে কাজ করেছিল! আমি কেবল আমার ফ্লটার অ্যাপ্লিকেশনটির জন্য কিছুটা পরিবর্তন করেছি: var dir = getApplicationSupportDirectory (); ফাইল দূষিত জুম টেবিল = নতুন ফাইল (dir.path + "/ZoomTables.data");
সিএসকি

আমরা কেবলমাত্র একবার ZoomTables.data অপসারণ করব? ভবিষ্যতে যদি এটি আবার দূষিত হয়ে যায় তবে কী হবে?
জান নেপ্রেš

11

এই সমাধানটি আমার পক্ষে কাজ করেছিল

  1. প্রথমে "অ্যাপের তথ্য" খুলুন
  2. "সঞ্চয়স্থান" চয়ন করুন
  3. "ডেটা সাফ করুন" এ ক্লিক করুন
  4. অ্যাপ্লিকেশনটি আবার খুলুন এবং সমস্যাটি ঠিক হয়েছে কিনা তা পরীক্ষা করুন।

    নীচে কেবলমাত্র আপনার গ্রাহকদের সহায়তা করার জন্য পরামর্শ দেওয়া হচ্ছে।

  5. অসুবিধার জন্য আপনার সমস্ত ব্যবহারকারীকে একটি ইমেল প্রেরণ করুন এবং তারা যে সমস্যার মুখোমুখি হয়েছেন তাদের বর্ণনা করুন এবং তাদের সমস্যাটি সমাধান করার জন্য তাদের উপরে উল্লিখিত পদক্ষেপ দিন।

  6. আপনার অ্যাপটিতে পুশ নোটিফিকেশন পরিষেবা থাকলে আপনার ফায়ারবেস পুশ নোটিফিকেশন সহ আপনার সমস্ত ব্যবহারকারীকে পুশ বিজ্ঞপ্তিও পাঠাতে পারেন।

স্ক্রিনশট বিক্ষোভ:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


6

অ্যান্ড্রয়েডের জন্য, একাধিক বিকাশকারী সরাসরি তাদের অ্যাপ্লিকেশন থেকে জুমটবেল.ডেটা ফাইল মুছতে অন্তর্ভুক্ত এমন একটি কাজের কথা উল্লেখ করেছেন। পর্যালোচনা করার পরে, এই ফিক্সটি নিরাপদ বলে মনে হচ্ছে এবং আপনি এটি আপনার প্রয়োগে চেষ্টা করতে পারেন।

দয়া করে https://issuetracker.google.com/154855417#comment179 দেখুন

আপনি যদি চান যে আপনার ব্যবহারকারীরা পুনরায় ইনস্টল না করে আপনার অ্যাপ্লিকেশনটি ব্যবহার চালিয়ে যেতে চান, আপনার সুবিধার্থে নমুনা কোডটি এখানে অনুলিপি করা হবে। ইন Application.onCreate () :

SharedPreferences googleBug = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE);
if (!googleBug.contains("fixed")) {
        File corruptedZoomTables = new File(getFilesDir(), "ZoomTables.data");
        corruptedZoomTables.delete();
        googleBug.edit().putBoolean("fixed", true).apply();
}

উল্লেখ: গুগল ম্যাপস এসডিকে ক্রাশ হচ্ছে - আংশিক সমাধান হয়েছে



6

উপরের সমাধানগুলির ত্রুটিগুলি:

  • ডিভাইসটি ক্র্যাশ দ্বারা প্রভাবিত হয়েছে কিনা তা বিবেচনা না করেই প্রতিটি ডিভাইসে জুমটবেলস.ডেটা মোছা হয়
  • ওয়ার্কারআউন্ড কেবল একবার কাজ করে, এটি কি নিশ্চিত যে এই সমস্যাটি আর কখনও ঘটবে না?

আমার সমাধানের ত্রুটিগুলি:

  • প্রভাবিত ডিভাইস মানচিত্রে মানচিত্রের ক্রিয়াকলাপের প্রথম সম্পাদনায় খালি। ডিভাইস ঘোরানোর পরে বা দ্বিতীয় প্রয়োগের মানচিত্রটি প্রদর্শিত হবে

আমার সমাধান মানচিত্র এসডিকে প্রেরিত ব্যতিক্রমটিকে ধরে ফেলছে, অ্যাপ্লিকেশন শ্রেণির অনক্রেটটিতে এটি কল করুন:

public static void catchGoogleMapsException(final Context context)
{
  final Thread.UncaughtExceptionHandler defaultHandler =
    Thread.getDefaultUncaughtExceptionHandler();
  Thread.setDefaultUncaughtExceptionHandler(
    (@NonNull final Thread thread, @NonNull final Throwable ex) ->
    {
      if (thread.getName().contains("ZoomTableManager"))
      {
        new File(context.getFilesDir(), "ZoomTables.data").delete();
        Log.w("Maps Bug 154855417", "Caught exception and deleted ZoomTables.data");
      }
      else
        if (defaultHandler!=null)
          defaultHandler.uncaughtException(thread, ex);
        else
          throw new RuntimeException(
            "No default uncaught exception handler.", ex);
    });
}

আমি সবেমাত্র একটি অনুরূপ কর্মক্ষেত্র ঠেলেছি। আমার অ্যাপে গুগলের কাছে বিকল্প ম্যাপিং উত্স থাকায় আমি ডিফল্ট উত্সটি গুগল না হওয়ার পাশাপাশি ব্যবহারকারীকে কী করা হয়েছে তা বোঝাতে একটি বার্তা দেই change আশা করি গুগল যদি ভবিষ্যতে এই জাতীয় কিছু করতে পরিচালিত করে তবে এটি আমাকে সুরক্ষিত রাখবে। আমি আশা করি সেখানে পরীক্ষা করার পরেও উন্নতি হবে।
ইফোর

এই সমস্যাটি সমাধান করার জন্য আমাকে স্টোরেজ সাফ করতে হয়েছিল। যে কারণেই হোক না কেন, জুমটবেলস.ডাটা মোছা আমার পক্ষে এটি সমাধান করার পক্ষে যথেষ্ট ছিল না। আমি আমার স্টার্টআপ ক্রিয়াকলাপটি তৈরি () তে মুছে ফেললাম। আমার ধারণা আমি অ্যাপ্লিকেশন স্কোপটি এক্সেসপেশন হ্যান্ডলারটি সন্ধান করা উচিত।
শেলডুড

3

আমরা বিশ্বাস করি গুগল ম্যাপস এসডিকে এর ক্র্যাশগুলির মূল কারণটি ঠিক হয়ে গেছে। সমাধানটি প্রভাবিত অ্যাপ্লিকেশনগুলিতে প্রচারিত হচ্ছে এবং এটি প্রত্যাশিত গতিতে সমাধানের দিকে এগিয়ে চলেছে। সম্পূর্ণ রেজোলিউশন মার্কিন / প্রশান্ত মহাসাগর, 2020-04-23 19:45 বৃহস্পতিবারের মধ্যে শেষ হবে বলে আশা করা হচ্ছে।

উত্পাদনশীল সংস্করণটি ঠিক করা হয়েছিল (গুগলের পক্ষে) তবে আপনার এমুলেটরটিতে এখনও সমস্যা থাকলে আপনাকে নিম্নলিখিত কোডটি একবারে চালাতে হবে।

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    fixGoogleMapBugTemp()   //TODO: Then clean this line

//  ...  

}

/**
 * Observation: Invoke this method only once
 */
private fun fixGoogleMapBugTemp() {
    val googleBug = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE)
    if (!googleBug.contains("fixed")) {
        val corruptedZoomTables = File(filesDir, "ZoomTables.data");
        corruptedZoomTables.delete();
        googleBug.edit().putBoolean("fixed", true).apply();
    }
}

কার্যতালিকা : অ্যাপ্লিকেশন ডেটা সাফ করুন (কেবল ক্যাশে নয়)।

দ্রষ্টব্য : কারও কাছে তিরস্কারের জন্য যদি এটির প্রয়োজন হয় তবে ডিভাইসের অ্যাপ্লিকেশন প্যাকেজগুলি থেকে সমস্যাযুক্ত ফাইলের একটি অনুলিপি ।

বাধা

সূত্র

জি এল


3

সবার জন্য সম্পূর্ণ এবং অফিসিয়াল উত্তর:

ডায়াগনোসিস: লোড এ গুগল ম্যাপস প্ল্যাটফর্ম মোবাইল এসডিকে (আইওএস এবং অ্যান্ড্রয়েড) এর ক্রাশ।

কার্যকারিতা: * প্রভাবিত অ্যাপ্লিকেশনটির ডেটা সাফ করুন (কেবল ক্যাশে নয়) বা আনইনস্টল করুন তারপরে প্রভাবিত অ্যাপ (গুলি) পুনরায় ইনস্টল করুন।

  • আইওএসের জন্য কোড সমালোচনা:

কোডটির জন্য প্রস্তাবিত প্লেসমেন্টটি জিএমএসএস সার্ভিসেস অ্যাপ্লিকেশন (_: didFinishLaunchingWithOptions :) (সুইফট) বা অ্যাপ্লিকেশন: ডিফিনিশলঞ্চিং উইথঅপশন: (উদ্দেশ্য-সি) পদ্ধতিতে করার আগে before বিশেষ করে:

সুইফট:

let key = "GoogleMapsServerControlledParamsKey_bug_154855417"
if !UserDefaults.standard.bool(forKey: key) {
    let urls = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
    if urls.count > 0 {
        let paramUrl = urls[0].appendingPathComponent("com.google.GoogleMaps/ServerControlledParams", isDirectory: false)
        try? FileManager.default.removeItem(at: paramUrl)
    }
    UserDefaults.standard.set(true, forKey: key)
}

উদ্দেশ্য গ:

NSString *key = @"GoogleMapsServerControlledParamsKey_bug_154855417";
BOOL keyExists = [[NSUserDefaults standardUserDefaults] boolForKey:key];
if (!keyExists) {
    NSArray<NSURL *> *array =
        [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory
                                               inDomains:NSUserDomainMask];
    if (array.count > 0) {
        NSURL *url =
            [array[0] URLByAppendingPathComponent:@"com.google.GoogleMaps/ServerControlledParams"
                                      isDirectory:NO];
        if (url) {
            [[NSFileManager defaultManager] removeItemAtURL:url error:NULL]);
        }
    }
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key];
}

আপনি একবার এটি আপনার অ্যাপ্লিকেশনটিতে স্থাপন করার পরে, আপনি যদি আমাদের অনুমোদনটি ত্বরান্বিত করতে সহায়তা করতে চান তবে আপনি একটি মানচিত্র সমর্থন মামলা দায়ের করতে পারেন। আপনার অ্যাপ্লিকেশনটির আইডি, বান্ডিল আইডি এবং আপনি যে সংস্করণটি আপনার ক্ষেত্রে পর্যালোচনা করতে চান তা অন্তর্ভুক্ত করার বিষয়টি নিশ্চিত করুন।

  • অ্যান্ড্রয়েডের জন্য কোড সমালোচনা:

    কোডটির জন্য প্রস্তাবিত স্থান নির্ধারণ অ্যাপ্লিকেশন.অনক্রিয়েট () এ রয়েছে:

    জাভা

    try {
      SharedPreferences hasFixedGoogleBug154855417 = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE);
      if (!hasFixedGoogleBug154855417.contains("fixed")) {
        File corruptedZoomTables = new File(getFilesDir(), "ZoomTables.data");
        File corruptedSavedClientParameters = new File(getFilesDir(), "SavedClientParameters.data.cs");
        File corruptedClientParametersData =
            new File(
              getFilesDir(),
              "DATA_ServerControlledParametersManager.data.v1."
                  + getBaseContext().getPackageName());
        corruptedZoomTables.delete();
        corruptedSavedClientParameters.delete();
        corruptedClientParametersData.delete();
        hasFixedGoogleBug154855417.edit().putBoolean("fixed", true).apply();
      }
    } catch (Exception e) {
    
    }

    Kotlin

    try {
        val sharedPreferences = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE)
        if (!sharedPreferences.contains("fixed")) {
            val corruptedZoomTables = File(filesDir, "ZoomTables.data")
            val corruptedSavedClientParameters = File(filesDir, "SavedClientParameters.data.cs")
            val corruptedClientParametersData = File(filesDir, "DATA_ServerControlledParametersManager.data.v1.${packageName}")
            corruptedZoomTables.delete()
            corruptedSavedClientParameters.delete()
            corruptedClientParametersData.delete()
            sharedPreferences.edit().putBoolean("fixed", true).apply()
        }
    } catch (exception: Exception) {
    
    }

সূত্র: https://issuetracker.google.com/issues/1548554


2

এটি জামারিনের জন্য কোডের কাজ করছে। আপনাকে Xamarin.Essentials nuget প্যাকেজ ইনস্টল করতে হবে।

if (!Preferences.Get("google_bug_fixed", false))
{
    var corruptedZoomTables = new File(FileSystem.AppDataDirectory, "ZoomTables.data");
    corruptedZoomTables.Delete();
    Preferences.Set("google_bug_fixed", true);
}

1
শেষ লাইনটি Preferences.SET (.....
AndyM

1
আপনি সঠিক. আমি এটা ঠিক করেছি.
জান নেপ্রেš

1

ক্রাশটি এড়াতে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির অনক্রিটে অনুসরণ পদ্ধতিটি কল করা উচিত।

private fun clearCorruptedGMapsPreference() {
        try {
            val sharedPreferences = getSharedPreferences("google_bug_154855417", Context.MODE_PRIVATE)
            if (!sharedPreferences.contains("fixed")) {
                val corruptedZoomTables = File(filesDir, "ZoomTables.data")
                val corruptedSavedClientParameters = File(filesDir, "SavedClientParameters.data.cs")
                val corruptedClientParametersData = File(filesDir, "DATA_ServerControlledParametersManager.data.${packageName}")
                val corruptedClientParametersDataV1 = File(filesDir, "DATA_ServerControlledParametersManager.data.v1.${packageName}")
                corruptedZoomTables.delete()
                corruptedSavedClientParameters.delete()
                corruptedClientParametersData.delete()
                corruptedClientParametersDataV1.delete()
                sharedPreferences.edit().putBoolean("fixed", true).apply()
            }
        } catch (exception: Exception) {
            LogUtil.e(this@CourierApplication::class.java.name, "An error has happened. Error: ".plus(exception.cause?.message
                    ?: ""))
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.