一个基于 MediaInfoLib 的 Android 库封装,提供全面的媒体文件分析能力。
在尝试将 MediaInfo 接入 Android 项目时,遇到了以下问题:
- Java 版本不兼容:原项目要求 JDK 21,但实际开发环境中使用的是 JDK 17,导致 AAR 文件无法编译。
- Kotlin 注解处理器版本冲突:Kotlin 版本与 KSP(Kotlin Symbol Processing)版本不匹配,构建时报出注解处理器相关的错误。
- 语言障碍:原项目文档全部为英文,对中文开发者不够友好。
因此,本仓库在原项目的基础上进行了 汉化,并贴出了详细的版本修改说明,方便需要使用不同 JDK 版本编译 AAR 文件的开发者参考。
完整的中文介绍与使用方法,请参阅:
其中包含:
- 库的特性介绍
- 安装配置(JitPack 仓库 + Gradle 依赖)
- 快速开始代码示例
- 高级用法(底层 API、多格式输出)
- 完整 Android Activity 示例
- 权限配置说明
- 支持的媒体格式列表
- 从源码构建的步骤
如果你需要使用不同的 JDK 版本或修改 Kotlin 注解处理器,以下是完整的配置点汇总。
需要改动 2 个文件,共 4 处:
1. mediainfo-lib/build.gradle
compileOptions {
sourceCompatibility JavaVersion.VERSION_21 // ← 改这里
targetCompatibility JavaVersion.VERSION_21 // ← 改这里
}
kotlinOptions {
jvmTarget = '21' // ← 改这里
}
VERSION_21可改为VERSION_17、VERSION_11等,jvmTarget对应改为'17'、'11'。
2. build.gradle(根目录)
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version'
⚠️ Kotlin 版本与 JDK 版本有对应关系,需要确保兼容:
| JDK | 最低 Kotlin 版本 |
|---|---|
| 11 | 1.5+ |
| 17 | 1.8+ |
| 21 | 2.0+ |
1. build.gradle(根目录)
ext.kotlin_version = '2.1.21' // ← Kotlin 版本
plugins {
id 'com.google.devtools.ksp' version "$kotlin_version-2.0.1" apply false
// ↑ KSP 版本后缀
}KSP 版本格式:
{kotlin_version}-{ksp_release}。 例如 Kotlin2.0.21对应 KSP2.0.21-1.0.28。
2. mediainfo-lib/build.gradle
目前模块级只用了
kotlin-android,没有使用 KSP。如果要使用 KSP 注解处理器,需要添加:
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'com.google.devtools.ksp' // ← 添加 KSP 插件
}
dependencies {
// ksp 'com.example:processor:1.0' // ← 添加 KSP 处理器依赖
}3.1 Gradle 版本(gradle/wrapper/gradle-wrapper.properties)
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip不同 AGP 版本对 Gradle 有最低要求:
| AGP 版本 | 最低 Gradle |
|---|---|
| 8.4 | 8.6 |
| 8.7 | 8.9 |
| 8.11 | 8.14 |
3.2 AGP 版本(build.gradle 根目录)
classpath 'com.android.tools.build:gradle:8.11.2' // ← AGP
classpath 'com.android.tools.build:gradle-settings-api:8.11.2'AGP 也限定了支持的 JDK 范围,例如 AGP 8.x 需要 JDK 17+。
3.3 gradle.properties
org.gradle.jvmargs=-Xmx1536m // ← 可能需要增大内存| 想改什么 | 文件 | 关键字段 |
|---|---|---|
| Java 编译版本 | mediainfo-lib/build.gradle |
sourceCompatibility / targetCompatibility / jvmTarget |
| Kotlin 版本 | build.gradle(根) |
ext.kotlin_version |
| KSP 版本 | build.gradle(根) |
id 'com.google.devtools.ksp' version |
| 启用 KSP | mediainfo-lib/build.gradle |
添加 id 'com.google.devtools.ksp' 插件 |
| AGP 版本 | build.gradle(根) |
classpath 'com.android.tools.build:gradle' |
| Gradle 版本 | gradle/wrapper/gradle-wrapper.properties |
distributionUrl |
| Gradle JVM 内存 | gradle.properties |
org.gradle.jvmargs |
💡 核心原则:Kotlin 版本 ↔ KSP 版本 ↔ JDK 版本 ↔ AGP 版本 ↔ Gradle 版本 五者需要匹配。改一个通常要联动改其他的。
本项目复刻自 marlboro-advance/mediainfoAndroid,感谢原作者的贡献。
同时感谢以下上游项目:
- MediaInfoLib — MediaArea.net SARL 开发的核心媒体分析库
- ZenLib — 提供核心工具支持
本库基于 BSD-2-Clause 许可证发布。详情请参阅 LICENSE 文件。
MediaInfoLib 版权归 MediaArea.net SARL 所有。保留所有权利。