마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Over 65K Methods 가 넘어갔을때 생기는 문제로 도움이 필요합니다.ㅠ

0 추천

안녕하세요 안드로이드 개발을 위해 이클립스를 사용하다 스튜디오로 넘어온지 얼마안된 새내기 입니다.

역시 넘어오게 된이유도 멀티덱스때문인데요 프로젝트 내에서 약 65000개의 메서드 이상을 사용하게 되면

멀티덱스 제한이 걸리게 되는데요 이부분을 해결하기 위해 여러사이트를 돌아다니며 검색을 하고 처리하기위해

적용해보았으나 결과가 원하는대로 나오지 않아서 도움을 요청드립니다.. ㅠ

 

현상 : Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_67\bin\java.exe'' finished with non-zero exit value 1

 

일단, 대표적으로 구글측에서 제공한 스튜디오용 해결법은

http://developer.android.com/intl/ko/tools/building/multidex.html  이곳에 있습니다.

이클립스에서 적용하려니 이것저것 번거로운게 많더라구요. 그래서 스튜디오로 넘어오게 되었구요

샘플소스를 만들어서 테스트중인데 잘풀리지가 않습니다.

저희 build.gradle 내용은

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "startups.overlib.com.myapplication"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile files('libs/adlibr.4.2.5.0.jar')
    compile files('libs/AdMixer_1.3.9.jar')
    compile files('libs/android-async-http-1.4.6.jar')
    compile files('libs/androidasync.jar')
    compile files('libs/asmack-android-8-4.0.3.jar')
    compile files('libs/AudienceNetwork.jar')
    compile files('libs/CaulySDK-3.3.30.jar')
    compile files('libs/coderush-webapps-base.jar')
    compile files('libs/image-chooser-library.jar')
    compile files('libs/infopush_nasv4_v1.04.jar')
    compile files('libs/InMobi-4.5.3.jar')
    compile files('libs/json_simple-1.1.jar')
    compile files('libs/libNASWall_20150109.jar')
    compile files('libs/nexus-configuration-1.9.2.4.jar')
    compile files('libs/Optima_A_SDK-1.0.4.jar')
    compile files('libs/RemoN_SDK_1.3.1.jar')
    compile files('libs/TadSDK_3.10.1.jar')
    compile files('libs/tnkad-sdk.jar')
    compile files('libs/tpmn_adsdk_v1.5.8.jar')
    compile files('libs/TTPLib_normal_v2.5.7.jar')
    compile files('libs/universal-image-loader-1.9.3.jar')
    compile files('libs/UPlusADLib.jar')
    compile files('libs/volley-1.0.12.jar')
    compile files('libs/zcommon-3.5.2.jar')
}

입니다.

매니페스트에도 

android:name="android.support.multidex.MultiDexApplication"

를 추가했구요..

 

 multiDexEnabled true
    compile 'com.android.support:multidex:1.0.1'
android:name="android.support.multidex.MultiDexApplication"

위의 3가지 부분만 수정하였습니다.

 

그외에 다른 부분을 수정해야 하는 곳이 있을까요??

 

도움이 절실합니다. ㅠㅠ

 

 

 

 

마루핑 (120 포인트) 님이 2015년 12월 31일 질문

1개의 답변

0 추천

딜빅가상머신이 문제여서 그렇다는데..

여튼메소드가 65536가 넘어가면 이런 문제가 발생하드라구요 저도 한참 고생했습니다.

 

자신의 프로젝트에 있는 bulid.gradle 에

ㅇ안드로이드 buildToolsVersion 21 이상으로 해주시구요.

 

defaultConfig 안에

multiDexEnable true

해주시고

dependencies 란 안에

compile 'com.android.support:multidex:1.0.0'

 

추가해주시며

실행되는 메인엑티비티 oncreate 안에

MultiDex.install(타겟컨텍스트);

 

해주심 됩니당

 

힙메모리가 모자랄수도있는데

gradle 안에

 

dexOption{

   javaMaxHeapSize "원하는용량KBorG"

}

넣어주심 강제로 힙사이즈 늘립니당

 

 

출처 - 예전 제 답변 복사

익명사용자 님이 2015년 12월 31일 답변
2015년 12월 31일 수정
진심으로 감사드립니다..
위의 3개 외에 추가로
   dexOptions{
       javaMaxHeapSize = "4g"

   }
이 부분을 추가했더니 작동이 됩니다.

감사드립니다ㅠ
도움이 되셨다니 다행임당~
근데 빌드속도가 느려진단게 함정 ㅜㅜ
이건 어쩔 수 없이 안고 가야하나보네요 ㅜㅜ
...