繁体   English   中英

如何在cordova插件中导入android aar库

[英]How to import an android aar library in a cordova plugin

我正在为现有的高级移动 SDK 构建cordova 插件(包装器)

我已经开始使用 Android,基于目前可用的各种教程

到目前为止,我已经成功设置了本地cordova 插件项目和cordova 测试应用程序,并测试了cordova 应用程序和我的虚拟java 插件包装器实现之间的js 绑定

继续前进,我必须在插件中添加多个 aar 依赖项,我希望在使用 'cordova plugin add /path/to/my/local/plugin 添加插件时,应在cordova android应用程序的gradle构建脚本中自动配置这些依赖项'

但是,在实践中,似乎我还没有找到正确的方法,所有与此事相关的答案和说明都需要手动编辑 build.gradle 文件

crodova 依赖项配置文档中所示,在我的 plugin.xml 文件中,我添加了:

 <platform name="android">
     ......
     <source-file framework="true" 
                  src="native-libs/android/myNativeLib.aar"
                  target-dir="libs"/>
 </platform>

我的期望是,除了复制目标 /libs 目录中的 .aar 文件之外,属性 'framework=true' 的设置也会导致 'cordova plugin add /path/to/local/plugin/' 自动生成样板 build.gradle 配置:

启用本地依赖库

repositories {
    ...
    flatDir {
        dirs 'libs'
    }
}

以及配置规定的aar gradle依赖项

dependencies{
    .....
    compile(name: 'myNativeLib', ext: 'aar')
    .....
}

问题是,编写插件的全部目的是让它按原样工作,就像任何高级集成体验一样 - 没有任何其他特殊设置说明

我真的很好奇目前是否可以使用cordova,或者最终我可以尝试使用这样的新功能为项目做出贡献

期待更多地了解这个

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的插件的子目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM