При создании моего проекта Android с помощью Cordova при открытии в Android Studio я получаю следующее сообщение:
Мой файл build.gradle отражает несоответствие плагина (хотя определенная версия Gradle верна):
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
Я хотел бы знать, есть ли способ настроить Cordova для явного определения версии подключаемого модуля Android Gradle.
@JoeyDalu Меня спрашивают, потому что кордова указала версию 3.0.0 при создании платформы Android. Я хочу указать 3.2.1, чтобы не получать это предупреждение.
Хорошо, нажмите кнопку обновления, и он должен обновить его за вас. Если это не сработает, вы всегда можете обновить его в файле settings.gradle
в корне вашего проекта.
@JoeyDalu Я хочу настроить Cordova для явного определения версии плагина Android Gradle, как указано в исходном сообщении.
Версия плагина Android Gradle - жестко закодированы в шаблоне build.gradle
в Кордова-андроид.
Если вы установите платформу из основной ветки, вы увидите, что она использует более высокую версию (3.2.0
), чем самая последняя версия npm [email protected]
, которая является настроен для 3.0.1
.
Чтобы установить прямо из основной ветки:
cordova platform add https://github.com/apache/cordova-android
Если вы хотите использовать самую последнюю версию, вы можете разветвить репозиторий cordova-android
, закрепить нужную версию в шаблоне build.gradle
, а затем установить плагин прямо из разветвленного репо:
cordova platform add https://github.com/my_github_username/cordova-android
Спасибо. Я попробую и отдаю вам должное, когда у меня будет возможность попробовать.
Работает, но просто примечание, хотя я проверил с помощью структуры проекта, что мой Gradl и версия плагина верны, он все равно будет мигать это сообщение об обновлении, когда я в первый раз открою недавно созданный проект платформы.
У меня возникла проблема, которая требовала, чтобы в файле platforms/android/build.gradle
была указана альтернативная версия плагина gradle, а не та, что была сгенерирована сборкой Android Cordova по умолчанию. Итак, чтобы исправить это, я использовал созданный сценарий ловушки Cordova для запуска на after_platform_add
, который изменяет версию плагина gradle.
Сборка Cordova 9 генерировала файл build.gradle
со следующей зависимостью плагина gradle версии 3.3.0:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.android.tools.build:gradle:3.3.0'
}
}
Но мне нужна была версия плагина 3.3.3
.
config.xml
я добавил этот хук в раздел моей платформы Android: <platform name = "android">
<hook type = "after_platform_add" src = "hooks/android/modify-android-gradle-plugin-version.js" />
...
</platform>
modify-android-gradle-plugin-version.js
. (Прошу прощения за мое несовершенство javascript, я не эксперт по js.)const fs = require('fs');
const path = require('path');
const deferral = require('q').defer();
const async = require('async');
module.exports = function(ctx) {
console.info('Running modify-android-gradle-plugin-version.js...');
const platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
const gradleFiles = [path.join(platformRoot, 'build.gradle')];
async.each(gradleFiles, function(f, cb) {
fs.readFile(f, 'utf8', function(err, data) {
if (err) {
cb(err);
return;
}
// regex to replace version 3.3.0 with version 3.3.3
const result = data.replace(/com\.android\.tools\.build:gradle:3\.3\.0/g, 'com.android.tools.build:gradle:3.3.3');
fs.writeFile(f, result, 'utf8', cb);
});
}, function(err) {
if (err) {
deferral.reject();
} else {
deferral.resolve();
}
});
return deferral.promise;
}
async
в раздел devDependencies
моего проекта Cordova package.json
: "devDependencies": {
"async": "3.2.2"
}
Я не могу понять, что именно вы спрашиваете, но это означает, что ваша версия класса
com.android.tools.build:gradle:3.0.0
. В диалоговом окне предлагается обновить его только в том случае, если вы хотите, но если вы этого не сделаете, просто нажмите «Игнорировать» или закрыть его.