添加安卓平台时,使用 Ionic2 更改插件 gradle 文件的位置



我有一个使用Ionic2/Cordova Plugins/Android的项目。

> mkdir stackoverflow-question
> cd stackoverflow-question
> git clone https://github.com/napolev/stackoverflow-question.git .
> npm install
> ionic platform add android
> ionic run android -l

我的问题是,当我添加android平台时,会创建以下目录:

/platforms/android/cordova-plugin-hash-generator

创建此目录是为了在其中保存文件:testercordovaplugins-build.gradle,它注意包括我在自己做的一个插件上使用的一些第三方库:cordova-plugin-hash-generator.

一切都编译和运行良好。我只想从以下位置更改:

platforms/android/cordova-plugin-hash-generator

到(例如(:

platforms/android/gradle/cordova-plugin-hash-generator

所以我可以对其他插件做同样的事情,防止在以下位置创建所有这些目录:platforms/android/.仅用于组织目的。

知道如何做到这一点吗?

这个基本应用程序利用我创建的插件来输出单词的 md5 摘要:hello(基本的东西(。

您不能使用 Cordova 配置来更改放置插件 gradle 文件的目录,因此您需要手动移动它,例如使用自定义钩子脚本。

例如,如果您的插件具有:

myplugin/plugin.xml

...
<platform name="android">
<framework src="mygradle.gradle" custom="true" type="gradleReference" />
</platform>
...

然后科尔多瓦会将您的 Gradle 文件部署到platforms/android/myplugin/mygradle.gradle.这是 Cordova 的默认行为:它将您的 gradle 文件放在以您的插件 ID 命名的目录中。

因此,如果您想将 Gradle 文件移动到其他地方(例如/platforms/android/gradle/(,您可以使用如下所示的钩子脚本:

myplugin/plugin.xml

...
<platform name="android">
<framework src="mygradle.gradle" custom="true" type="gradleReference" />
<hook src="myhook.js" type="after_plugin_install" />
</platform>
...

myplugin/myhook.js

var myPluginId = "myplugin";
module.exports = function(ctx) {
var path = ctx.requireCordovaModule('path');
var fs = ctx.requireCordovaModule('fs');
var cwd = ctx.opts.projectRoot;
var pluginId = ctx.opts.plugin.id;
if(pluginId !== myPluginId) return;
var sourcePath = path.resolve(cwd, "platforms", "android", pluginId);
var targetPath = path.resolve(cwd, "platforms", "android", "gradle", pluginId);
fs.renameSync(sourcePath, targetPath);
};

最新更新