使用的gradle科尔多瓦包装

我使用的是Android的科尔多瓦4.0.0它使用gradle这个包装打造时指定不同的储存库。我需要指定与mavenCentral不同的存储库。我不能简单地修改build.gradle文件,因为它是由Cordova自动生成的。因为它使用的是Cordova指定的包装分发,所以我不能在分发中添加/init.d。我试着加入USER_HOME/.gradle/init.gradle文件,它似乎并没有被习惯。有没有其他的方式来指定一个初始化文件,当使用我没有控制权的包装?使用的gradle科尔多瓦包装

编辑: 作为一种解决方法,现在我添加了一个after_prepare挂钩,它将build.gradle文件中任何位置的文本“mavenCentral()”更改为我需要使用的存储库。我们有了一个更好的基于的Gradle虽然解决方案...

回答:

我们使用的离子和有我们的,我们用的不是自己的mavenCentral承上启下库。我们结束了创建一个钩加入了钩来解决这个open issue

module.exports = function(ctx) { 

'use strict';

var fs = ctx.requireCordovaModule('fs'),

path = ctx.requireCordovaModule('path'),

deferral = ctx.requireCordovaModule('q').defer(),

replaceStream = require('replacestream'),

async = require('async');

var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');

var gradleFiles = [path.join(platformRoot, 'build.gradle'), path.join(platformRoot, 'CordovaLib', 'build.gradle')];

async.each(gradleFiles, function(f, cb) {

fs.readFile(f, 'utf8', function(err, data) {

if (err) {

cb(err);

return;

}

var result = data.replace(/mavenCentral\(\)/g, 'maven{url "http://nexus.corp.aal.au/content/groups/public-ad"}');

fs.writeFile(f, result, 'utf8', cb);

});

}, function(err) {

if (err) {

deferral.reject();

} else {

deferral.resolve();

}

});

return deferral.promise;

}

回答:

您指定的gradle这个初始化脚本https://docs.gradle.org/current/userguide/init_scripts.html

像这种额外的Maven的回购协议:

allprojects { repositories { maven { credentials { username 'your_user_name' password 'your_password' } url "https://your_repo" } maven { url "http://download.01.org/crosswalk/releases/crosswalk/android/maven2/" } } }

回答:

这可以工作进行的方式似乎随着时间而改变。 Cordova/Phonegap的表现让我很困难。然而,这目前对我的作品:

  • 创建build.gradle文件或复制一个从新制作的Android Studio项目 - 你知道,它喜欢在默认情况下把jcenter()那里。下面的例子。
  • 它在类型gradleReference添加到您的plugin.xml文件作为定制的“框架”,在你的Android平台的标签。下面的例子。
  • ,而我在它 - 如果你需要其他gradle这个更改,例如Java语言水平,你可以包括build-extras.gradle文件以及来调整其他设置(不知道这些都需要单独的诚实,但我已经到了我的皮带的尽头,试图处理这件事情)。下面的例子。是的,目标目录必须是src/..

样品build.gradle文件:

buildscript { 

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.1.2'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

jcenter()

}

}

dependencies {

compile 'net.example:some-sdk:2.3.1'

}

样品plugin.xml

<?xml version="1.0" encoding="UTF-8"?> 

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="io.proxsee" version="0.1.0">

<!-- When you update this file, update the package.json too. -->

<!-- Reference: https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html -->

<!-- .. other stuff .. -->

<platform name="android">

<!-- .. other stuff .. -->

<framework src="build.gradle" custom="true" type="gradleReference" />

<source-file src="build-extras.gradle" target-dir="src/.." />

</platform>

</plugin>

样品build-extras.gradle

ext.postBuildExtras = { 

android {

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

packagingOptions {

exclude 'META-INF/ASL2.0'

exclude 'META-INF/LICENSE'

exclude 'META-INF/NOTICE'

exclude 'META-INF/maven/com.squareup/javawriter/pom.xml'

exclude 'META-INF/maven/com.squareup/javawriter/pom.properties'

}

}

}

以上是 使用的gradle科尔多瓦包装 的全部内容, 来源链接: utcz.com/qa/257220.html

回到顶部