我正在为现有的高级移动SDK构建cordova插件(包装器)
我已经开始使用Android,基于目前可用的各种教程
到目前为止,我已经成功设置了本地cordova插件项目和cordova测试应用程序,我测试了cordova应用程序和我的虚拟java插件包装器实现之间的js绑定
继续前进,我必须在插件中添加多个aar依赖项,我希望在使用'cordova插件add / path / to / my /添加插件时,将在cordova android应用程序的gradle构建脚本中自动配置本地/插件
然而,在实践中,我似乎找不到正确的方法,所有与此事相关的答案和说明都需要手动编辑build.gradle文件
如crodova dependencies configuration documentation所示,在我的plugin.xml文件中,我添加了:
<platform name="android">
......
<source-file framework="true"
src="native-libs/android/myNativeLib.aar"
target-dir="libs"/>
</platform>
我的期望是,除了复制target / libs目录中的.aar文件之外,属性'framework = true'的设置也会导致'cordova插件添加/路径/到/ local / plugin / '自动生成样板build.gradle配置:
启用本地依赖存储库
repositories {
...
flatDir {
dirs 'libs'
}
}
以及配置规定的aar gradle依赖
dependencies{
.....
compile(name: 'myNativeLib', ext: 'aar')
.....
}
问题是,编写插件的整个目的是让它按原样工作,就像任何高级集成体验一样 - 没有任何其他特殊的设置说明
我真的很好奇目前是否可以使用cordova,或者最终我可以尝试通过这样的新功能为项目做出贡献
期待更多地了解这个
答案 0 :(得分:1)
根据我的经验,framework
属性仅限iOS,在您链接的文档中也标记为iOS属性。
正如您已经提到的,任何用户都希望插件在添加后无需任何设置即可工作,这就是为什么您不希望他在platforms
文件夹中摆弄。要完成这项工作,您可以扩展cordovas gradle文件。您必须向plugin.xml
添加一个类型为gradleReference
的框架标记,并链接到您的gradle扩展程序(该路径相对于您的plugin.xml
):
<framework src="src/android/*.gradle" custom="true" type="gradleReference" />
生成的gradle-extension看起来像这样:
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name: 'myNativeLib', ext: 'aar')
}
android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
这假设您已将.aar
库放在名为libs
的插件的子目录中。