2016-10-14 2 views
1

그래버 버전을 수정하는 방법에 대한 여러 가지 좋은 제안이 있지만 그 중 일부는 구형이거나 제안 된 경로를 찾지 못했습니다. 하나의 솔루션은 나를 위해 일했다 프로젝트> 프로젝트 구조> 프로젝트> gradle 버전입니다.작업 래퍼 기능이 작동하지 않는 이유는 무엇입니까

여기서 지원되는 버전으로 변경하고 프로젝트를 성공적으로 빌드 할 수 있습니다.

자바 스크립트 코드의 작은 오류로 인해 변경되었습니다. Ionic build android, 여기 뭔가 잘못되었습니다. Minimum supprted Gradle version is 2.14.1. Current version is 2.13..

그러나 프로젝트/플랫폼/안드로이드/build.gradle

task wrapper(type: Wrapper){ gradleVersion = '2.14.1' }

link에서의

, 그것은이 방법이 Gradle을 래퍼를 설정할 것을 제안합니다.

그래서 내가 대신이이 distributionUrl=http\://services.gradle.org/distributions/gradle-2.13-all.zip을 가지고 무엇을, distributionUrl=http\://services.gradle.org/distributions/gradle-2.14.1-all.zip을 가지고 프로젝트/플랫폼/안드로이드/Gradle을/래퍼/gradle-wrapper.properties에 기대하고있다. 각 구축 후에는 gradle-2.13-all.zip로 되돌릴 때문에

이 파일 프로젝트/플랫폼/안드로이드/Gradle을/래퍼/gradle-wrapper.properties에 직접 변경을 할 수 없습니다.

여기에 무슨 일이 일어나고 있습니까? distributionUrl=http\://services.gradle.org/distributions/gradle-2.13-all.zip을 계속 변경하는 이유를 설명하는 항목을 찾을 수 없습니다. 아무도 친절하게 설명해 주시겠습니까? 내가 놓친 뭔가 어쩌면 매우 어리 석다. 고맙습니다. 내가

"Gradle Version 2.10 is required." Error

How to update gradle in android studio

ionic build android error when download gradle

Gradle을 코드를 보았다

링크

apply plugin: 'com.android.application' 

buildscript { 
    repositories { 
     mavenCentral() 
     jcenter() 
    } 

    // Switch the Android Gradle plugin version requirement depending on the 
    // installed version of Gradle. This dependency is documented at 
    // http://tools.android.com/tech-docs/new-build-system/version-compatibility 
    // and https://issues.apache.org/jira/browse/CB-8143 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.1' 
    } 
} 

// Allow plugins to declare Maven dependencies via build-extras.gradle. 
allprojects { 
    repositories { 
     mavenCentral(); 
     jcenter(); 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.14.1' 
} 

// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties. 
// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html 
ext { 
    apply from: 'CordovaLib/cordova.gradle' 
    // The value for android.compileSdkVersion. 
    if (!project.hasProperty('cdvCompileSdkVersion')) { 
     cdvCompileSdkVersion = null; 
    } 
    // The value for android.buildToolsVersion. 
    if (!project.hasProperty('cdvBuildToolsVersion')) { 
     cdvBuildToolsVersion = null; 
    } 
    // Sets the versionCode to the given value. 
    if (!project.hasProperty('cdvVersionCode')) { 
     cdvVersionCode = null 
    } 
    // Sets the minSdkVersion to the given value. 
    if (!project.hasProperty('cdvMinSdkVersion')) { 
     cdvMinSdkVersion = null 
    } 
    // Whether to build architecture-specific APKs. 
    if (!project.hasProperty('cdvBuildMultipleApks')) { 
     cdvBuildMultipleApks = null 
    } 
    // .properties files to use for release signing. 
    if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) { 
     cdvReleaseSigningPropertiesFile = null 
    } 
    // .properties files to use for debug signing. 
    if (!project.hasProperty('cdvDebugSigningPropertiesFile')) { 
     cdvDebugSigningPropertiesFile = null 
    } 
    // Set by build.js script. 
    if (!project.hasProperty('cdvBuildArch')) { 
     cdvBuildArch = null 
    } 

    // Plugin gradle extensions can append to this to have code run at the end. 
    cdvPluginPostBuildExtras = [] 
} 

// PLUGIN GRADLE EXTENSIONS START 
apply from: "cordova-plugin-badge/simplelogin777664-badge.gradle" 
// PLUGIN GRADLE EXTENSIONS END 

