【问题标题】:Gradle throwing error on version numbers in cordova config.xml在科尔多瓦 config.xml 中版本号上的 Gradle 抛出错误
【发布时间】:2015-07-02 20:11:04
【问题描述】:

我的 ionic/cordova 项目的 config.xml 文件有以下设置

android-versionCode="201504231751" ios-CFBundleVersion="201504231752"

当我尝试使用“cordova build android”为 android 构建时,gradle 抛出一个错误:

FAILURE:构建失败并出现异常。 * 在哪里: 脚本 'E:\Workspaces\xxx\xxx\platforms\android\CordovaLib\cordova.gradle' 行:128 * 什么地方出了错: 评估根项目“android”时出现问题。

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

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

当我将字符串更改为简单整数时,它可以工作。

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

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

谢谢 斯迈拉

【问题讨论】:

    标签: android cordova gradle ionic cordova-cli


    【解决方案1】:

    尝试覆盖属性,关闭你自己的关闭

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

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

    【讨论】:

    • 我无法在 cmets 框中添加我尝试过的内容。请在上面的帖子中查看我的答案。
    【解决方案2】:

    @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。所以我打开了 build.gradle 并更改了 defaultConfig

    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_Decorated{name=main, minSdkVersion=null, targetSdkVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null, 上找不到参数 [2015042717100] 的方法 versionCode() applicationId = null,testApplicationId = null,testInstrumentationRunner = null,testHandleProfiling = null,testFunctionalTest = null,signingConfig = null,resConfig = null,mBuildConfigFields = {},mResValues = {},mProguardFiles = [],mConsumerProguardFiles = [],mManifestPlaceholders = {}}。`

    【讨论】:

    • 你用分机换行了吗?或附加分机。在前面?
    【解决方案3】:

    @smaira

    我也遇到了同样的错误。

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

    我建议改用 unix 时间戳。我在我的 bash 脚本中执行了类似于以下的操作(在 Mac 上,不知道 Windows 等效项是什么):

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

    【讨论】:

      【解决方案4】:

      我遇到了这个问题,并用一个让我有点不舒服的 hack “解决”了它,但它确实有效。我注意到错误消息中的字符串末尾附加了一个零(例如,我将 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
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2017-01-11
        • 2016-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多