You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scala/Java项目中使用AAR类型的Maven依赖

Scala项目导入AAR格式Maven依赖的解决方案

AAR是Android平台专属的归档格式,除JVM字节码外还包含资源、Manifest、原生库等内容,普通JVM Scala项目默认不支持解析该格式,因此无法直接读取内部的类。下面提供两种可行方案,同时支持构建流程自动转换:

方案1:手动提取JAR(临时调试用)

  • 从本地Maven缓存找到下载完成的AAR文件,默认缓存路径为~/.m2/repository/下对应依赖的groupId/artifactId/version目录
  • AAR本质为ZIP压缩包,直接解压后根目录下的classes.jar就是存储类字节码的文件,将该JAR手动导入项目即可临时使用
  • 注意:如果原AAR依赖JNI原生库、Android专属API或资源文件,提取的JAR在非Android环境运行会抛出异常,仅适合纯JVM实现的逻辑类使用

方案2:构建流程自动转换(长期稳定方案)

sbt构建(Scala项目主流构建工具)

通过sbt-aar插件可以自动完成AAR下载、解压、JAR导入全流程:

  1. 在project/plugins.sbt中添加插件配置:
addSbtPlugin("com.hochgi" % "sbt-aar" % "1.2.0")
  1. 在build.sbt中启用插件并声明AAR格式依赖:
enablePlugins(AarPlugin)

// 替换为实际的AAR依赖坐标
libraryDependencies += "com.example" % "demo-lib" % "1.0.0" artifacts Artifact("demo-lib", "aar", "aar")
  1. 执行sbt compile时插件会自动将AAR内的classes.jar加入编译类路径,可直接导入对应类无需额外操作

Maven构建

通过maven-dependency-plugin和build-helper-maven插件组合实现自动转换:

  1. 在pom.xml的build/plugins节点添加以下配置,替换其中的依赖坐标为实际AAR的坐标:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.6.0</version>
    <executions>
        <execution>
            <id>unpack-aar</id>
            <phase>initialize</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>com.example</groupId>
                        <artifactId>demo-lib</artifactId>
                        <version>1.0.0</version>
                        <type>aar</type>
                        <overWrite>false</overWrite>
                        <outputDirectory>${project.build.directory}/aar-extracted</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.4.0</version>
    <executions>
        <execution>
            <id>add-aar-jar-to-classpath</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-directory</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/aar-extracted/classes.jar</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 执行mvn compile时会自动完成AAR解压和JAR导入,无需手动操作

注意事项

  • 若AAR包含Android框架专属API(如Context、Activity相关类),即便提取JAR也无法在非Android环境正常运行,只能在Android Scala项目中使用
  • 若AAR包含资源文件,提取的JAR不会打包对应资源,调用依赖资源的逻辑会报错,需要额外处理资源导入逻辑

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:06:01