0

나는 cms-app를 가지고 있습니다. 이 응용 프로그램에 대한 강판 200 모듈이 있습니다. 모든 모듈을로드하면 CPU 100 %. PC가 매우 느립니다. settings.gradle을 변경하고 필요한 모듈을로드하십시오.자동 설정을 변경하는 방법 첸지가 변종의 맛을 내었을 때 변경하십시오.

빌드 변형을 변경하고 싶습니다.

샘플 gradle.

android { 
defaultConfig { 
    applicationId "org.myorg.cmsapp" 
    minSdkVersion 16 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    manifestPlaceholders = [ MAPS_API_KEY: "123123123123123" ] 
} 
productFlavors { 
    appA { 
     applicationId "org.myorg.cmsapp" 
     versionName "1.32" 
     versionCode 22 
     manifestPlaceholders = [ MAPS_API_KEY: "12312312" ] 
    } 
    appB { 
     applicationId "ir.myweb.aaa" 
     versionName "1.3" 
     versionCode 3 
     manifestPlaceholders = [ MAPS_API_KEY: "12312312" ] 
    } 
    appC { 
     applicationId "com.mytw.bbb" 
     versionName "1.12" 
     versionCode 18 
     manifestPlaceholders = [ MAPS_API_KEY: "12312312" ] 
    } 
} 
signingConfigs { 
    appA { 
     storeFile file('../keys/appA.jks') 
     keyAlias "appA" 
     storePassword "app123!!#A" 
     keyPassword "[email protected]#A" 
    } 
    appB { 
     storeFile file('../keys/appB.jks') 
     keyAlias "appB" 
     storePassword "appB#[email protected]#12312" 
     keyPassword "ap!#[email protected]" 
    } 
    appC { 
     storeFile file('../keys/appC.jks') 
     keyAlias "appC" 
     storePassword "[email protected]#appC\$" 
     keyPassword "[email protected]#appC\$" 
    } 
} 
buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     productFlavors.appA.signingConfig signingConfigs.appA 
     productFlavors.appB.signingConfig signingConfigs.appB 
     productFlavors.appC.signingConfig signingConfigs.appC 
    } 
} 
} 


dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 

    appACompile project(path: ':librarysplashscreenone') 
    appACompile project(path: ':libraryhomepageeight', configuration: 'appARelease') 
    appACompile project(path: ':librarycmspagestest', configuration: 'appARelease') 

// appBtCompile project(path: ':librarysplashscreentwo') 
// appBtCompile project(path: ':libraryhomepageeight', configuration: 'appBtRelease') 
// appBtCompile project(path: ':librarycmspagesdefault', configuration: 'appBtRelease') 

// appCCompile project(path: ':librarysplashscreenthree') 
// appCCompile project(path: ':libraryhomepagesix', configuration: 'appCRelease') 
// appCCompile project(path: ':librarycmspagesdefault', configuration: 'appCRelease') 
} 

저는이 작업을 추가합니다. 빌드 변형을 변경하면 settings.gradle 앱이 기본 설정 .gradle로 바뀝니다.

task chackLoadedModule(type:Exec) { 
println " change ... " 
workingDir '../all_module' 

commandLine 'cmd', '/c', 'generator.bat' , getCurrentFlavor() 

    standardOutput = new ByteArrayOutputStream() 

ext.output = { 
    return standardOutput.toString() 
} 
} 

dependencies { 
    preBuild.dependsOn chackLoadedModule 
    ..... 

이 해결책은 좋지 않습니다. 빌드 변형을 변경하면 종속성을 주석 처리하고 주석 처리해야합니다. 몇시에 작동하지 않습니다.

답변

0

해결 된 종속성 문제입니다. 하지만 문제로드 모듈이 있습니다.

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 

String currentFlavors = getCurrentFlavor(); 

if (currentFlavors == "appA") { 
    appACompile project(path: ':librarysplashscreenone') 
    appACompile project(path: ':libraryhomepageeight', configuration: 'appARelease') 
    appACompile project(path: ':librarycmspagestest', configuration: 'appARelease') 
} 

if (currentFlavors == "appB") { 
    appBtCompile project(path: ':librarysplashscreentwo') 
    appBtCompile project(path: ':libraryhomepageeight', configuration: 'appBtRelease') 
    appBtCompile project(path: ':librarycmspagesdefault', configuration: 'appBtRelease') 
} 

if (currentFlavors == "appC") { 
    appCCompile project(path: ':librarysplashscreenthree') 
    appCCompile project(path: ':libraryhomepagesix', configuration: 'appCRelease') 
    appCCompile project(path: ':librarycmspagesdefault', configuration: 'appCRelease') 
} 
} 

def getCurrentFlavor() { 
    Gradle gradle = getGradle() 
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString() 
Pattern pattern; 

if(tskReqStr.contains("assemble")) 
    pattern = Pattern.compile("assemble(\\w+)(Release|Debug)") 
else 
    pattern = Pattern.compile("generate(\\w+)(Release|Debug)") 

Matcher matcher = pattern.matcher(tskReqStr) 

if(matcher.find()) 
    return matcher.group(1).toLowerCase() 
else 
{ 
    println "NO MATCH FOUND" 
    return ""; 
} 
}