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

Jitpack构建成功但无有效Jar,Android库无法导入类

Android Kotlin库Jitpack构建失败(无可用类文件)问题解决

问题复盘

  1. 初始构建:Jitpack提示构建成功,但仅生成sources.jar和pom文件,无编译后的类文件包;添加依赖implementation 'com.github.crylent:midilib:fbcf4f6c1e'后,项目同步成功但无法导入库类、External Libraries中无该库。
  2. 尝试修复:在jitpack.yml中添加install: - mvn install后生成Jar,但Jar内为未编译的.kt源码,依旧无法使用。

核心原因

  • Jitpack对Android库的默认构建逻辑未触发编译产物生成,仅打包了源码;
  • mvn install是Maven生态的命令,无法识别Android/Kotlin的编译流程,直接将源码打包成Jar,未执行Kotlin编译生成.class文件。

解决方案

针对Android Kotlin库,需用Gradle的maven-publish插件配置正确的发布流程,替代Maven命令:

1. 配置Library模块的build.gradle.kts(或build.gradle)

添加maven-publish插件,并配置发布产物关联Android的release组件:

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    id("maven-publish") // 必须添加
}

android {
    compileSdk = 33 // 替换为你的compileSdk版本
    defaultConfig {
        minSdk = 21 // 替换为你的minSdk版本
        targetSdk = 33
        versionCode = 1
        versionName = "1.0"
    }

    // 确保Kotlin编译为兼容的字节码
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

// 配置发布规则
afterEvaluate {
    publishing {
        publications {
            create<MavenPublication>("release") {
                from(components["release"])
                // 可选:显式配置坐标,Jitpack会自动覆盖,但可提前定义
                groupId = "com.github.crylent"
                artifactId = "midilib"
                version = "fbcf4f6c1e"
            }
        }
    }
}

2. 修改jitpack.yml,使用Gradle构建发布

移除mvn install,改用Gradle的发布任务:

jdk: openjdk11
install:
  - ./gradlew publishToMavenLocal

(若项目使用旧版Gradle,可替换为./gradlew assemble publish)

3. 重新触发Jitpack构建

在Jitpack控制台选择对应commit(fbcf4f6c1e)重新构建,构建完成后检查产物列表,应包含midilib-fbcf4f6c1e.aar(Android库标准产物)、sources.jar和pom文件。

4. 验证依赖使用

重新在项目中添加依赖并同步Gradle,此时External Libraries会显示该库,且可正常导入库内的Kotlin类。

关键提示

  • Android库优先生成.aar文件,Jitpack会自动处理aar的依赖导入,无需强行生成jar;
  • 不要用Maven命令处理Android/Kotlin项目,Maven无法识别Android的编译插件和Kotlin编译流程;
  • 确保kotlinOptions的jvmTarget与项目的Java版本兼容,避免字节码不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:52:35