def hasBuildExtras = file('build-extras.gradle').exists() 
if (hasBuildExtras) { 
    apply from: 'build-extras.gradle' 
} 

// Set property defaults after extension .gradle files. 
if (ext.cdvCompileSdkVersion == null) { 
    ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget() 
} 
if (ext.cdvBuildToolsVersion == null) { 
    ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools() 
} 
if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) { 
    ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties' 
} 
if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) { 
    ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties' 
} 

// Cast to appropriate types. 
ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean(); 
ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion) 
ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode) 

def computeBuildTargetName(debugBuild) { 
    def ret = 'assemble' 
    if (cdvBuildMultipleApks && cdvBuildArch) { 
     def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch 
     ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1); 
    } 
    return ret + (debugBuild ? 'Debug' : 'Release') 
} 

// Make cdvBuild a task that depends on the debug/arch-sepecific task. 
task cdvBuildDebug 
cdvBuildDebug.dependsOn { 
    return computeBuildTargetName(true) 
} 

task cdvBuildRelease 
cdvBuildRelease.dependsOn { 
    return computeBuildTargetName(false) 
} 

task cdvPrintProps << { 
    println('cdvCompileSdkVersion=' + cdvCompileSdkVersion) 
    println('cdvBuildToolsVersion=' + cdvBuildToolsVersion) 
    println('cdvVersionCode=' + cdvVersionCode) 
    println('cdvMinSdkVersion=' + cdvMinSdkVersion) 
    println('cdvBuildMultipleApks=' + cdvBuildMultipleApks) 
    println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile) 
    println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile) 
    println('cdvBuildArch=' + cdvBuildArch) 
    println('computedVersionCode=' + android.defaultConfig.versionCode) 
    android.productFlavors.each { flavor -> 
     println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode) 
    } 
} 

android { 
    sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     resources.srcDirs = ['src'] 
     aidl.srcDirs = ['src'] 
     renderscript.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
     jniLibs.srcDirs = ['libs'] 
    } 
    } 
    defaultConfig { 
    if (cdvMinSdkVersion != null) { 
     minSdkVersion cdvMinSdkVersion 
    } 
    minSdkVersion 16 
    targetSdkVersion 23 
    } 
    lintOptions { 
    abortOnError false; 
    } 
    compileSdkVersion 23 
    buildToolsVersion '21.1.2' 
    if (Boolean.valueOf(cdvBuildMultipleApks)) { 
    productFlavors { 
     armv7 { 
     versionCode defaultConfig.versionCode * 10 + 2 
     ndk { 
      abiFilters "armeabi-v7a", "" 
     } 
     } 
     x86 { 
     versionCode defaultConfig.versionCode * 10 + 4 
     ndk { 
      abiFilters "x86", "" 
     } 
     } 
     all { 
     ndk { 
      abiFilters "all", "" 
     } 
     } 
    } 
    } 
    /* 

    ELSE NOTHING! DON'T MESS WITH THE VERSION CODE IF YOU DON'T HAVE TO! 

    else if (!cdvVersionCode) { 
    def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion") 
    // Vary versionCode by the two most common API levels: 
    // 14 is ICS, which is the lowest API level for many apps. 
    // 20 is Lollipop, which is the lowest API level for the updatable system webview. 
    if (minSdkVersion >= 20) { 
     defaultConfig.versionCode += 9 
    } else if (minSdkVersion >= 14) { 
     defaultConfig.versionCode += 8 
    } 
    } 
    */ 
    compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
    } 
    if (cdvReleaseSigningPropertiesFile) { 
    signingConfigs { 
     release { 
     // These must be set or Gradle will complain (even if they are overridden). 
     keyAlias = "" 
     keyPassword = "__unset" 
     // And these must be set to non-empty in order to have the signing step added to the task graph. 
     storeFile = null 
     storePassword = "__unset" 
     } 
    } 
    buildTypes { 
     release { 
     signingConfig signingConfigs.release 
     } 
    } 
    addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release) 
    } 
    if (cdvDebugSigningPropertiesFile) { 
    addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug) 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: '*.jar', dir: 'libs') 
    // SUB-PROJECT DEPENDENCIES START 
    debugCompile project(path: "CordovaLib", configuration: "debug") 
    releaseCompile project(path: "CordovaLib", configuration: "release") 
    compile "com.android.support:support-v4:+" 
    // SUB-PROJECT DEPENDENCIES END 
} 

