代码之家  ›  专栏  ›  技术社区  ›  DontPanic

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

  •  4
  • DontPanic  · 技术社区  · 7 年前

    我正在尝试在我的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);
          }
      }  
      
    2. 已创建测试项目(reftest)

    3. 已在reftest/app下创建文件夹“libs”
    4. 在LIBS中增加了参考AAR。
    5. 文件->新建->新建模块->导入.jar/.aar包。
    6. 选择ref.jar作为文件名->完成(显示成功)。
    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' )
         }
      }  
      
    8. 同步build.gradle(全部)
    9. 在reftest主活动中oncreate添加了对ref.aar方法(square)的引用。

      int sq = Ref.square( 2 );
      
    10. 生成->清除,然后生成->重新生成。
      这产生了 错误:找不到符号变量引用

    我肯定我在做一些幼稚的事情,或者只是简单的蠢事,但我看不见。
    感谢您的帮助。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Paamand    6 年前

    当使用import aar/jar选项从内置助手工具导入aar时, Studio使用此AAR创建模块。

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

    将面板模式更改为Project并打开测试版,您实际上可以看到模块和相应AAR的build.grade文件。

    这就是为什么你的陈述

    编译(名称:'Ref',外部:'aar')

    不工作。

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

    include':app'、':testar'
    

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

    实现项目(“:testar”)
    

    2)另一种方法是

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

    p.s您也可以从build打开此窗口->编辑库和依赖项

    你会从下面的窗户进来

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

    同步您的代码,Voila它将立即开始工作。

    与下面提到的状态类似的东西。 当显示面板为Android时,

    enter image description here

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

    enter image description here

    这就是为什么你的陈述

    compile( name:'Ref', ext:'aar' )
    

    不工作。

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

    include ':app', ':testaar'
    

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

    implementation project(':testaar')
    

    2)另一种方法是

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

    p.s您也可以从build打开此窗口->编辑库和依赖项

    你会从下面的窗户进来

    enter image description here

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

    enter image description here

    同步你的代码,瞧,它现在开始工作。

        2
  •  7
  •   Dima Kozhevin Yogeshwar Suvarnakar    7 年前

    你应该:

    1)创建 aar library,然后将其放入 libs directory( without “file->new->new module->import.jar/.aar package”)。

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

    依赖关系{ … 实现文件树(包括:'*.aar'],dir:'libs') … }

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

    您的APK将包含生成后:

    >新建模块->导入.jar/.aar包“)

    see picture

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

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

    之后你可以用Ref.square(int);

    您的APK将包含以下内容:

    enter image description here