|
|
|
|
plugins {
|
|
|
|
|
id 'com.android.application'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def AppMajorVersion = 1
|
|
|
|
|
def AppMinorVersion = 0
|
|
|
|
|
def AppBuildNumber = 17
|
|
|
|
|
|
|
|
|
|
def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber
|
|
|
|
|
def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber
|
|
|
|
|
|
|
|
|
|
android {
|
|
|
|
|
namespace "com.xypower.mpremote"
|
|
|
|
|
compileSdk 33
|
|
|
|
|
|
|
|
|
|
defaultConfig {
|
|
|
|
|
applicationId "com.xypower.mpremote"
|
|
|
|
|
minSdk 24
|
|
|
|
|
targetSdk 28
|
|
|
|
|
versionCode AppVersionCode
|
|
|
|
|
versionName AppVersionName
|
|
|
|
|
|
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
|
externalNativeBuild {
|
|
|
|
|
cmake {
|
|
|
|
|
cppFlags "-std=c++11 -frtti -fexceptions"
|
|
|
|
|
arguments "-DENABLE_API=on", "-DENABLE_API_STATIC_LIB=on", "-DENABLE_TESTS=off", "-DENABLE_HLS=on", "-DENABLE_PLAYER=off", "-DENABLE_SERVER_LIB=on"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buildTypes {
|
|
|
|
|
release {
|
|
|
|
|
minifyEnabled false
|
|
|
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
compileOptions {
|
|
|
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
|
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
|
|
|
}
|
|
|
|
|
externalNativeBuild {
|
|
|
|
|
cmake {
|
|
|
|
|
path file('src/main/cpp/CMakeLists.txt')
|
|
|
|
|
version '3.18.1'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
android.applicationVariants.all { variant ->
|
|
|
|
|
variant.outputs.all { output ->
|
|
|
|
|
if (outputFileName.endsWith('.apk')) {
|
|
|
|
|
def buildTypeFlag = "dbg"
|
|
|
|
|
if(variant.buildType.name.equals('release')) {
|
|
|
|
|
buildTypeFlag = "rel"
|
|
|
|
|
}
|
|
|
|
|
def fileName = "mprmt_v${defaultConfig.versionName}_${buildTypeFlag}_${new Date(System.currentTimeMillis()).format("yyyyMMdd")}.apk"
|
|
|
|
|
outputFileName = fileName
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buildFeatures {
|
|
|
|
|
viewBinding true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
packagingOptions {
|
|
|
|
|
exclude 'META-INF/LICENSE-notice.md'
|
|
|
|
|
exclude 'META-INF/LICENSE.md'
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
ndkVersion '25.2.9519653'
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
|
|
|
|
|
|
implementation 'androidx.appcompat:appcompat:1.3.0'
|
|
|
|
|
implementation 'com.google.android.material:material:1.4.0'
|
|
|
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
|
|
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// implementation 'io.vov.vitamio:vitamio:4.2.2'
|
|
|
|
|
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer:2.14.0' // 添加 ExoPlayer 库
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // ExoPlayer 核心库
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-core:2.19.1'
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-hls:2.19.1'
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-dash:2.19.1'
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.19.1'
|
|
|
|
|
//
|
|
|
|
|
//// RTSP 官方扩展
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-rtsp:2.19.1'
|
|
|
|
|
//
|
|
|
|
|
//// RTMP 第三方扩展 (基于ExoPlayer 2.19.1)
|
|
|
|
|
// implementation 'com.github.Piasy:ExoPlayerRtmp:v2.19.1.0'
|
|
|
|
|
//
|
|
|
|
|
//// H.265(HEVC) 和 AV1 解码器支持
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-codec-av1:2.19.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// implementation "androidx.media3:media3-exoplayer:1.1.1"
|
|
|
|
|
// implementation "androidx.media3:media3-exoplayer-dash:1.1.1"
|
|
|
|
|
// implementation "androidx.media3:media3-ui:1.1.1"
|
|
|
|
|
// implementation "androidx.media3:media3-datasource-rtmp:1.1.1"
|
|
|
|
|
// implementation ("androidx.media3:media3-exoplayer-rtsp:1.1.1"){
|
|
|
|
|
// exclude group: 'com.google.android.exoplayer', module: 'exoplayer-core'
|
|
|
|
|
// }
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder:1.1.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Media3 统一版本
|
|
|
|
|
// implementation "androidx.media3:media3-exoplayer:1.7.1"
|
|
|
|
|
// implementation "androidx.media3:media3-exoplayer-rtsp:1.7.1"
|
|
|
|
|
// implementation "androidx.media3:media3-ui:1.7.1"
|
|
|
|
|
// implementation "androidx.media3:media3-datasource-rtmp:1.7.1"
|
|
|
|
|
|
|
|
|
|
// // 排除所有旧版 ExoPlayer(关键!)
|
|
|
|
|
// configurations.all {
|
|
|
|
|
// exclude group: 'com.google.android.exoplayer', module: 'exoplayer-core'
|
|
|
|
|
// exclude group: 'com.google.android.exoplayer', module: 'exoplayer-dash'
|
|
|
|
|
// exclude group: 'com.google.android.exoplayer', module: 'exoplayer-ui'
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder-extension-ffmpeg:1.1.0'
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder-extension-ffmpeg-full:1.1.1'
|
|
|
|
|
// 完整版(包含所有 FFmpeg 解码器,推荐用于 H.265/HEVC)
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder-extension-ffmpeg-full:1.1.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // 使用 BOM 管理 Media3 版本
|
|
|
|
|
// implementation platform('androidx.media3:media3-bom:1.1.1')
|
|
|
|
|
//
|
|
|
|
|
// // 引入具体依赖(无需指定版本号)
|
|
|
|
|
// implementation 'androidx.media3:media3-exoplayer'
|
|
|
|
|
// implementation 'androidx.media3:media3-exoplayer-dash'
|
|
|
|
|
// implementation 'androidx.media3:media3-ui'
|
|
|
|
|
// implementation 'androidx.media3:media3-datasource-rtmp'
|
|
|
|
|
// implementation 'androidx.media3:media3-exoplayer-rtsp'
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder'
|
|
|
|
|
// implementation 'androidx.media3:media3-decoder-extension-ffmpeg-full'
|
|
|
|
|
|
|
|
|
|
////// IJKPlayer相关库
|
|
|
|
|
// implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
|
|
|
|
|
// implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8' // ARMv7a 架构
|
|
|
|
|
// implementation 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8' // ARM64 架构
|
|
|
|
|
// implementation 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8' // x86 架构
|
|
|
|
|
//
|
|
|
|
|
// implementation 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
|
|
|
|
|
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-core:2.18.1'
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-hls:2.18.1' // HLS 支持
|
|
|
|
|
// implementation 'com.google.android.exoplayer:exoplayer-dash:2.18.1' // DASH 支持
|
|
|
|
|
// RTSP 支持需额外添加扩展
|
|
|
|
|
// implementation 'com.googlecode.rtsp-client:rtsp-client:2.1.0'
|
|
|
|
|
// implementation 'com.github.videolan:vlc-android-sdk:3.3.10'
|
|
|
|
|
// implementation 'com.github.videolan:libvlc-android:3.4.11'
|
|
|
|
|
// 使用更具体的ABI过滤,减少APK大小
|
|
|
|
|
// implementation 'com.github.videolan:libvlc-android:3.4.11:arm64-v8a'
|
|
|
|
|
// 或者包含所有ABI
|
|
|
|
|
// implementation 'com.github.videolan:libvlc-android:3.4.11:all'
|
|
|
|
|
|
|
|
|
|
// implementation 'org.videolan.android:libvlc-all:4.0.0-eap9'
|
|
|
|
|
implementation 'org.videolan.android:libvlc-all:3.6.0'
|
|
|
|
|
|
|
|
|
|
implementation 'com.github.bumptech.glide:glide:4.16.0'
|
|
|
|
|
// https://mvnrepository.com/artifact/dev.mobile/dadb
|
|
|
|
|
implementation 'dev.mobile:dadb:1.2.8'
|
|
|
|
|
implementation files('libs/common-release.aar')
|
|
|
|
|
// implementation project(path: ':dadb')
|
|
|
|
|
// implementation 'org.videolan.android:libvlc-all:3.4.5'
|
|
|
|
|
testImplementation 'junit:junit:4.13.2'
|
|
|
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
|
|
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|