• Android Gradle 命令打包AAR


    平台

         Android Archive (AAR) 文件是一种特定于Android的存档文件格式,用于将Android库和资源打包成单个可重用的单元。AAR文件通常用于共享和分发Android库,以便其他Android应用项目可以轻松引用和使用这些库。
    AAR文件是一种便捷的方式,用于封装、共享和分发Android库和资源。它们是Android生态系统中的一种重要工具,有助于促进代码重用、模块化开发和更快的Android应用开发。

    • Ubuntu 20.04

    • Android Studio Giraffe | 2022.3.1 Patch 2

    Runtime version: 17.0.6+0-17.0.6b829.9-10027231 amd64
    VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
    Linux 5.15.0-84-generic
    GC: G1 Young Generation, G1 Old Generation
    Memory: 3072M
    Cores: 4
    Registry:
        external.system.auto.import.disabled=true
        ide.text.editor.with.preview.show.floating.toolbar=false
        ide.images.show.chessboard=true
    Current Desktop: ubuntu:GNOME
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • Gradle
    $ ./gradlew --v
    
    ------------------------------------------------------------
    Gradle 6.7.1
    ------------------------------------------------------------
    
    Build time:   2020-11-16 17:09:24 UTC
    Revision:     2972ff02f3210d2ceed2f1ea880f026acfbab5c0
    
    Kotlin:       1.3.72
    Groovy:       2.5.12
    Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
    JVM:          17.0.8.1 (Private Build 17.0.8.1+1-Ubuntu-0ubuntu120.04)
    OS:           Linux 5.15.0-84-generic amd64
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    方法

         要使用命令行编译生成AAR文件,你需要使用Gradle构建工具和相应的构建脚本。
    本文基于现有的AndroidStudio 项目, 首先看下文件结构

    Project
    	|-- Module1
    	|--Module2
    	|-- ...
    
    • 1
    • 2
    • 3
    • 4
    ./gradlew Module1:assembleRelease
    
    • 1

    成功后, 可以在: Module1/build/outputs/aar/Module1-release.aar


    错误1

    > Task :Module1:compileReleaseJavaWithJavac FAILED
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':Module1:compileReleaseJavaWithJavac'.
    > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x5e4091b4) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x5e4091b4
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 3s
    11 actionable tasks: 1 executed, 10 up-to-date
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    同样的方法之前没有问题, 突然报错?
    琢磨了下, 近期更新了系统, 开发工具, 还有JDK, 当前是JDK17, 尝试替换回JDK11, 参考:
    How do I tell Gradle to use specific JDK version?

    方法1:

    ./gradlew Module1:assembleRelease -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64
    
    • 1

    方法2:

    Project/gradle.properties

    org.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64
    
    • 1

    解决

    补充

    生成AAR文件的一般步骤(来自GPT):

    • 创建Android库项目:
      首先,创建一个Android库项目,该项目将包含你的库代码和资源。你可以使用Android Studio创建项目,或者手动创建一个包含build.gradle文件的项目目录。

    • 创建build.gradle文件:
      在库项目的根目录下,创建一个名为build.gradle的Gradle构建脚本。下面是一个简单的示例:

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 30
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
        }
    }
    
    dependencies {
        // 添加库的依赖,如果有的话
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 构建AAR文件:
      打开终端,导航到库项目的根目录,并执行以下Gradle构建命令:
    ./gradlew build
    
    • 1

    此命令将执行Gradle构建,生成AAR文件。生成的AAR文件将位于your-library-project/build/outputs/aar/目录中,其中your-library-project是你的库项目的目录名。

    • 使用生成的AAR文件:
      你可以将生成的AAR文件用于其他Android应用项目。要使用AAR文件,将其复制到目标项目的libs目录中,并在目标项目的build.gradle文件中添加以下依赖:
    dependencies {
        implementation files('libs/your-library-name.aar')
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    C语言--程序环境和预处理(宏)
    elasticsearch命令大全
    文献综述怎么写?(以利用Zotero的文献管理软件为例)
    为何互联网大厂都在采用蓝绿发布、滚动发布、灰度发布?
    leetcode弹簧板
    Centos7安装部署openLDAP并springboot集成openLDAP
    【Python 实战基础】Pandas如何移除包含空值的行
    Transformer英语-法语机器翻译实例
    python实例 - 猜数字游戏
    【数据结构初阶】九、排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)
  • 原文地址:https://blog.csdn.net/ansondroider/article/details/133790581