2015-04-24 2 views
3

файл Config.xml моего ионным/Cordova проекта имеет следующий наборGradle бросали ошибки на номер версии в Cordova config.xml

андроид-VersionCode = "201504231751" КСН-CFBundleVersion = "201504231752"

Когда я пытаюсь построить андроид с помощью «corova build android», град бросает мне сообщение:

FAILURE: Сбой сборки с исключением. * Где: Сценарий 'E: \ Workspaces \ xxx \ xxx \ platform \ android \ CordovaLib \ cordova.gradle': 128 * Что пошло не так: Возникла проблема с оценкой «андроида» корневого проекта.

Для ввода строки: "201504231750" * Try: Run с --stacktrace возможностью получения трассировки стека. Запустите с опцией --info или --debug, чтобы получить больше выходных данных журнала.

Строка 128 на \ CordovaLib \ cordova.gradle - это ParseInt. Мое предположение состоит в том, что строка не может быть преобразована в целое число и, следовательно, проблема.

Когда я меняю строку на простое целое число, оно работает.

Мне нужна версия, чтобы быть меткой времени. Как я могу преодолеть эту ошибку?

Я нахожусь на машине с окнами 7. Странно, что одна и та же база кода построена для android на машине Mac.

Благодаря smaira

ответ

0

Попытки переопределить свойство, флоп собственного закрытия

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

с

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

Я не могу добавить, что я пробовал в поле для комментариев. Пожалуйста, см. Мой ответ в вышеприведенном сообщении. – smaira

0

@Al Хасинто я попробовать и переопределить свойство, но я думаю, что я «Не делаю это правильно.

В 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) }

, но когда я попытался построить его, я получил ту же ошибку. Тем не менее, я понял, что ошибка исходила от build.gradle, пока я менял cordova.gradle. Поэтому я открыл сборку.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 } }

, но это не помогло. Теперь я получаю другое сообщение об ошибке, которое равно

`* Где: Файл сборки '/ Пользователи/IOMEDIAMAC5/Developer/workspace/smi/jsp-rem-001-gipro-patient-app/platform/android/build. Gradle»линия: 180

  • Что пошло не так: Возникла проблема оценки корневого проекта„андроида“.

    Не удалось найти метод VersionCode() для аргументов [2015042717100] на ProductFlavor_Decorated {имя = главный, minSdkVersion = нуль, targetSdkVersion = нуль, renderscriptTargetApi = нуль, renderscriptSupportModeEnabled = нуль, renderscriptNdkModeEnabled = нуль, VersionCode = нуль, versionName = null, applicationId = null, testApplicationId = null, testInstrumentationRunner = null, testHandleProfiling = null, testFunctionalTest = null, signedConfig = null, resConfig = null, mBuildConfigFields = {}, mResValues ​​= {}, mProguardFiles = [], mConsumerProguardFiles = [] , mManifestPlaceholders = {}}. `

+0

Вы завернули в ext? или добавить ext. впереди? –

1

@smaira

Я тоже получал ту же ошибку.

201504231750 не является допустимым int в java, он превышает границы int.

Вместо этого я бы рекомендовал использовать временную метку unix. Я делаю что-то похожее на следующее в моей Баш скрипт (на макинтош, не знаю, что окна эквивалент):

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

Я столкнулся с этой проблемой и «решить» его взломать, что делает меня немного неудобным, но который работает. Я заметил, что строка в сообщении об ошибке имеет нуль, добавленный в конец (например, я установил код версии 2015073001, но сообщение об ошибке содержит 2015073001).

Честно говоря, я не знаю, что делает этот код (или даже какой язык), но мне кажется немного странным изменить предоставленный ввод. Я изменил код, начинающийся в строке 177 платформ/Android/build.gradle от:

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 
     } 
    } 
Смежные вопросы