如何将第三方aar包含在Android React Native模块中?

问题描述 投票:7回答:4

我正在构建一个Android React Native模块,我的代码从第三方SDK导入类,该SDK作为aar文件提供。我应该如何将此文件捆绑到我的模块中?我尝试添加

allprojects {
    repositories {
        flatDir {
            dirs: 'libs'
        }
    }
}

dependencies {
    ... other deps ...
    compile (name:'my-external-lib', ext:'aar')
}

到build.gradle文件并将此my-external-lib.aar文件放入libs/文件夹中,但在构建包含react-native-my-module的MyApp react-native应用程序时仍然出错:

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration 
':app:_developmentDebugApkCopy'.
   > Could not find :my-external-lib:.
     Required by:
         MyApp:app:unspecified > MyApp:react-native-my-module:unspecified

有什么建议?

android gradle react-native android-gradle react-native-android
4个回答
2
投票

看起来我自己设法解决了这个问题。您似乎需要在主项目中定义repositories以允许子项目找到它们的依赖项。

将它放到主项目build.gradle文件中:

repositories {
    flatDir {
        dirs: 'libs'
    }
}

做了伎俩。

我相信,这不是包含具有依赖项的子项目的正确方法,因为如果此库是来自npm的第三方库,您显然无法知道如何修改build.gradle文件。那么,有人可以解释为什么这有效,以及如何以正确的方式完成?


2
投票

在模块的android/build.gradle文件中,您需要将.aar添加为工件。

configurations.maybeCreate("default")
artifacts.add("default", file("NAME_OF_YOUR_FILE.aar"))

2
投票

你写的什么是完全正确的,但你只是写错了地方 你已经在build.gradle中编写了代码(Project:project_name) 你只需要在build.gradle(Module:app)文件中编写代码,然后将.arr文件粘贴到项目lib文件夹中 即 存储库{ flatDir { dirs'libs' } }

依赖{ ......其他代表...... 编译(名称:'my-external-lib',分机:'aar') }


1
投票

在您的settings.gradle中,您应该包含此lib,例如:

include ':app',  ':my-external-lib'

您可以将其编译为正常项目,例如:compile project(':my-external-lib')

另外你的my-external-lib build.gradle应该是这样的:

configurations.maybeCreate("default")
artifacts.add("default", file('my-external-lib.aar'))
© www.soinside.com 2019 - 2024. All rights reserved.