使用Cordova构建Android项目时,在Android Studio中打开时收到以下消息:
我的build.gradle文件反映了插件的差异(尽管Gradle版本定义是正确的):
dependencies { classpath 'com.android.tools.build:gradle:3.0.0' }
我想知道是否有一种方法可以配置Cordova来显式定义Android Gradle插件版本。
wlwcrazw1#
Android Gradle插件版本已硬编码到cordova-android中的build.gradle模板中。如果你从master分支安装平台,你可以看到它使用的是比最新的npm版本cordova-android@7.1.4更高的版本(3.2.0),后者是为3.0.1配置的。要直接从master分支安装,请执行以下操作:
build.gradle
cordova-android@7.1.4
3.2.0
3.0.1
cordova platform add https://github.com/apache/cordova-android
如果你想使用最新的版本,你可以fork cordova-android repo,在build.gradle模板中固定你想要的版本,然后直接从你的fork repo安装插件:
cordova-android
cordova platform add https://github.com/my_github_username/cordova-android
rbpvctlc2#
我遇到了一个问题,需要在platforms/android/build.gradle文件中指定一个替代版本的gradle插件,而不是默认的Cordova android build生成的版本。所以,为了解决这个问题,我创建了一个Cordova钩子脚本,在after_platform_add上运行,它修改了gradle插件版本。
platforms/android/build.gradle
after_platform_add
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的插件.1.在Cordova config.xml文件中,我在我的android平台部分添加了这个钩子:
3.3.3
config.xml
<platform name="android"> <hook type="after_platform_add" src="hooks/android/modify-android-gradle-plugin-version.js" /> ... </platform>
1.然后我添加了这个modify-android-gradle-plugin-version.js钩子脚本。(请原谅我的JavaScript不完美,我不是jsMaven。
modify-android-gradle-plugin-version.js
const fs = require('fs'); const path = require('path'); const deferral = require('q').defer(); const async = require('async'); module.exports = function(ctx) { console.log('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; }
1.我还必须将async节点模块添加到cordova项目的package.json的devDependencies部分:
async
package.json
devDependencies
"devDependencies": { "async": "3.2.2" }
wqnecbli3#
AGP版本或AndroidGooglePlugin可以通过AndroidGradlePluginVersion首选项在config.xml中指定。即:
<preference name="AndroidGradlePluginVersion" value="7.2.2" />
3条答案
按热度按时间wlwcrazw1#
Android Gradle插件版本已硬编码到cordova-android中的
build.gradle
模板中。如果你从master分支安装平台,你可以看到它使用的是比最新的npm版本
cordova-android@7.1.4
更高的版本(3.2.0
),后者是为3.0.1
配置的。要直接从master分支安装,请执行以下操作:
如果你想使用最新的版本,你可以fork
cordova-android
repo,在build.gradle
模板中固定你想要的版本,然后直接从你的fork repo安装插件:rbpvctlc2#
我遇到了一个问题,需要在
platforms/android/build.gradle
文件中指定一个替代版本的gradle插件,而不是默认的Cordova android build生成的版本。所以,为了解决这个问题,我创建了一个Cordova钩子脚本,在after_platform_add
上运行,它修改了gradle插件版本。详情
Cordova 9构建生成了一个
build.gradle
文件,其中包含以下gradle插件版本3.3.0依赖项:但是,我需要版本
3.3.3
的插件.1.在Cordova
config.xml
文件中,我在我的android平台部分添加了这个钩子:1.然后我添加了这个
modify-android-gradle-plugin-version.js
钩子脚本。(请原谅我的JavaScript不完美,我不是jsMaven。1.我还必须将
async
节点模块添加到cordova项目的package.json
的devDependencies
部分:wqnecbli3#
AGP版本或AndroidGooglePlugin可以通过AndroidGradlePluginVersion首选项在config.xml中指定。即: