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

nx7onnlm  于 2022-11-20  发布在  Android
关注(0)|答案(7)|浏览(309)

我正在构建一个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

有什么建议吗?

sulc1iza

sulc1iza1#

看起来我自己解决了这个问题。看起来你需要在主项目中定义repositories,以允许子项目定位它们的依赖项。
将其放入主项目build.gradle文件:

repositories {
    flatDir {
        dirs: 'libs'
    }
}

成功了。
不过我认为,这不是包含具有依赖项的子项目的正确方法,因为如果该库是来自npm的第三方库,您显然不知道如何修改您的build.gradle文件。那么,有人能解释一下为什么这样做,以及应该如何以正确的方式完成吗?

okxuctiv

okxuctiv2#

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

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

vm0i2vca3#

你所写的都是绝对正确的,只是你写错了地方
您已经在build.gradle(项目:project_name)中编写了代码
您只需要在build.gradle(Module:app)文件中编写代码,并且必须将.arr文件粘贴到项目库文件夹中
也就是说
存储库{
  平面目录{
   目录'库'
  }
}
相关性{
   ...其他部门...
   编译(名称:'my-external-lib',扩展名:'aar')
}

cig3rfwq

cig3rfwq4#

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

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'))
nlejzf6q

nlejzf6q5#

我成功地在android react原生模块中包含了一个第三方的.aar文件。
请看我对这个问题的回答:如何在React Native Android构建中包含AAR?

8ulbf1ek

8ulbf1ek6#

经过这么长时间的努力,我终于明白了你应该怎么做:
1.新增
存储库{ flatDir {  目录'库' } }
导入项目:grindle(不是模块.grindle)和
1.将依赖项添加到应用程序:grindle(而不是module.grindle)

a11xaf1n

a11xaf1n7#

如果您尝试在react-native模块中使用第三方软件
1.在React模块/android/libs中添加aar文件
1.新增
所有项目{存储库{平面目录{目录:在reactnativeModule/android/build.grindle的build.gradle中的“库”} } }
1.仅在dependencies { implementation "com.facebook.react:react-native:${safeExtGet('reactnativeVersion', '+')}" of reactnativeModule/android/build.grindle中添加依赖项

相关问题