Kri*_*her 3 android build gradle android-build android-gradle-plugin
我正在尝试在Android Studio中编译AndroidCaldavSyncAdapter项目.它甚至工作过,但升级后的Gradle插件版本,从com.android.tools.build:gradle:1.5.0到com.android.tools.build:gradle:2.3.0其停止工作.现在我收到这个错误:
Error:(34, 0) A problem occurred evaluating project ':ACalDAV'.
Run Code Online (Sandbox Code Playgroud)
并
cannot resolve symbol 'builder'在
import com.android.builder.core.DefaultManifestParser
Run Code Online (Sandbox Code Playgroud)
这是build.grade文件:
import com.android.builder.core.DefaultManifestParser
apply plugin: 'com.android.application'
apply from: '../config/quality/quality.gradle'
android {
compileSdkVersion 22
buildToolsVersion '25.0.3'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
defaultConfig {
applicationId "de.we.acaldav"
minSdkVersion 14
targetSdkVersion 20
multiDexEnabled true
def manifestParser = new DefaultManifestParser()
versionName = manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
}
signingConfigs {
//noinspection GroovyMissingReturnStatement
release {
if (project.hasProperty('myKeyAlias') &&
project.hasProperty('myStoreFile') &&
project.hasProperty('myStorePassword') &&
project.hasProperty('myKeyPassword')) {
keyAlias = myKeyAlias
storeFile = file(myStoreFile)
storePassword = myStorePassword
keyPassword = myKeyPassword
}
}
}
buildTypes {
release {
minifyEnabled true
signingConfig signingConfigs.release
proguardFile 'proguard-project.txt'
}
debug {
//noinspection GroovyAssignabilityCheck
applicationIdSuffix = ".debug"
//noinspection GroovyAssignabilityCheck
versionNameSuffix = "-DEBUG"
}
//noinspection GroovyAssignabilityCheck
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile 'com.android.support:support-v4:22.0.0'
compile 'backport-util-concurrent:backport-util-concurrent:3.1'
compile 'commons-codec:commons-codec:1.10'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'org.mnode.ical4j:ical4j:1.0.6'
repositories {
mavenCentral()
}
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过无效的缓存,但这并没有改变任何东西.
这种情况发生了,因为签名DefaultManifestParser已经改变了:现在它期望manifestFile作为一个论点.
在Android Gradle Plugin 1.5.0版本中,没有明确提供构造函数DefaultManifestParser,这意味着有一个空构造函数.这导致表达式def manifestParser = new DefaultManifestParser()正常执行.
在Android Gradle Plugin 2.2.0版中,构造函数的签名已更改为以下内容:
public DefaultManifestParser(@NonNull File manifestFile)
Run Code Online (Sandbox Code Playgroud)
这意味着,build.gradle应该执行以下文件更改:
def manifestParser = new DefaultManifestParser(android.sourceSets.main.manifest.srcFile)
versionName = manifestParser.getVersionName()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
902 次 |
| 最近记录: |