나는, 몇 가지 라이브러리 (코어와 모듈)를 만드는 핵심 라이브러리 모듈에서 응용 프로그램과 호출 방법에 모든 라이브러리를 추가하고 싶습니다. 모든 모듈은 선택적이어야합니다. 예를 들어, 나는 그것을보고 같이모듈을 사용하여 라이브러리를 만드는 방법은 무엇입니까?
응용 프로그램 build.gradle
: 모든 모듈에서
compile('core-library:[email protected]')
compile('module1-library:[email protected]')
compile('module2-library:[email protected]')
compile('module3-library:[email protected]')
는 클래스와 같은 이름의 메소드를 정의 :
for(ModuleClass c : getAllModules()) {
Log.d("tag", "Result: " + c.moduleMethod1() + "/" + c.moduleMethod2();
}
: 핵심 라이브러리에서
public class ModuleClass {
public int moduleMethod1() {
// Do something and return result
return 1;
}
public String moduleMethod2() {
return "Some String";
}
}
그건 그냥 의사 코드입니다. 어떻게 구현할 것인가?
업데이트 : 코어 모듈 build.gradle
는 :
apply plugin: 'com.android.library'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
minSdkVersion 9
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
buildConfigField "String[]", "KNOWN_MODULES", "{" +
"\"module1\"," +
"\"module2\"" +
"}"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compileOnly project(':module1')
compileOnly project(':module2')
testCompile 'junit:junit:4.12'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
감사합니다. 'compileOnly'를 모듈에 사용할 수 있습니까? 코드'compileOnly 프로젝트 ('mymodule1') : 유형의 객체에 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler'''오류를 생성 인수를위한 방법 compileOnly() [ 'mymodule1'프로젝트]를 찾을 수 없습니다 . 또는 모든 모듈에 대해 매번 수동으로 aar 파일을 컴파일해야합니까? 전체 build.gradle가'compileOnly'를 추가해야'java' 플러그인 업데이트 된 질문을 참조하십시오 – BArtWell
. 코어 모듈에 전체 build.gradle을 추가합니다. – JBirdVegas
을 sourceset 파일보기 – BArtWell