Skip to content

azxcvn/MediaInfo-Android-CN

Repository files navigation

MediaInfo for Android

一个基于 MediaInfoLib 的 Android 库封装,提供全面的媒体文件分析能力。


背景

在尝试将 MediaInfo 接入 Android 项目时,遇到了以下问题:

  • Java 版本不兼容:原项目要求 JDK 21,但实际开发环境中使用的是 JDK 17,导致 AAR 文件无法编译。
  • Kotlin 注解处理器版本冲突:Kotlin 版本与 KSP(Kotlin Symbol Processing)版本不匹配,构建时报出注解处理器相关的错误。
  • 语言障碍:原项目文档全部为英文,对中文开发者不够友好。

因此,本仓库在原项目的基础上进行了 汉化,并贴出了详细的版本修改说明,方便需要使用不同 JDK 版本编译 AAR 文件的开发者参考。


使用方法

基础使用

完整的中文介绍与使用方法,请参阅:

👉 介绍与使用方法.md

其中包含:

  • 库的特性介绍
  • 安装配置(JitPack 仓库 + Gradle 依赖)
  • 快速开始代码示例
  • 高级用法(底层 API、多格式输出)
  • 完整 Android Activity 示例
  • 权限配置说明
  • 支持的媒体格式列表
  • 从源码构建的步骤

修改 Java 版本与注解处理器

如果你需要使用不同的 JDK 版本或修改 Kotlin 注解处理器,以下是完整的配置点汇总。

一、修改 Java 版本

需要改动 2 个文件,共 4 处

1. mediainfo-lib/build.gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_21  // ← 改这里
    targetCompatibility JavaVersion.VERSION_21  // ← 改这里
}

kotlinOptions {
    jvmTarget = '21'  // ← 改这里
}

VERSION_21 可改为 VERSION_17VERSION_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+

二、修改 Kotlin 注解处理器(KSP)

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}。 例如 Kotlin 2.0.21 对应 KSP 2.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 所有。保留所有权利。

About

MediaInfo 的 Android 封装库(中文版),支持自定义 JDK 版本编译,提供视频、音频等媒体文件的详细技术信息分析能力。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors