2016-09-08 7 views
7

फेंक दिया गया है Google Awareness API से DetectedActivityFence का उपयोग कर रहा हूं। यह मेरे अपने उपकरणों पर ठीक काम कर रहा है, लेकिन मुझे क्रैशलिटिक्स में सुरक्षा अपवाद में कई क्रैश प्राप्त हुए।Google जागरूकता API सुरक्षा अपवाद

Fatal Exception: java.lang.SecurityException: Invalid API Key for package = [package_name] .Status code received = -1 
    at android.os.Parcel.readException(Parcel.java:1540) 
    at android.os.Parcel.readException(Parcel.java:1493) 
    at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source) 
    at com.google.android.gms.common.internal.zzd.zzqz(Unknown Source) 
    at com.google.android.gms.internal.zzpw$zzc.zzapl(Unknown Source) 
    at com.google.android.gms.internal.zzpw$zzf.run(Unknown Source) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at com.google.android.gms.internal.zzrn.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:818) 

यह Android संस्करण के बीच कोई सह-संबंध के बिना नहीं हुआ है, यानी यह विभिन्न निर्माताओं और विभिन्न Android संस्करण (5.x-6.x) से उपकरणों को प्रभावित करता। ये डिवाइस रूट नहीं हैं और स्टॉक रोम पर काम करने की तरह दिखते हैं। यह समस्या मेरे उपयोगकर्ताओं के 10% के लिए प्रकट होती है।

मुझे यकीन है कि मैं सही एपीआई कुंजी का उपयोग कर रहा हूं अन्यथा मैं अपने डिवाइस पर दुर्घटना देख सकता हूं, क्या मैं कर सकता हूं?

क्या किसी को भी एक ही समस्या का सामना करना पड़ा?

+0

क्या आपने Google कंसोल में एपीआई कुंजी बनाई है? – Amy

+0

@ एमी हाँ, यह मेरे उपकरणों पर काम करता है और मुझे लगता है कि कुंजी सही है। –

+0

@aeinsam * एपीआई कुंजी * जिसे आपने * पैकेज नाम * * पैकेज नाम * के साथ जेनरेट किया है, अलग है। मेरा मतलब है कि * एपीआई कुंजी * उत्पन्न करते समय आपके ऐप के पैकेज का नाम और जिसे आपने डेवलपर कंसोल पर दर्ज किया था। –

उत्तर

5

एक ऐसी बग है जो नेटवर्क ऑपरेशन से गलती से गलती से गलती करती है ताकि ऐप को प्रमाणित किया जा सके कि यह इंगित करता है कि एपीआई कुंजी सही ढंग से सेट नहीं की गई थी, भले ही वास्तविक त्रुटि कुछ और थी। इसे आंतरिक रूप से तय किया गया है और अगली Google Play सेवाओं में रिलीज होगा।

अभी के लिए, सबसे अच्छा वर्कअराउंड एक UncaughtExceptionHandler को उस थ्रेड पर जोड़ना है जो GoogleApiClient.connect() को कॉल करता है। यदि आप मुख्य थ्रेड पर GoogleApiClient.connect() को कॉल करते हैं, तो आप Looper.myLooper() के माध्यम से थ्रेड इंस्टेंस प्राप्त कर सकते हैं। GetThread()।

+2

फिक्स 2017 की शुरुआत में रोलिंग हो जाएगा। – mochu

+1

आप इसे कैसे जानते हैं? – mklimek

+0

एक बग रिपोर्ट से paraphrased लगता है। मैंने एक नया उत्तर बनाया है जिसे उचित रूप से संदर्भित किया गया है। उस धागे पर नजर रखना और वहां अपडेट करना महत्वपूर्ण है। जो मैंने पढ़ा है, उससे असहमति है कि क्या "सर्वश्रेष्ठ कामकाज" भी काम करता है। आपके स्रोत को जिम्मेदार नहीं ठहराए जाने के लिए डाउनवोट। –

0

से: https://code.google.com/p/android/issues/detail?id=223751#c2

हमारे जांच करता है कि कभी कभी इस SecurityException फेंक है जब वहाँ एक नेटवर्क त्रुटि प्रमाणित करने के लिए है में एक बग नहीं है। Google Play सेवाओं के अगले संस्करण में फ़िक्स रोलआउट होगा।

अभी के लिए, सबसे अच्छा समाधान का ऊपर एक UncaughtExceptionHandler धागा है कि आप GoogleApiClient.connect फोन() पर निर्धारित किया जाएगा। अधिकांश लोगों के लिए, यह मुख्य धागा पर होगा, जिसे आप Looper.myLooper() के माध्यम से प्राप्त कर सकते हैं। GetThread()।

लेकिन आप यह भी देखेंगे कि उत्तरों से पता चलता है कि यह ठोस काम नहीं है।

आप यह भी देख सकते हैं कि उस धागे का ओपी इस एसओ पोस्ट का संदर्भ देता है, लेकिन स्वीकृत उत्तर धागे का संदर्भ नहीं देता है, भले ही उन्होंने इसे क्रिया से कॉपी किया हो। बहुत बुरा फार्म!

0

मैं इस मुद्दे पर आया क्योंकि मुझे एक ही त्रुटि मिल रही थी, और मैंने सोचा कि यह जागरूकता एपीआई कुंजी हो सकती है जो Google डेवलपर कंसोल से समन्वयित नहीं हो रही है, बहुत सारी लग रही है और एक ही त्रुटि प्राप्त करने के बाद, मैं वापस गया Google डेवलपर कंसोल पर जागरूकता API और एहसास हुआ कि मेरी जागरूकता API सक्षम नहीं थी, भले ही मेरे पास पैकेज सेट था और उसके पास वैध API कुंजी थी। यह भी सुनिश्चित करें कि एपीआई कुंजी आपके मैनिफेस्ट में सेट है। उम्मीद है कि यह किसी की मदद करता है।

0

मैंने लगभग एक दिन संघर्ष किया और एक और जवाब मिला। हालांकि उस समय स्वीकृत उत्तर सही था।

एकमात्र चीज ने मेरी मदद की है जो परीक्षण के उद्देश्य के लिए डीबग कीस्टोर का उपयोग करके Google डेवलपर कंसोल पर एपीआई कुंजी उत्पन्न कर रहा है और उत्पादन के दौरान रिलीज कीस्टोर के साथ इसे बदल रहा है।

एपीआई कुंजी कैसे उत्पन्न करता है?कृपया Google के शब्द को स्वयं देखें Here

आशा है कि यह भविष्य में किसी की सहायता करेगा।

संबंधित मुद्दे