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

时间:2017-10-04 14:33:29

标签: android gradle react-native android-gradle react-native-android

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

有什么建议吗?

7 个答案:

答案 0 :(得分:2)

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

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

repositories {
    flatDir {
        dirs: 'libs'
    }
}

做了这个伎俩。

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

答案 1 :(得分:2)

在您模块的aria-labelledby文件中,您希望将 <ng-container *ngFor="let client of events.data.clients"> <div> <div> <div class="user__info"> <span class="user__name">{{ client.first_name }}</span> </div> </div> <ng-container *ngFor="let event of client.appointments"> <div *ngIf="(event.starts_at| date:'y-MM-dd') == (startofweek | date:'y-MM-dd')"> <ng-template #popContent> <label>Notes</label> <p>The id of client is {{ client.id }}</p> <p>Event identifier {{ event.id }}</p> </ng-template> <button type="button" class="btn btn-outline-secondary" placement="bottom" [ngbPopover]="popContent" popoverTitle="Popover on bottom" > Popover on bottom </button> </div> </ng-container> </div> </ng-container> 添加为工件。

IResponse.OutputStream

答案 2 :(得分:2)

你所写的内容绝对正确,但你只是写错了地方 你已经在build.gradle(Project:project_name)中编写了代码 你只需要在build.gradle(Module:app)文件中编写代码,然后将.arr文件粘贴到项目lib文件夹中

即 储存库{
flatDir {
dirs'libs'
}
}

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

答案 3 :(得分: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'))

答案 4 :(得分:0)

我成功地将第3方.aar文件包含到android react native模块中。

请查看我对这个问题的回答:How to include AAR in React Native Android build?

答案 5 :(得分:0)

尝试了很久之后,我终于明白了 那里应该怎么做:

  1. 添加

    存储库{ flatDir { dirs'libs' } }

进入project:grindle(不是module.grindle) 和

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

答案 6 :(得分:0)

我正在尝试在本机模块中使用第三方软件

  1. 在reactnativeModule / android / libs中添加aar文件

  2. 添加

    allprojects { 储存库{ flatDir { dirs:“ libs” } } } 在reactnativeModule / android / build.grindle的build.gradle中

  3. 添加依赖项 dependencies { implementation "com.facebook.react:react-native:${safeExtGet('reactnativeVersion', '+')}" of reactnativeModule/android/build.grindle