android - 与源代码一起发布 Android Kotlin 库
问题描述
我想发布一个带有源代码的库。
我的图书馆项目结构
:library:
└── src
└── main
└── kotlin
└── <package>
└── MyLibrary.kt
gradle.kts
plugins {
...
id("maven-publish")
}
android {
...
// sourceSets{} block is not present as new AGP automatically recognises "src/main/kotlin" as kotlin source
...
}
project.afterEvaluate {
publishing {
publications {
register<MavenPublication>("release") {
groupId = mGroupId
artifactId = mArtifactId
version = mVersion
from(components["release"])
artifact(tasks.getByName("androidReleaseSourcesJar"))
}
}
}
}
tasks.register("androidReleaseSourcesJar", Jar::class) {
archiveClassifier.set("sources")
// Can't refer to `kotlin.srcDirs` but `java.srcDirs` works fine
from(android.sourceSets["release"].kotlin.srcDirs)
}
我在线上遇到错误
from(android.sourceSets["release"].kotlin.srcDirs)
我如何获得对所有 sourceSet(kotlin + java) 的引用,如果不是那么只有 kotlin?
AGP 版本:7.1.0-beta01
解决方案
我不确定这是否是 Gradle Kotlin DSL 中的错误。但是我们做了以下变通方法来访问 Kotlin 源目录:
val kotlinSrcDirs = (android.sourceSets["release"].kotlin.srcDirs() as com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet).srcDirs
推荐阅读
- sql - 在窗口函数中计数不同
- django - 如何阻止来自未知域/IP 对我的 REST API 的调用?
- javascript - 调用 post 方法未传递字符串数组
- python - 使用 mplcursors 为同一图上的多个数据集添加标签
- google-chrome - 有没有办法将 chrome 扩展的 `chrome.tabs` 映射到 puppeteer 的 browser.pages()?
- javascript - 创建服务。从视图中提取逻辑到纯 React 中的单独文件
- python - raise RuntimeError('You must compile your model before using it.') in Keras at fit.generator
- amazon-web-services - 拆分变量地图列表(terraform)
- python - 如何在 Python 3 中将字节转换为字符串以连接(序列化数据,签名)
- highcharts - 具有 Null 值的 Highcharts 数据分组