
The main demo app was still targeting API 29 to avoid scoped storage restrictions. It is now updated to 34 (like the rest of the demo apps) and handles scoped storage as it should handle it. More specifically: - We need to request READ_MEDIA_... permissions instead of READ_EXTERNAL_STORAGE from API33. - The legacy scoped storage opt-out can be removed - READ_MEDIA_... permissions don't allow arbitrary file access if the file doesn't end in a typical media file extension, so this change adds a remark on the guide page to place samples in the app-specific directory. - We also don't have to request permissions for the app-specific directories. - Custom json files can't be placed in arbitray local locations because they don't end in a media file extension, as there is no way we can request a permission to load them. This means we can remove the storage request logic in SampleChooserActivity. Issue: google/ExoPlayer#6045 PiperOrigin-RevId: 549252474
96 lines
3.7 KiB
Groovy
96 lines
3.7 KiB
Groovy
// Copyright (C) 2016 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
apply from: '../../constants.gradle'
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
|
|
android {
|
|
namespace 'androidx.media3.demo.main'
|
|
|
|
compileSdkVersion project.ext.compileSdkVersion
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
defaultConfig {
|
|
versionName project.ext.releaseVersion
|
|
versionCode project.ext.releaseVersionCode
|
|
minSdkVersion project.ext.minSdkVersion
|
|
targetSdkVersion project.ext.appTargetSdkVersion
|
|
multiDexEnabled true
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
shrinkResources true
|
|
minifyEnabled true
|
|
proguardFiles = [
|
|
"proguard-rules.txt",
|
|
getDefaultProguardFile('proguard-android.txt')
|
|
]
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
debug {
|
|
jniDebuggable = true
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
// The demo app isn't indexed, doesn't have translations, and has a
|
|
// banner for AndroidTV that's only in xhdpi density.
|
|
disable 'GoogleAppIndexingWarning','MissingTranslation','IconDensities'
|
|
}
|
|
|
|
flavorDimensions "decoderExtensions"
|
|
|
|
productFlavors {
|
|
noDecoderExtensions {
|
|
dimension "decoderExtensions"
|
|
buildConfigField "boolean", "USE_DECODER_EXTENSIONS", "false"
|
|
}
|
|
withDecoderExtensions {
|
|
dimension "decoderExtensions"
|
|
buildConfigField "boolean", "USE_DECODER_EXTENSIONS", "true"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
|
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
|
implementation 'androidx.appcompat:appcompat:' + androidxAppCompatVersion
|
|
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
|
|
implementation 'com.google.android.material:material:' + androidxMaterialVersion
|
|
implementation project(modulePrefix + 'lib-exoplayer')
|
|
implementation project(modulePrefix + 'lib-exoplayer-dash')
|
|
implementation project(modulePrefix + 'lib-exoplayer-hls')
|
|
implementation project(modulePrefix + 'lib-exoplayer-rtsp')
|
|
implementation project(modulePrefix + 'lib-exoplayer-smoothstreaming')
|
|
implementation project(modulePrefix + 'lib-ui')
|
|
implementation project(modulePrefix + 'lib-datasource-cronet')
|
|
implementation project(modulePrefix + 'lib-exoplayer-ima')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-av1')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-ffmpeg')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-flac')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-opus')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-vp9')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-midi')
|
|
withDecoderExtensionsImplementation project(modulePrefix + 'lib-datasource-rtmp')
|
|
}
|
|
|
|
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
|