如何将第三方aar纳入Android React本机模块?

如何将第三方aar纳入Android React本机模块?,android,gradle,react-native,android-gradle-plugin,react-native-android,Android,Gradle,React Native,Android Gradle Plugin,React Native Android,我正在构建一个android React本机模块,我的代码从作为aar文件提供的第三方SDK导入类。我应该如何将此文件捆绑到我的模块中?我试着加上 allprojects { repositories { flatDir { dirs: 'libs' } } } 及 转到build.gradle文件,并将此my-external-lib.aar文件放入libs/文件夹,但在使用包含react-native my modul

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

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

转到build.gradle文件,并将此my-external-lib.aar文件放入
libs/
文件夹,但在使用包含react-native my module的react-native模块构建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

有什么建议吗?

在您的设置中。梯度您应该包括此库,例如:

include ':app',  ':my-external-lib'
您可以将其编译为普通项目,例如:
compileproject(“:我的外部库”)

另外,您的
my external lib
build.gradle应该是:

configurations.maybeCreate("default")
artifacts.add("default", file('my-external-lib.aar'))

看来我自己解决了这个问题。 似乎需要在主项目中定义
存储库
,以允许子项目定位它们的依赖项

将其放入主project 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\u name)中编写了代码
您只需在build.gradle(Module:app)文件中编写代码,.arr文件必须粘贴到projects lib文件夹中

i、 e.
存储库{
  flatDir{
   目录“libs”
  }
}

依赖项{
   ... 其他部门…
   编译(名称:'my-external-lib',分机:'aar')

}

我成功地将第三方
.aar
文件包含到android react本机模块中


请看我对这个问题的回答:

经过长时间的尝试,我终于找到了答案 以下是您应该如何做到这一点:

  • 存储库{   弗拉蒂尔{    dirs'libs'   } }

  • 进入项目:grindle(不是module.grindle) 及

  • 将依赖项添加到app:grindle(不是module.grindle)

  • I您试图在react本机模块中使用第三方软件,而不是

  • 在reactnativeModule/android/libs中添加aar文件

  • 所有项目{ 存储库{ 弗拉蒂尔{ 目录:“libs” } } } 在reactnativeModule/android/build.grindle的build.gradle中

  • 添加依赖项只是在
    依赖项{implementation“com.facebook.react:react native:${safeExtGet('reactnativeVersion','+')}的reactnativeModule/android/build.grindle


  • 嘿,我完全遵循了,但我仍然在项目yyyyy中找不到路径为xxxx的项目。。如果可能的话,您可以共享模块的结构吗?这是在build.gradle的哪一部分?还是仅仅在文件的末尾?@gtfargo我已经尝试过了,但是aar中的类没有解析。您是如何创建的有效吗?
    configurations.maybeCreate("default")
    artifacts.add("default", file("NAME_OF_YOUR_FILE.aar"))