如何在AndroidStudio项目中添加和使用AAR

Don*_*nic 4 java android build.gradle android-gradle-plugin aar

我正在尝试在我的android项目中使用自定义aar。我在StackOverflow和Web中找到了许多示例。许多构建失败,没有一个起作用。最清晰的网址是 http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/
最接近工作的地方。

这就是我所做的

  1. 从Ref.java成功创建了一个非常简单的AAR(Ref.aar)

    // Ref.java  
    package com.ramrod.Ref;  
    public class Ref {
        // Square an integer
        public static int
        square(int val) {
            return (val * val);
        }
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个测试项目(RefTest)

  3. 在RefTest / app下创建了文件夹“ libs”
  4. 将Ref.aar添加到库中
  5. File-> New-> New Module-> Import .JAR / .AAR包。
  6. 选择Ref.jar作为filename-> Finish(成功显示)。
  7. 修改后的build.gradle

    // build.gradle (Module: app)  
    
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 27  
        buildToolsVersion "27.0.3"
        defaultConfig {
            applicationId "com.ramrod.RefTest"
            minSdkVersion 11
            targetSdkVersion 15
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
        repositories {
            flatDir {
                dirs 'libs'
            }
        }
        dependencies {
            compile( name:'Ref', ext:'aar' )
       }
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  8. 同步build.gradle(全部)
  9. 在RefTest主要活动中的onCreate上添加了对Ref.aar方法(正方形)的引用。

    int sq = Ref.square( 2 );
    
    Run Code Online (Sandbox Code Playgroud)
  10. 生成->清理,然后生成->重建。
    产生此错误:找不到符号变量Ref

我敢肯定我在做些天真或愚蠢的事,但我看不到。
任何帮助表示赞赏。

Dim*_*vin 8

你应该:

1)创建aar库并将其放在libs目录中(不带 “文件->新建->新模块->导入.JAR / .AAR包”)

看图片

2)添加到build.gradle(模块:应用)

dependencies {
    ...
    implementation fileTree(include: ['*.aar'], dir: 'libs')
    ...

}
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用 Ref.square(int);

您的apk将在构建后包含:

在此处输入图片说明


Bha*_*ani 7

当您使用导入 aar/jar 选项从内置帮助工具导入 AAR 时,studio 会使用此 aar 创建一个模块。

所以在这个状态下你可以看到类似于下面提到的状态。当显示面板为 Android 时,

在此处输入图片说明

将面板模式更改为 Project 并打开 testaar ,您实际上可以看到模块的 build.gradle 文件和相应的 aar。

在此处输入图片说明

这就是为什么你的声明

compile( name:'Ref', ext:'aar' )
Run Code Online (Sandbox Code Playgroud)

没有工作。

要将这个 aar 添加到您的项目中(使用 import aar/jar 之后),您可以做的是首先将模块添加到 settings.gradle(项目设置文件)

include ':app', ':testaar'
Run Code Online (Sandbox Code Playgroud)

然后直接添加到你的应用级 build.gradle 文件中

implementation project(':testaar')
Run Code Online (Sandbox Code Playgroud)

2)另一种方法是

右键单击您的应用程序模块 -> 选择打开模块设置 -> 选择模块 -> 转到依赖项选项卡

PS 你也可以从 Build->Edit Libraries and Dependencies 打开这个窗口

你会遇到一个窗口,如下所示

在此处输入图片说明

单击小 + 图标,然后单击模块选项,最后添加所需的模块(testaar)

在此处输入图片说明

同步您的代码,瞧它现在就可以开始工作了。