2015-01-07 5 views
2

Android 빌드 시스템으로 개미에서 그라디언트로 전환하려고합니다. 내가 해결할 방법을 알 수없는 한 가지 문제는 빌드 유형별로 다른 설정 파일을 사용한다는 것입니다.각 Android Studio Gradle 빌드 유형별로 다른 설정 파일 복사

프로젝트 루트에는 config 폴더가 있는데 여기에는 디버그 용 파일과 릴리스 빌드 용 파일이 있습니다. 프로젝트를 빌드 할 때 해당 파일을 자원 폴더에 복사해야합니다.

간체 build.gradle : 나는

def configFile = 'XXX' 
task copyConfigFileTask(type: Copy) { 
    println "-> using config file $configFile" 
    from 'config/$configFile' 
    into 'res/values' 
    rename { 
     fileName -> 'config.xml' 
    } 
    outputs.upToDateWhen { 
     false 
    } 
} 

assembleDebug.dependsOn { 
    copyConfigFileTask { configFile = 'config_release.xml' } 
    copyConfigFileTask.execute() 
} 

같은 다른 일을 시도하지만 정말 작동하지 않습니다

android { 
    buildTypes { 
     debug { 
      minifyEnabled false 
      // copy config/config_debug.xml to res/values/config.xml 
     } 
     release { 
      minifyEnabled true 
      ... 
      // copy config/config_release.xml to res/values/config.xml 
     } 
    } 

    ... 
} 

. 그렇게 간단하고 일반적인 임무가 Gradle과 너무 복잡하다고 나는 상상할 수 없습니다.

도움을 주시면 감사하겠습니다.

답변

2

1 단계 : 디버그 버전을 src/debug/res/values/config.xml에 넣습니다.

2 단계 : 출시 버전을 src/release/res/values/config.xml에 넣으십시오.

3 단계 : 맥주.

디버그 빌드는 파일의 debug 버전을 가져옵니다. 릴리스 빌드는 파일의 release 버전을 가져옵니다. 불평, 호들갑.

+1

또는 모든 비 릴리스 버전의 기본값으로'src/main/res/values ​​/ config.xml'의 디버그 버전을 사용하십시오. – ianhanniballake

+0

@ianhanniballake : 예, 아마도 그렇게 설정할 수도 있지만, OP의 원래 설정을보다 면밀히 비추고 싶었습니다. – CommonsWare

+0

나는 이클립스에서 프로젝트를 가져 왔으므로 나는 아직도 그 구조를 가지고있다. 나는 sourceSets {main {res.srcDirs = [ 'res'] ... '로'build.gradle'에서 자원 디렉토리를 정의합니다. 나는 단지'res/release/values ​​/ config.xml'에 릴리스 구성을 추가하려고 시도했지만, 작동하지 않는 것 같습니다. 전체 프로젝트 구조를 변경하지 않고이를 수행 할 수있는 방법이 있습니까? – SimonSays