버그

2014-09-06 3 views
0

나는 모든 것이 디버그 모드에서 잘 작동 버그

final public class BatchOperation { 
private final String TAG = "BatchOperation"; 
private final ContentResolver mResolver; 
// List for storing the batch mOperations 
private final ArrayList<ContentProviderOperation> mOperations; 

public BatchOperation(Context context, ContentResolver resolver) { 
    mResolver = resolver; 
    mOperations = new ArrayList<ContentProviderOperation>(); 
} 

public int size() { 
    return mOperations.size(); 
} 

public void add(ContentProviderOperation cpo) { 
    mOperations.add(cpo); 
} 

public Uri execute() { 
    Uri result = null; 

    if (mOperations.size() == 0) { 
     return result; 
    } 
    // Apply the mOperations to the content provider 
    try { 
     ContentProviderResult[] results = mResolver.applyBatch(
       ContactsContract.AUTHORITY, mOperations); 
     if ((results != null) && (results.length > 0)) 
      result = results[0].uri; 
    } catch (final OperationApplicationException e1) { 
     Log.e(TAG, "storing contact data failed", e1); 
    } catch (final RemoteException e2) { 
     Log.e(TAG, "storing contact data failed", e2); 
    } 
    mOperations.clear(); 
    return result; 
} 

아래 같은 연락 앱 사용하여 일괄 작업을했다하지만 난 릴리스 모드에 내 응용 프로그램에 서명 한 후 나는이 문제에 직면

이 라인에서
E/BatchOperation﹕ storing contact data failed 
java.lang.ClassCastException: a cannot be cast to android.content.ContentProviderOperation 
     at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:479) 
     at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:227) 
     at android.content.ContentResolver.applyBatch(ContentResolver.java:951) 

ContentProviderResult[] results = mResolver.applyBatch(ContactsContract.AUTHORITY, 
       mOperations); 
여기에

답변

1

난 항상 내 동료 개발자 ...에 질문을 일어날 사물의 종류는 Proguard와를 사용하는 경우, 내 난독 파일 당신의 독서에 대한

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-verbose 
-dump class_files.txt 
-printseeds seeds.txt 
-printusage unused.txt 
-printmapping mapping.txt 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
-allowaccessmodification 
-keepattributes *Annotation* 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
-repackageclasses '' 


-dontwarn com.actionbarsherlock.** 
-dontwarn org.apache.** 
-dontwarn com.commonsware.** 
-dontwarn freemarker.** 
-dontwarn ezvcard.** 

-keep class org.apache.** { *; } 
-keep class android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep class ezvcard.** { *; } 
-keep class com.fasterxml.jackson.** { *; } 

감사입니까? 테스트를 위해 Proguard를 비활성화하고 릴리스 모드로 컴파일 해보십시오. 또한 또한 콘텐츠 제공자가

-keep public class * extends android.content.ContentProvider 
+0

예, proguard를 다시 사용하지 않으면 모든 것이 정상입니다. –

+0

최적화 옵션없이 시도해보십시오. 나는 더 이상 사용하지 않는다. –

+0

응답 해 주셔서 감사하지만 문제는 여전히 발생합니다. ( –

0

아 같은 것을 함께 보관되고 있다는 것을 확인

-dontoptimize 

를 사용하여 최적화를 제거, 그 Proguard와 난독 android.content.ContentProviderOperation; 클래스를 찾을 수 있습니다. 그냥 덧붙인다 -keep class android.content.** { *; } 다 잘 작동 =)