本文概述
如果你正在开发cordova插件的android部分以添加用Java编写的功能(另一个不提供Javascript或cordova友好api的第三方api), 则需要向插件添加依赖项, 以便在插件的Main Java类中使用它们。
与其下载api的源代码(或某物的源代码), 不如将其包装在.jar文件中并将其添加(在大多数情况下不起作用)到你的插件中, 你可以使其更加动态和可维护性, 将你的依赖项添加到plugin.xml文件中。
添加依赖
如Cordova文档中如何添加依赖项中所述, 实现此任务的首选方法是使用<framework />标记。
在这种情况下, 我们将向我们的项目添加以下依赖项:AWS SDK对于Java»1.10.75, 可以使用此依赖项将标识符’com.amazonaws:aws-java-sdk:1.10.75’添加到gradle(因为我们正在使用带有框架标签的插件)。因此, 我们要做的就是在android平台的plugin.xml文件中添加以下行:
<platform name="android">
<framework src="com.amazonaws:aws-java-sdk:1.10.75" />
</platform>
现在, 依赖项将添加到构建中, 并且你可以在插件Java类中使用例如import:
import com.amazonaws.services.s3; // Now we can use amazon things ...
public myJavaClass extends CordovaPlugin{
}
现在, 将插件添加到你的项目中, 然后尝试构建。如果存储库已在mavenCentral中注册, 则一切都应正常工作。
如果你今天不走运并且你的项目无法编译, 则可能是存储库问题, 因为它不在mavenCentral中托管, 因此请继续阅读。
JCenter存储库问题
如果在编译时未找到依赖项, 则可能是你没有在gradle中添加正确的存储库。例如, 在这种情况下, 我们将使用JCenter存储库示例, 以下项目android OneDrive filepicker指定你需要使用’com.microsoft.onedrivesdk:onedrive-picker-android:v2.0’存储库ID添加依赖项目, 但是如果像往常一样将其添加到插件中, 则该应用将无法编译, 但是为什么呢?
repositories {
jcenter() // Note that you need to add jcenter repository !!! that's it
}
dependencies {
compile ('com.microsoft.onedrivesdk:onedrive-picker-android:v2.0')
}
如你所见, 该存储库指定你需要将jcenter存储库添加到你的项目中, 这将解决问题, 并且该应用程序将照常编译。
jcenter()与mavenCentral()类似。请查看JCenter了解更多详细信息。 jCenter的家伙声称他们的性能比Maven Central更好。
仅为你的插件添加自定义gradle
你可以为插件创建自定义渐变, 而无需修改项目的原始渐变文件。在插件中使用自定义内容创建一个graddle文件(plugin.gradle), 在这种情况下, 如果我们的插件添加了本机文件选择器, 并且我们需要访问jcenter存储库, 那么plugin.gradle文件的内容应为:
repositories {
jcenter()
}
dependencies {
compile 'com.nononsenseapps:filepicker:3.1.0'
}
最后, 在你的plugin.xml文件中注册自定义渐变(根据plugin.gradle文件的位置更改路径):
<framework src="src/android/plugin.gradle" custom="true" type="gradleReference"/>
现在尝试再次编译, 并且你的库(从jcenter检索)应该在Java类中可用。
手动添加存储库
如果你想手动修改.gradle文件(不好的做法, 但是如果你真的需要添加另一个没有自定义gradle文件就不是maven的存储库, 因为你很着急)。
导航到project / platforms / android并打开build.gradle文件。大约在第48-50行, 你将找到repositories属性:
// Allow plugins to declare Maven dependencies via build-extras.gradle.
repositories {
mavenCentral()
}
你只会找到mavenCentral(), 因此你需要添加jcenter(), 一切都会按预期进行:
// Allow plugins to declare Maven dependencies via build-extras.gradle.
repositories {
mavenCentral()
jcenter()
}
现在尝试再次编译, 然后一切都应该正常工作。愿力量与你同在, 玩得开心!
评论前必须登录!
注册