我有一个SDK,我已经开发了许多小型测试应用程序。这些都是独立的Android应用程序,它们有以下共同点:
1)所有依赖项都是相同的(即我的sdk / android sdk / etc的相同版本。)
2)它们共享一个共同的顶级build.gradle文件(当前为空):
3)他们是构建,测试等。阶段都是相同的。
我希望所有项目都作为Android Studio中的模块存在,我希望它们在顶级build.gradle中尽可能多地共享配置,以便我可以更新一个文件并使一切正常工作。
当我将以下内容添加到我的顶级build.gradle:
时subprojects {
apply plugin: "android"
repositories {
mavenCentral()
maven {
url "my.repo.com"
credentials {
username "user"
password "pass"
}
}
dependencies {
compile 'com.my.library:my-library:0.0.1'
// compile 'com.google.android.gms:play-services:+'
}
}
}
我得到了
'could not find property 'plugin' on ':App1'
其中':App1'
是settings.gradle中的第一个应用,并且构建失败。
我的目标是在此顶级文件中获取上述块和许多其他适用元素。
编辑:我已经修复了语法错误(我错过了:),但是这导致了“找不到id'android'的插件。通常这可以通过添加来解决:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.4'
}
}
allprojects {
repositories {
mavenCentral()
}
}
但在这种情况下,这并没有解决它。
编辑2:
最终形式:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.4'
}
}
allprojects {
repositories {
mavenCentral()
}
}
subprojects {
apply plugin: "android"
repositories {
mavenCentral()
maven {
url "my.repo.com"
credentials {
username "user"
password "pass"
}
}
dependencies {
compile 'com.my.library:my-library:0.0.1'
// compile 'com.google.android.gms:play-services:+'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
lintOptions {
abortOnError false
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
}
}
这似乎工作正常。
答案 0 :(得分:4)
这是一个简单的语法错误。 apply()
方法以Map
为参数。不要忘记冒号(:
)。
apply plugin: 'android'