import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) id("kotlin-kapt") id("kotlin-parcelize") // id("maven-publish") // signing // id ("org.jreleaser") version "1.20.0"//JReleaser now has support for publishing via the Central Publisher Portal and can be used via their Gradle plugin integration. // id("org.jetbrains.dokka") version "2.0.0" // kotlin("jvm") version "2.1.0" // Generates HTML documentation id("org.jetbrains.dokka") version "2.1.0" // Generates Javadoc documentation id("org.jetbrains.dokka-javadoc") version "2.1.0" } android { namespace = "com.cusc.map" compileSdk = 35 defaultConfig { minSdk = 29 version = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } buildFeatures { // dataBinding = true viewBinding = true } android.libraryVariants.all { outputs.all { if (this is com.android.build.gradle.internal.api.LibraryVariantOutputImpl) { // val config = project.android.defaultConfig // val versionName = config.versionName // val formatter = DateTimeFormatter.ofPattern("yyyy_MM_dd_HHmm") // val createTime = LocalDateTime.now().format(formatter) outputFileName = "cusc_map_${version}.aar" } } } } dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.constraintlayout) implementation(libs.androidx.activity) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) // implementation("org.jetbrains.dokka:android-documentation-plugin:2.1.0") dokkaJavadocPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:2.1.0") api(project(":maplibs")) // Webview交互 api("com.github.lzyzsd:jsbridge:1.0.4") //四维高精地图依赖 // implementation("daohang.tingche.unityLibrary:adas:1.0") //高德 // implementation("com.amap.api:navi-3dmap:latest.integration") // implementation("com.amap.api:search:latest.integration") //网络 implementation("com.squareup.okhttp3:okhttp:3.12.0") implementation("com.google.code.gson:gson:2.8.6") // 权限请求框架 implementation("com.guolindev.permissionx:permissionx:1.8.1") // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") //fragment-ktx implementation("androidx.fragment:fragment-ktx:1.8.0") } dokka { dokkaPublications.javadoc { moduleName.set("CuscMapSDK") // moduleVersion.set(project.version.toString()) description="Android 地图SDK" // Standard output directory for HTML documentation // outputDirectory.set(layout.buildDirectory.dir("dokka/html")) failOnWarning.set(false) suppressInheritedMembers.set(false) suppressObviousFunctions.set(true) offlineMode.set(true) dokkaSourceSets { configureEach { includes.from("package-info.md") skipEmptyPackages.set(false) skipDeprecated.set(false) suppressGeneratedFiles.set(true) jdkVersion.set(17) documentedVisibilities.set(setOf(VisibilityModifier.Public)) // OR documentedVisibilities(VisibilityModifier.Public) perPackageOption { matchingRegex.set(".*map2d\\.amap|.*map2d\\.mine") suppress.set(true)//suppress = true:完全禁用匹配包的文档生成 } perPackageOption { matchingRegex.set(".*core.*|.*fragments.*|.*scenario\\.mine.*|overlay") suppress.set(true)//suppress = true:完全禁用匹配包的文档生成 } perPackageOption { matchingRegex.set(".*ui\\.dialog.*|.*ui\\.widget.*|.*utils.*|.*vms.*") suppress.set(true)//suppress = true:完全禁用匹配包的文档生成 // skipDeprecated.set(false) // reportUndocumented.set(false) // documentedVisibilities.set( // setOf( // VisibilityModifier.Public, // VisibilityModifier.Private, // VisibilityModifier.Protected, // VisibilityModifier.Internal, // VisibilityModifier.Package // )) } } } } } // 在 build.gradle.kts 中添加 tasks.register("generateOverviewTree") { group = "documentation" description = "Generate overview-tree.html for Javadoc" doLast { val outputDir = file("${layout.buildDirectory.get()}/dokka/javadoc") outputDir.mkdirs() val treeFile = outputDir.resolve("overview-tree.html") // 读取现有的包信息 val packages = mutableListOf>().apply { add("com.cusc.map.location" to "定位包,提供定位功能") add("com.cusc.map.map2d" to "二维地图包,提供栅格地图显示、覆盖物绘制等功能") add("com.cusc.map.map2d.cdata" to "二维地图包数据业务实体") add("com.cusc.map.map2d.inters" to "二维地图接口包") add("com.cusc.map.map3d" to "三维地图包,基于3dtitle的地图绘制") add("com.cusc.map.parkroad" to "车道局部地图包") add("com.cusc.map.scenario" to "业务相关包,提供车辆、感知物、预警管理") add("com.cusc.map.scenario.bean" to "业务数据实体类") add("com.cusc.map.ui" to "界面相关包,包含地图底图") } // 构建包层次结构 val packageTree = mutableMapOf>>() packages.forEach { (pkg, desc) -> val parts = pkg.split(".") if (parts.size > 3) { // 假设 com.cusc.map 是根包 val parent = parts.take(3).joinToString(".") val child = pkg packageTree.getOrPut(parent) { mutableListOf() }.add(child to desc) } } // 生成HTML内容 val htmlContent = """ mapapi 1.0.0
  • com.cusc.map
      ${packages.joinToString("") { (pkg, desc) -> val pkgPath = pkg.replace(".", "/") """
    • $pkg $desc
    • """ }}
""".trimIndent() treeFile.writeText(htmlContent) println("Generated overview-tree.html at: ${treeFile.absolutePath}") } } //group = "msmap" //version = "1.0" //publishing { // publications { // create("maplib") { // groupId = "io.github.killcow" // artifactId = "ms-map" // version = "1.0.0" // // // 如果是Android库模块 // artifact(layout.buildDirectory.dir("outputs/aar/maplibrary-release.aar")) // // 如果是Java库模块 // // artifact("$buildDir/libs/your-library.jar") // //发布到本地仓库 // repositories { // maven { // name = "MyRepo" // url = uri(layout.buildDirectory.dir("repo")) // } // // } // } // } //} //signing { //// val signingKey: String=findProperty("signing.keyId") // val signingPassword: String? by project // useInMemoryPgpKeys(findProperty("signing.keyId").toString(), findProperty("signing.password").toString()) //// // sign(publishing.publications["maplib"]) //}