def promptForReleaseKeyPassword() { 
    if (!cdvReleaseSigningPropertiesFile) { 
     return; 
    } 
    if ('__unset'.equals(android.signingConfigs.release.storePassword)) { 
     android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ') 
    } 
    if ('__unset'.equals(android.signingConfigs.release.keyPassword)) { 
     android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: '); 
    } 
} 

gradle.taskGraph.whenReady { taskGraph -> 
    taskGraph.getAllTasks().each() { task -> 
     if (task.name == 'validateReleaseSigning') { 
      promptForReleaseKeyPassword() 
     } 
    } 
} 

def addSigningProps(propsFilePath, signingConfig) { 
    def propsFile = file(propsFilePath) 
    def props = new Properties() 
    propsFile.withReader { reader -> 
     props.load(reader) 
    } 

    def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile')) 
    if (!storeFile.isAbsolute()) { 
     storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile()) 
    } 
    if (!storeFile.exists()) { 
     throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath()) 
    } 
    signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias') 
    signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword)) 
    signingConfig.storeFile = storeFile 
    signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword)) 
    def storeType = props.get('storeType', props.get('key.store.type', '')) 
    if (!storeType) { 
     def filename = storeFile.getName().toLowerCase(); 
     if (filename.endsWith('.p12') || filename.endsWith('.pfx')) { 
      storeType = 'pkcs12' 
     } else { 
      storeType = signingConfig.storeType // "jks" 
     } 
    } 
    signingConfig.storeType = storeType 
} 

for (def func : cdvPluginPostBuildExtras) { 
    func() 
} 

// This can be defined within build-extras.gradle as: 
//  ext.postBuildExtras = { ... code here ... } 
if (hasProperty('postBuildExtras')) { 
    postBuildExtras() 
} 

업데이트 특정 래퍼 받는다는 아래에 존재하지 않고, 서브 build.gradle2.14.1.prom2.14.1.jar를 다운로드하는 데 사용하기 때문에 오류가 발생 gradlew 래퍼

'. This link will explain it.

찾을 수 문제

[project name]/platforms/android/cordova/lib/builders/GradleBuilder.js 대신 ~/android/lib/GradleBuilder.js에 때문에이 라인이다 2.13-all.zip로 다시 변경에 대한 var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-2.13-all.zip';을 유지하는 이유 문제. (Line 164)

+0

아무 영향을 미치지 않습니다,하지만 당신은 그냥이 terser 구문을 수행 할 수 있습니다 : { 이 gradleVersion = '2.14.1'}' – weston

+0

감사 @weston하지만, 어떻게 든 아직도 날을 제공'래퍼 같은 오류 –

+1

그래, 나는 "아무 것도 영향을 미치지 않는다"고 말 했어요. – weston

답변

0

문제를 수행 한 후 2.14.1 말을해야하기 때문에이 라인의 [project name]/platforms/android/cordova/lib/builders/GradleBuilder.js 대신 ~/android/lib/GradleBuilder.js에서 var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-2.13-all.zip';입니다. (라인 164)

2

gradle이 gradle-wrapper.properties 파일을 업데이트하는 이유가 확실하지 않습니다. 그러나 wrapper 작업이 작동하는 방식은 변경할 때 호출해야한다는 의미이므로 다음 명령을 시도하십시오.

project/platforms/android/에서 :

  • ./gradlew wrapper - gradlew은 이미 어딘가에 당신의 컴퓨터에 캐시되지 않은 경우는 최신 버전을 다운로드 랩퍼를 사용하기 때문에이 지정된 버전
  • ./gradlew --version에 래퍼를 업데이트합니다. 상단에 그것이 2.13-all.zip로 다시 변경에 계속 왜
+0

안녕하세요 @ kiskae, 그냥 내가 당신의 제안을 올바르게 이해하는지 확인하고 싶습니다. 나는 project/platforms/android /'에서 명령 프롬프트를 사용하고이 명령을 사용했다. 'gradlew --version'을 사용하면'Gradle 2.13'을 리턴하고'gradlew'를 사용하면 minimum version error로 실패합니다. 명령 프롬프트에서'. /'를 사용할 수 없습니다. –

+0

'./gradlew'을 사용할 수없는 이유는 무엇입니까? 너라면 어떻게 될까? – weston

+0

죄송합니다. 작동하지 않습니다. 이 메시지는 사용하려고하면 얻을 수 있습니다. 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. –

관련 문제