cordova config.xml中的版本号出现Gradle抛出错误



我的ion/codova项目的config.xml文件有以下设置

android版本代码="201504231751"ios CFBundleVersion="201504231752">

当我尝试使用"cordova build android"为android构建时,gradle给了我一个错误,说:

失败:生成失败,出现异常。*其中:脚本"E:\Workspaces\xxx\xxxx\platforms\android\CordovaLib\cordova.gradle"行:128*哪里出了问题:评估根项目"android"时出现问题。

对于输入字符串:"201504231750"*尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

\CordovaLib\cordova.gradle上的第128行是ParseInt。我的假设是字符串不能转换成整数,因此问题就来了。

当我把字符串改成一个简单的整数时,它就起作用了。

我需要版本是一个时间戳。我该如何克服这个错误?

我在一台Windows7机器上。奇怪的是,在mac机器上为android构建了相同的代码库。

谢谢smaira

我遇到了这个问题,并用一个让我有点不舒服的破解方法"解决"了它,但它确实有效。我注意到错误消息中的字符串末尾附加了一个零(例如,我将versionCode设置为2015073001,但错误消息包含20150730010)。

老实说,我不知道这个代码在做什么(甚至不知道它是什么语言),但对我来说,修改提供的输入似乎有点奇怪。我修改了从platforms/android/build.gradle第177行开始的代码:

defaultConfig {
versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")
if (cdvMinSdkVersion != null) {
minSdkVersion cdvMinSdkVersion
}
}

defaultConfig {
versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode"))
if (cdvMinSdkVersion != null) {
minSdkVersion cdvMinSdkVersion
}
}

@smira

我也犯了同样的错误。

201504231750在java中不是有效的int,它超出了int的界限。

我建议使用unix时间戳。我在我的bash脚本中做了类似于以下的事情(在mac上,不知道windows的等价物是什么):

timestamp=$(date +%s)
cordova build android -- --gradleArg=-PcdvVersionCode=$timestamp

尝试覆盖属性,使您自己的闭包失败

privateHelpers.extractIntFromManifest = { name -> doExtractIntFromManifest(name) }

带有

ext.privateHelpers.extractIntFromManifest = { name -> idontwantyourintversionmethod(name) }

@Al Jacinto我确实尝试过覆盖该属性,但我认为我做得不对。

在cordova.gradle,

我更换了

privateHelpers.extractIntFromManifest = { name -> doExtractIntFromManifest(name) }

带有

privateHelpers.extractIntFromManifest = { name -> dontExtractIntFromManifest(name) }

然后,我复制了extractIntFromManifest方法,将其重命名为dontExtractIntFromManifest,并从返回中删除了parseInt,如下所示

def dontExtractIntFromManifest(name) { def manifestFile = file(android.sourceSets.main.manifest.srcFile) def pattern = Pattern.compile(name + "="(\d+)"") def matcher = pattern.matcher(manifestFile.getText()) matcher.find() return matcher.group(1) }

但当我尝试构建它时,我也遇到了同样的错误。然而,当我修改cordova.gradle时,我意识到错误来自build.gradle

defaultConfig { //versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0") //SMI:Trying to get rid of the error versionCode cdvVersionCode ?: privateHelpers.extractIntFromManifest("versionCode") + "0" if (cdvMinSdkVersion != null) { minSdkVersion cdvMinSdkVersion } }

但这也无济于事。现在我得到一个不同的错误消息,它是

`*其中:构建文件'/Users/IOMEDIAMAC5/Developer/workspace/smi/jsp-rem-001-gipro-patient-app/platforms/android/Build.gradle'行:180

  • 出了什么问题:评估根项目"android"时出现问题。

    在ProductFlavor_DDecorated上找不到参数〔2015042717100〕的方法versionCode(){name=main,minSdkVersion=null,targetSdkVersion=null,renderscriptTargetApi=null,renderscriptSupportModeEnabled=null,rendscriptNdkModeEnabled=null,versionCode=null,versionName=null,applicationId=null,testApplicationId=null,testInstrumentationRunner=null,testHandleProfileing=null,testFunctionalTest=null,signingConfig=null,resConfig=null,mBuildConfigFields={},mResValues={},mProguardFiles=[],mConsumerProguardFiles=[],mManifestPlaceholders={}}`

最新更新