2016-08-08 2 views
0

나는 안드로이드 라이브러리를 개발 중이다. 내 클라이언트 (응용 프로그램 개발자)가 Jar 파일을 적용하면 오류 메시지가 표시됩니다. 빌드가 정상적으로 작동하지만 Android Studio에서 (playButton) 앱을 실행하면 문제가 발생합니다.
아래와 같은 오류 메시지가 표시됩니다.
': app : transformClassesWithMultidexlistForDebug'작업을 실행하지 못했습니다.Multidex transformClassesWithMultidexlistForDebug 실패

때 java.io.IOException : 읽을 수 없습니다 [/ 사용자/VSSCP_KYOSEON/문서/작업/안드로이드/A/B/응용 프로그램/빌드/중간/변환/jarMerging/디버그/항아리/1/1 층/combined.jar] (스택 프레임지도에서 처리 할 수 ​​없습니다 클래스 [COM/A/B/VSFunctionActivity.class] (알 수없는 확인 유형 [88]))

이 내 응용 프로그램 Gradle을 코드입니다 :

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion '24.0.1' 

defaultConfig { 
    applicationId "com.a.b" 
    minSdkVersion 18 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    multiDexEnabled true 
} 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_6 
    targetCompatibility JavaVersion.VERSION_1_6 
} 

dexOptions { 
    javaMaxHeapSize "4g" //specify the heap size for the dex process 
} 
} 

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile project(':ChartLib') 
compile 'com.google.android.gms:play-services-fitness:8.4.0' 
compile 'com.android.support:multidex:1.0.1' 
compile files('libs/vs_sat_sdk.jar') 

}

My Jar 파일은 vs_sat_sdk.jar입니다. 그것은 proguard에 적용됩니다.
Android Multidex 가이드를 이미 적용했습니다. https://developer.android.com/tools/building/multidex.html하지만 실행에 실패했습니다.

정상적인 작동 상황입니다.
1. My jar 파일에 proguard를 적용합니다. minSdkVersion이 21 이상이면 정상 동작입니다. 그러나 minSdkVersion이 21 미만이면 실패로 표시됩니다.
2. 내 jar 파일이 proguard에 적용되지 않으면 minSdkVersion에 관계없이 정상적인 작동입니다.

귀하의 솔루션에 대해 알려주십시오.

감사합니다.

답변

0

아마도 Jar 파일이 StackMapFrame 속성을 올바르게 업데이트하지 않는 도구에 의해 처리되었을 수 있습니다.

사실, StackMapFrame 속성은 Android 개발에 필요하지 않으므로 ProGuard에서 생성하지 않도록하여 문제를 해결할 수 있습니다. 라이브러리에 ProGuard를 적용 할 때 다음을 구성에 추가하십시오.

-dontpreverify 
+0

감사합니다. 나는 이미 -dontpreverify를 설정했다. 하지만 같은 문제가 발생합니다. 이 문제가 해결되었습니다. -dontptimize를 설정하면 작업이 정상입니다. –