如何在React Native Android版本中包含AAR?

时间:2017-05-09 00:15:36

标签: android react-native estimote

我试图在我的React Native Android应用程序中包含AAR文件,以便我可以使用本机代码访问其功能。如何捆绑AAR以便本机代码可以使用React Native Android导入它?谢谢!

编译时我得到的错误是:

~\app\android\app\src\main\java\com\grind\GrindModule.java:13: error: package com.estimote.sdk does not exist
import com.estimote.sdk.EstimoteSDK;
                        ^

我做了以下更改:

创建android/app/libs/estimote-sdk.aar

创建反应原生本机模块(之前我已经完成了几次,它在我尝试使用SDK之前一直正常工作)。

android/app/build.gradle

dependencies {
    compile(name:'estimote-sdk', ext:'aar')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:+"  // From node_modules
}

android/build.gradle

...
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        flatDir {
            dirs 'libs'
        }
    }
}

以下是包含SDK的说明: https://github.com/Estimote/Android-SDK#installation

https://github.com/Estimote/Android-SDK/blob/master/Docs/manual_installation.md#estimote-sdk-for-android-manual-installation

3 个答案:

答案 0 :(得分:9)

library.aar文件复制到react-native-module-name/android/libs中。如果libs文件夹不存在,请创建它。

react-native-module-name/android/build.gradle中:

dependencies {
  implementation fileTree(dir: "libs", include: ["*.aar"])
  implementation 'com.facebook.react:react-native:+'  // From node_modules
}

答案 1 :(得分:3)

我尝试了很多方法,

与ANDROID STUDIO打开文件夹,只需添加AAR或JAR

最简单的方法是使用android studio在de react native project中打开生成的文件夹。他们添加aar将aar添加到常规项目中。

enter image description here

enter image description here

在android Studio中一如既往地添加(Friendly Remainder):

  1. 打开模块设置(右键单击项目顶部)
  2. 导入aar / jar
  3. 添加到依赖关系

答案 2 :(得分:1)

我想出了两种方法来包含AAR进行编译。

Estimote SDK的具体方法是将此行添加到android/app/build.gradle

dependencies {
    ...
     compile 'com.estimote:sdk:1.0.3:release@aar'
}

请注意,对于SDK的发布版本,我的文档已经过时了,因此要弄清楚要使用的类和方法是很棘手的。

我在构建中包含AAR的另一种方式是以下更改:

创建文件夹android/libs,将AAR文件放在其中。

android/app/build.gradle

fileTree(dir: 'libs', include: '**/*.aar')
    .each { File file ->
        dependencies.add("compile", [
            name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, 
            ext: 'aar'
        ])
    }

完成后我就可以开始导入类和方法了。