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
  • 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

方法

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

Project
	|-- Module1
	|--Module2
	|-- ...
./gradlew Module1:assembleRelease

成功后, 可以在: 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

同样的方法之前没有问题, 突然报错?
琢磨了下, 近期更新了系统, 开发工具, 还有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

方法2:

Project/gradle.properties

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

解决

补充

生成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 {
    // 添加库的依赖,如果有的话
}
  • 构建AAR文件:
    打开终端,导航到库项目的根目录,并执行以下Gradle构建命令:
./gradlew build

此命令将执行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')
}

你可能感兴趣的:(android,IDE,android,AAR,gradle,gradlew,jdk)