2012-06-14 18 views
7

में अपग्रेड करने के बाद एप्लिकेशन को निर्यात करने में विफल रहा मैंने अभी अपने एंड्रॉइड एसडीके, एडीटी और प्रोगुआर्ड को नवीनतम और महानतम में अपग्रेड किया है।प्रोगार्ड 4.8

मेरे परियोजना को संकलित करता है बनाता है और डिबग मोड में ठीक चलाता है, लेकिन जैसे ही मैं इसके बारे में एक हस्ताक्षरित रिहाई APK निर्यात करने की कोशिश, मैं ग्रहण कंसोल पर किसी भी त्रुटि लॉग संदेशों के बिना निर्यात विज़ार्ड से कोई त्रुटि प्राप्त! *

enter image description here

अगर मैं Window->Show View->Error Log के माध्यम से त्रुटि लॉग को देखने का प्रयास सब मैं देख उसी के अधिक है:

enter image description here

मुझे नहीं पता कि क्या करना है क्योंकि न तो एक्लिप्स और न ही प्रोगार्ड किसी भी संकेत को समस्या के बारे में बताएगा।

मेरी परियोजना ने हाल ही में अपग्रेड तक ठीक निर्यात किया। कोई निर्माण चेतावनी नहीं। कोई लिंट चेतावनी नहीं!

मैं ${sdk.dir}\tools\proguard\proguard-android.txt में Android के लिए मानक विन्यास फाइल का उपयोग कर रहा:

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 

-dontoptimize 
-dontpreverify 

-keepattributes *Annotation* 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgent 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

-dontwarn android.support.** 

और मेरी परियोजना की proguard.cfg केवल शामिल हैं:

-assumenosideeffects class android.util.Log { 
    public static *** v(...); 
    public static *** i(...); 
    public static *** d(...); 
    public static *** w(...); 
    public static *** e(...); 
} 

किसी को भी करने से पहले इस समस्या को देखा है? कोई विचार यह कैसे ठीक करें?

कुछ प्रगति? मैं के बाद से मैं ऐसा करने से उन्नत बनाया पहली बार के लिए हस्ताक्षरित APK निर्यात करने में सक्षम था:

  1. मैं Windows प्रणाली में सभी अस्थायी फ़ाइलें और कैश साफ करने के लिए CCleaner भाग गया,
  2. तब मैं विंडोज रिबूट।

लेकिन मेरी बेचैनी को, अगली बार मैं हस्ताक्षरित APK फिर से निर्यात करने की कोशिश की, मैं एक ही Failed to export applicationके साथ कोई सांत्वना संदेश प्राप्त! फिर से!

अब यह स्पष्ट है कि एंड्रॉइड देव उपकरण अस्थिर हो गए हैं। मैं वास्तव में CCleaner नहीं चला सकता और हर बार जब मैं एक हस्ताक्षरित एपीके निर्यात करना चाहता हूं तो विंडोज रीबूट कर सकता हूं। और मुझे परवाह नहीं है कि किसकी गलती है: एंड्रॉइड एसडीके? एडीटी प्लगइन? ProGuard?

अब मैं क्या करूँ?

कुछ और प्रगति? मैंने प्रोगुआर्ड बंद होने के साथ एक हस्ताक्षरित एपीके निर्यात करने का प्रयास किया। यह ठीक निर्यात किया गया लेकिन जब मैं इसे लॉन्च करता हूं, तो यह तुरंत एप्लिकेशन की गतिविधि कक्षा (ClassNotFoundException) नहीं ढूंढने में असमर्थ होने के कारण दुर्घटनाग्रस्त हो जाता है। यह अजीब है! यह डीबग मोड में ठीक चलता है और यदि एप्लिकेशन की गतिविधि कक्षा वहां नहीं थी, तो इसे संकलित नहीं किया जाना चाहिए था! क्या चल रहा है? क्या नवीनतम & सबसे बड़ा एंड्रॉइड देव टूल्स टूटा हुआ है?

मैंने Order and Export टैब के साथ this solution (और this one) में वर्णित अनुसार प्रयास करने की कोशिश की लेकिन इससे मदद नहीं मिली।

अब मैं क्या करूँ?

उत्तर

9

आप विंडोज एक्सपी चला रहे हैं, इसलिए मुझे यकीन नहीं है कि मैं मदद कर सकता हूं (मैं विंडोज 7 64-बिट चला रहा हूं) लेकिन @ बोई-देव को "17 कक्षाओं के अनसुलझे संदर्भों" के बारे में आपकी टिप्पणी ने मुझे याद दिलाया तुम्हारा में अपग्रेड करने का समान के साथ मेरी हाल ही में परीक्षा:

मैं solved itproguard.cfg में निम्न पंक्ति रखकर:

-dontwarn com.bta.myapp.MyAppActivity.R** 

यदि आपकी समस्या मेरा रूप में ही है पता नहीं है, लेकिन यह एक कोशिश लायक हो सकता है ।

संपादित करें: यह देखते हुए कि प्रोजेवार्ड से आपकी बारी में समस्याएं होने पर भी आपको निम्नलिखित सुझाव मिल सकते हैं?

  1. मानक जावा का निर्माण पथ से पुस्तकालयों निकालें: सही> गुण> जावा बिल्ड पथ> टैब पुस्तकालय> "एंड्रॉयड XX" के अलावा सब कुछ को हटा दें और "एंड्रॉयड निर्भरता" परियोजना के नाम पर क्लिक
  2. नाम बदलें "lib" से "libs" तक पुस्तकालय फ़ोल्डर। ऐसा करके, फ़ोल्डर "libs" में सभी पुस्तकालयों को एंड्रॉइड प्लगइन द्वारा पाया जाता है और परियोजना के "एंड्रॉइड निर्भरता" आइटम में जोड़ा जाता है
  3. प्रोजेक्ट को साफ़ करें (हमेशा आवश्यक है कि एंड्रॉइड देव उपकरण कितने अप्रत्याशित हैं)

