我正在构建一个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
有什么建议?
看起来我自己设法解决了这个问题。您似乎需要在主项目中定义repositories
以允许子项目找到它们的依赖项。
将它放到主项目build.gradle文件中:
repositories {
flatDir {
dirs: 'libs'
}
}
做了伎俩。
我相信,这不是包含具有依赖项的子项目的正确方法,因为如果此库是来自npm的第三方库,您显然无法知道如何修改build.gradle文件。那么,有人可以解释为什么这有效,以及如何以正确的方式完成?
在模块的android/build.gradle
文件中,您需要将.aar
添加为工件。
configurations.maybeCreate("default")
artifacts.add("default", file("NAME_OF_YOUR_FILE.aar"))
你写的什么是完全正确的,但你只是写错了地方 你已经在build.gradle中编写了代码(Project:project_name) 你只需要在build.gradle(Module:app)文件中编写代码,然后将.arr文件粘贴到项目lib文件夹中 即 存储库{ flatDir { dirs'libs' } }
依赖{ ......其他代表...... 编译(名称:'my-external-lib',分机:'aar') }
在您的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'))