向 Android Cordova 插件添加依赖项

22

我正在构建一个Cordova Android插件。我想在由该插件创建的Intent中使用第三方View (具体来说是scissors)。 通常情况下(在非Cordova项目中),我会打开我的项目的build.gradle文件,并像这样添加:

dependencies {
compile 'com.lyft:scissors:1.0.1' }

但似乎我的插件项目中的build.gradle文件不应该被更改?那么向插件项目中添加依赖项的正确方法是什么,以支持通过Cordova和通过Android Studio进行的构建? 对于一个本地项目(未托管在GitHub上),同样的问题。

2个回答

24

您需要使用自己的Gradle文件,然后像这样在plugin.xml中链接它:

<framework src="relative/path/your.gradle" custom="true" type="gradleReference" />

你需要将该标签放在plugin.xml文件中,这样在插件安装时就会被读取并由Cordova进行处理(不确定其内部运作方式,但我猜想它会将你的自定义.gradle文件的值复制到主要的build.gradle文件中)。

因此,你不能在当前项目上测试它,你需要创建一个新项目并添加该插件,看它是否能正常运行。


不,我没有。这是一个正在编辑的可工作插件。我相当确定他们使用cordova create生成了所有文件,然后只添加了一个plugin.xml文件,就像这个(旧的)教程建议的那样http://devgirl.org/2013/07/17/tutorial-how-to-write-a-phonegap-plugin-for-android/。这种方法的优点是可以很容易地测试我的插件。由于我的插件本身是一个cordova项目,所以不能直接编辑它的gradle文件。我设法在iOS版本中解决了这个问题,但在android上似乎更加复杂。希望我的话说得清楚... - YakirNa
感谢。如果您将答案编辑为包含评论中的信息,我将接受此答案。 - YakirNa
如果我想要添加到应用程序而不是插件,该怎么办?尝试直接在gradle文件中添加,但在构建时会被删除。 - droidev
@jcesarmobile 有没有更好的方法? - droidev
@droidev 另一种方法是使用钩子在 Cordova 的 .gradle 文件中写入,但我认为这样做并不好。 - jcesarmobile
显示剩余13条评论

14

Cordova Android 插件文档(在“添加依赖库”中)指定您可以使用 <framework> 标签在您的 plugin.xml 中添加依赖库。

因此,对于 scissors 依赖项,您可以使用以下内容:

<platform name="android">
    <framework src="com.lyft:scissors:1.0.1" />

然后呢?我需要做什么,才能在Android Studio中使用它? 运行“cordova prepare ios”似乎不够,构建或清理也不行。 - YakirNa
假设您的意思是 cordova prepare android,那么您需要创建一个依赖于您的插件的 Cordova 应用程序以进行测试。您可以在此测试应用程序中使用 cordova plugin add <path/to/your/plugin> 添加依赖项,然后运行 cordova prepare android - louisbl
由于某种原因,当我尝试在我的插件中执行此操作时,似乎偶尔会缓存这些设置。按照上述更改后执行以下操作: `cordova platform rm android` `cordova platform add android@5.1.1` `cordova plugin add myplugin` - Adam Tegen
它对我有效。这个答案必须被标记为正确。 - gbixahue
我在根项目文件夹中没有看到 plugin.xml 文件。我只在 /plugins/cordova-xxx 文件夹下看到了许多 plugin.xml 文件。我应该手动创建 plugin.xml 文件吗? - Panadol Chong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接