हमें बताएं कि यह कैसे काम करता है।

+0

आशा के लिए धन्यवाद +1 कि आपने मुझे कुछ क्षणों के लिए दिया था। आपके कामकाज ने मेरे मामले में मदद नहीं की, लेकिन इसके बाद मैंने अपग्रेड किए जाने के बाद पहली बार एक हस्ताक्षरित एपीके निर्यात करने की अनुमति दी! यहां मैंने जो किया है: (1) मैंने विंडोज सिस्टम में सभी अस्थायी फ़ाइलों और कैशों को साफ करने के लिए सीसीलेनर चलाया, (2) फिर मैंने विंडोज़ को रिबूट किया। और यह काम किया! लेकिन मेरी निराशा के लिए, अगली बार जब मैंने निर्यात करने की कोशिश की तो मुझे ** कंसोल संदेशों के साथ 'एप्लिकेशन निर्यात करने में विफल' प्राप्त हुआ! **। अब यह मुझे स्पष्ट है कि एंड्रॉइड देव उपकरण अस्थिर हो गए हैं। अब मैं क्या करू? – an00b

+1

यह काम किया! ** ** बिना 'डोंटवार्न' है। यह पता चला कि मुझे प्रत्येक ईडीआईटी में चरण # 1 और # 2 करने की आवश्यकता है ** प्रत्येक लाइब्रेरी प्रोजेक्ट ** जिस पर मेरा एप्लिकेशन प्रोजेक्ट निर्भर है। वह जादू किया। धन्यवाद! आपने धमाल मचाया!!! – an00b

1

कोशिश ग्रहण

+3

एलओएल। ऐसा लगता है [voodoo] (http://stackoverflow.com/a/8749008/1124861)। शायद ओपी को अपने ग्रहण को अपग्रेड करना चाहिए? उन्होंने अपने ग्रहण संस्करण के बारे में कोई जानकारी नहीं दी। –

+2

@BillTheApe नहीं वूडू। प्रोगार्ड नरक: http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class –

+0

@ बिलपैप मेरा ग्रहण 3.6.2 है। क्या ये एक दिक्कत है? मैं अपने एडीटी प्लगइन को कैसे पुनर्स्थापित करूं? मैंने एंड्रॉइड एसडीके प्रबंधक को निकाल दिया और यह दिखाता है कि 'एंड्रॉइड एसडीके टूल्स' रेव 1 9 और 'एंड्रॉइड एसडीके प्लेटफॉर्म-टूल्स' रेव 11 स्थापित और अद्यतित हैं। मैं उन्हें फिर से स्थापित कैसे करूं? – an00b

2

कैसे अपने त्रुटि लॉग के बारे में में अपने ADT प्लगइन पुनर्स्थापित करने के लिए। विंडो-> दृश्य दिखाएँ-> त्रुटि लॉग। कंसोल आउटपुट से अलग है, त्रुटि कोड 1 यहां दिखाई देता है।

+0

आशा के लिए धन्यवाद +1 कि आपने मुझे कुछ क्षणों के लिए दिया था। त्रुटि लॉग कोई और जानकारी प्रदान नहीं करता है (मूल पोस्ट में स्क्रीनशॉट अपडेट देखें)। – an00b

+1

क्या यह प्रोजेवार्ड बंद होने के साथ ठीक निर्यात करता है? – weston

+0

हां, यह प्रोगुआर्ड बंद होने के साथ ठीक निर्यात करता है। लेकिन जब मैं इसे लॉन्च करता हूं, तो यह तुरंत एप्लिकेशन की गतिविधि कक्षा ('ClassNotFoundException') नहीं ढूंढने में असमर्थ होने के कारण दुर्घटनाग्रस्त हो जाता है। यह अजीब है !!! यह डीबग मोड में ठीक चलता है और यदि एप्लिकेशन की गतिविधि कक्षा वहां नहीं थी, तो इसे संकलित नहीं किया जाना चाहिए था! क्या चल रहा है? क्या नवीनतम और महान एंड्रॉइड देव टूल्स टूटे हैं? – an00b

0

यहाँ कुंजी है कि मुझे

http://android.foxykeep.com/dev/fix-the-conversion-to-dalvik-format-failed-with-error-1-with-adt-14

माना जाता है एडीटी-15 में ठीक किया गया के लिए काम किया था, वैकल्पिक हल

1 है) प्रत्येक X_src तत्व के लिए, सही उस पर क्लिक करें और फिर पथ का निर्माण > पथ बनाने से निकालें।

2) एक पॉपअप खुल जाएगा। सुनिश्चित करें कि "प्रोजेक्ट से फ़ोल्डर को अनलिंक करें" चेक किया गया है और फिर इसे स्वीकार करें।

आप अभी भी लाइब्रेरी कोड में डीबग कर सकते हैं लेकिन आपको उन परियोजनाओं में अपने ब्रेकपॉइंट्स को प्रबंधित करने की आवश्यकता है और फिर कक्षा फ़ाइल टैब में कोड के माध्यम से कदम उठाना होगा।