使用 flatDirs 存储库添加 AAR 不再起作用

问题描述 投票:0回答:1

请注意,这不是 10 年前这个问题的重复:使用“flatDirs”将本地 .aar 文件添加到 Gradle 构建中不起作用,因为这曾经有用,但要注意避免

flatDirs
。我在使用 Gradle 8.9 迁移到 AGP 8.5.1 时遇到了这个问题 - 现在以前的方法显然已经过时了。因此,同时问题是:

如何在没有

*.aar
存储库的情况下将
flatDirs
添加到 Android 项目?

android gradle groovy dependencies aar
1个回答
0
投票

如果

AndroidManifest.xml
和资源不包含任何相关性,可以将
classes.jar
*.aar
提取到
libs
目录中。当手动添加清单条目和资源时,这仍然可能有效,该脚本只是不考虑任何这些。它期望
*.aar
文件位于
libs
目录中,其中还将放置
*.jar

// define Task dependency
tasks.named("preBuild") {
    dependsOn("extractAar")
}

// extract AAR files
tasks.register('extractAar') {
    doFirst {
        project.fileTree('libs').filter { it.name.endsWith('.aar') }.each { aar ->
            def outputDir = project.file("build/tmp/aarsToJars/${aar.name.replace('.aar', '')}/")
            copy {
                from zipTree(aar)
                include "**/classes.jar"
                into outputDir
            }
            if (outputDir.exists()) {
                copy {
                    from "${outputDir.path}/classes.jar"
                    into project.file("libs")
                    rename { String fileName ->
                        fileName.replace("classes", "${aar.name.replace('.aar', '')}")
                    }
                }
            }
        }
    }
}

输出将被默认的

libs
目录条目引用:

dependencies {
    implementation fileTree(include: ["*.jar"], dir: "libs")
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.