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

标签 android cordova cordova-plugins build.gradle

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

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

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

接下来,我必须在插件中添加多个 aar 依赖项,我希望在使用 'cordova plugin 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>

我的预期是,除了复制目标/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 的插件子目录中。

关于android - 如何在 cordova 插件中导入 android aar 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057622/

相关文章:

javascript - 网站无法在 webview 上正确加载

android - 在 ScrollView/LinearLayout 的底部放置一个 View

ios - Cordova 通知插件安装失败(Cordova 3.6)

android - Cordova 地理定位插件不起作用

android - Cordova 与服务器的连接不成功

javascript - 在 android 旧版本(如果冻 bean 、kitkat android)中无法使用上一页功能,它仅适用于 Lollipop 版本

android - 应用程序类 Android 的需要/可用性?

android - 重新创建android Activity 而不眨眼

android - AVD "use host GPU"在测试应用程序时导致黑屏

java - Worklight : how to set use addGlobalHeader for WL. Client.invokeProcedure 调用