Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc-android
  • thresh/vlc-android
  • Dekans/vlc-android
  • robUx4/vlc-android
  • tguillem/vlc-android
  • Corbax/vlc-android
  • judeosby/vlc-android
  • chouquette/vlc-android
  • washingtonmurphy93/vlc-android
  • wipawanbeadklang540/vlc-android
  • xcorail/vlc-android
  • Aza/vlc-android
  • Skantes/vlc-android
  • filipjares/vlc-android
  • kazemihabib/vlc-android
  • amq10x/vlc-android
  • qadrian370/vlc-android
  • shivanshs9/vlc-android
  • vitaliyg2/vlc-android
  • orgads/vlc-android
  • rom1v/vlc-android
  • evidence/vlc-android
  • lk888/vlc-android
  • Klaus81/vlc-android
  • EwoutH/vlc-android
  • XilasZ/vlc-android
  • pawelpablo1975/vlc-android
  • uae2ae/vlc-android
  • Garf/vlc-android
  • abetatsunori7/vlc-android
  • ePirat/vlc-android
  • magsoft/vlc-android
  • quink/vlc-android
  • Ektos974/vlc-android
  • CymGen30/vlc-android
  • b1ue/vlc-android
  • alessiavalenti8/vlc-android
  • bars27101982/vlc-android
  • billybanda18/vlc-android
  • dklvip/vlc-android
  • sherylynn/vlc-android
  • ramcoach5/vlc-android
  • takise/vlc-android
  • peibolovedie/vlc-android
  • AMHeijboer/vlc-android
  • dahburj/vlc-android
  • gobennyb/vlc-android
  • masripmasrip824/vlc-android
  • bubu/vlc-android
  • tmk907/vlc-android
  • gorbahaaa/vlc-android
  • govind3321/vlc-android
  • jamieboyer42818/vlc-android
  • mrtakilapop/vlc-android
  • kazikarter90/vlc-android
  • chunyie771/vlc-android
  • nop404/vlc-android
  • hcalzazperz/vlc-android
  • zagwojtek69/vlc-android
  • nikonnick24/vlc-android
  • gmohiuddin215/vlc-android
  • stheinthan31/vlc-android
  • rogelioloreto29/vlc-android
  • philippestcyr5/vlc-android
  • Happyheather20/vlc-android
  • jimbobmcgee/vlc-android
  • mohwie/vlc-android
  • HeartBeat1608/vlc-android
  • jahan/vlc-android
  • Kevo1987/vlc-android
  • rrangel3584/vlc-android
  • xfridrich/vlc-android
  • devswami23/vlc-android
  • Isira-Seneviratne/vlc-android
  • PartyPhone22/vlc-android
  • kmajeshkrishnan/vlc-android
  • ramirotorresjr/vlc-android
  • aaronsalas469/vlc-android
  • arnan.np31/vlc-android
  • hkosacki/vlc-android
  • mg0691872/vlc-android
  • louregni/vlc-android
  • ritmapp/vlc-android
  • diegofn/vlc-android
  • s-ayush2903/vlc-android
  • chrisbohn1984/vlc-android
  • alexandre-janniaux/vlc-android
  • optimumpr/vlc-android
  • chirag-jn/vlc-android
  • e9ab98e991ab/vlc-android
  • suvDev/vlc-android
  • killthelord/vlc-android
  • Phoenix/vlc-android
  • soriyallc/vlc-android
  • tda1009/vlc-android
  • rhstone/vlc-android
  • ltnokiago/vlc-android
  • elbrujo1987/vlc-android
  • m1s4k1/vlc-android
  • mdc/vlc-android
  • arnaudj/vlc-android
  • abhinavmarwaha/vlc-android
  • dali546/vlc-android
  • Jeffset/vlc-android
  • megan30/vlc-android
  • lizhengdao/vlc-android
  • YajTPG/vlc-android
  • halcyon/vlc-android
  • ilya.yanok/vlc-android
  • jeramydhallmon/vlc-android
  • tijoemecano77/vlc-android
  • cjcj125125/vlc-android
  • dejan2609/vlc-android
  • JATIN2111999/vlc-android
  • imrohitkumar/vlc-android
  • sagudev/vlc-android
  • ILoveLin/vlc-android
  • tfighiera/vlc-android
  • snehil101/vlc-android
  • MKornelsen/vlc-android
  • m/vlc-android
  • core1024/vlc-android
  • vadimdolgachev/vlc-android
  • Kk77539/vlc-android
  • linzj/vlc-android
  • dantalian-pv/vlc-android
  • admkhalid/vlc-android
  • yaron/vlc-android
  • kn21091974/vlc-android
  • mylove1302/vlc-android
  • roblav96/vlc-android
  • alabiaga/vlc-android
  • kmnaveen101/vlc-android
  • nikiforoff1407/vlc-android
  • Android-Jester/vlc-android
  • frieda.rtwski/vlc-android
  • glaciers7506/vlc-android
  • rahul-gill/vlc-android
  • gaoxugang/vlc-android
  • Rishavgupta12345/vlc-android
  • dinho991556460/vlc-android
  • lighterowl/vlc-android
  • mary-kate/vlc-android
  • adnank20216/vlc-android
  • anthonylgutierrez79/vlc-android
  • Heliottw/vlc-android
  • mu1zix.ft3/vlc-android
  • yvesmaltais1212/vlc-android
  • ereme/vlc-android
  • jhonypalomino829/vlc-android
  • mx1up/vlc-android
  • sjwaddy/vlc-android
  • MohitMandalia/vlc-android
  • temaershov/vlc-android
  • js6pak/vlc-android
  • mishikallu/vlc-android
  • irfanmumtaz008/vlc-android
  • smurfohrachie/vlc-android
  • Goooler/vlc-android
  • eldo203050/vlc-android
  • dejesuszeus99/vlc-android
  • mfkl/vlc-android
  • Samfun75/vlc-android
  • markg85/vlc-android-ipfs
  • doktamelek911/vlc-android
  • wikwity/vlc-android
  • aangelmaker/vlc-android
  • krawczykradek119/vlc-android
  • ylz18180813163/vlc-android
  • galaxy9sx3/vlc-android
  • huajie2020/vlc-android
  • XuanTung95/vlc-android
  • kl/vlc-android
  • melihyolcu83/vlc-android
  • rt1shnik/vlc-android
  • jerryboy307/vlc-android
  • ikeuzochukwu6/vlc-android
  • patrikgolis/vlc-android
  • Ismavv/vlc-android
  • clementosumo/vlc-android
  • joshlamp66/vlc-android
  • nkmoyonyathiericyounge/vlc-android
  • DanTm99/vlc-android
  • Jeffrow41/vlc-android
  • fromphfr/vlc-android
  • 16project/vlc-android
  • Tomas8874/vlc-android
  • fixxxer87/vlc-android
  • sanjay/vlc-android
  • franciscojrp/vlc-android
  • cashellauswaus23/vlc-android
  • hengwu0/vlc-android
  • naythu2020rain/vlc-android
  • TongtengInhole/vlc-android
  • pupdoggy666/vlc-android
  • jcj921013/vlc-android
  • Gc6026/vlc-android
  • crijojc/vlc-android
  • mdrewight/vlc-android
  • davidhaywood0782/vlc-android
  • jbschtt/vlc-android
  • macfarlandcamel/vlc-android
  • syazairi/vlc-android
  • Commander01/vlc-android
  • baileyterry014/vlc-android
  • rodrickfranklin38/vlc-android
  • diego1245hernb/vlc-android
  • anton.canada/vlc-android
  • egazaekb/vlc-android
  • Marissa111113/vlc-android
  • jeinerbruno2/vlc-android
  • wehnie13/vlc-android
  • ozill87/vlc-android
  • legionfso/vlc-android
  • anazahirajoel/vlc-android
  • naomirojas1227/vlc-android
  • xbao/vlc-android
  • antoni.kozubek/vlc-android
  • pajela8482/vlc-android
  • karlfandango55/vlc-android
  • ruanbester07/vlc-android
  • chigita73/vlc-android
  • giu.pat6/vlc-android
  • Aura/vlc-android
  • marcwabo/vlc-android
  • contact.adgrafix/vlc-android
  • exlaverdad/vlc-android
  • simon.marquis88/vlc-android
  • youngkinsamantha421/vlc-android
  • edgard1161/vlc-android
  • agzx77/vlc-android
  • ha7204993/vlc-android
  • alghazwani.jar.6090/vlc-android
  • zrowton1206/vlc-android
  • darek1979513/vlc-android
  • matthiaskett18198/vlc-android
  • kubadyr77/vlc-android
  • romanstudeny1982/vlc-android
  • kumar107375/vlc-android
  • schong0525/vlc-android
  • Kt/vlc-android
  • jovelyn.esconde125/vlc-android
  • corriemacbarnard/vlc-android
  • apisbg91/vlc-android
  • yyusea/vlc-android
  • protechq88/vlc-android
  • rmangaraman/vlc-android
  • soutomikel/vlc-android
  • goregladaleksej5/vlc-android
  • tao/vlc-android
  • aruiz595/vlc-android
  • horvathpeter1202/vlc-android
  • litteh82/vlc-android
  • kerriochoa96/vlc-android
  • skshemul2022/vlc-android
  • popy/vlc-android
  • mizadpanahdev/vlc-android
  • pinarim2035/vlc-android
  • davidgooch1127/vlc-android
  • NyanCatTW1/vlc-android
  • Pendynurcahyo/vlc-android
  • fcartegnie/vlc-android
  • xiaoxiao921/vlc-android
  • rjtoell/vlc-android
  • devanshu6445/vlc-android
  • DopeDo69/vlc-android
  • quimsical/vlc-android
  • nickita.koltsoff/vlc-android
  • zeestander8617/vlc-android
  • alexsonarin06/vlc-android
  • minh189999h/vlc-android
  • JonnycatMeow/vlc-android
  • pup.ragnarok.1984/vlc-android2
  • jlcalderon13/vlc-android
  • franciszekk51214/vlc-android
  • yinsheng996/vlc-android
  • KenN3RD/vlc-android
  • leogps/vlc-android
  • alicuteo0407/vlc-android
  • MessirVoland/vlc-android
  • brett2uk/vlc-android
  • thomas.hermes/vlc-android
  • dgyudin/vlc-android
  • anuoshemohammad/vlc-android
  • r7truong/vlc-android
  • aaa1115910/vlc-android
  • arunkennedy78/vlc-android
  • nicholaszarra0069/vlc-android
  • georgipetrovdochev/vlc-android
  • Nikhil-z/vlc-android
  • misb1033/vlc-android
  • ktcoooot1/vlc-android
  • manmuc5/vlc-android
  • ahwhatisinttaken/vlc-android
  • m.nozka90/vlc-android
  • kabeermuhammad124319/vlc-android
  • ANGELONCE/vlc-android
  • manstabuk/vlc-android
  • yajcoca/vlc-android
  • dreamscell83/vlc-android
  • oldsssteveo/vlc-android
  • c0ff330k/vlc-android
  • ZhangXinmin528/vlc-android
  • lacsimarnald09/vlc-android
  • boykaisaac758/vlc-android
  • ooseidesmond/vlc-android
  • andresbott/vlc-android
  • yolandawanttoplay/vlc-android
  • lapaz17/vlc-android
  • sillyearl0138/vlc-android
  • NF-Repo/vlc-android
  • aaasg4001/vlc-android
  • mongia.puneet/vlc-android
  • slablaykon/vlc-android
  • Shabgardtanha1111/vlc-android
  • Benjamin_Loison/vlc-android
  • ashishami2002/vlc-android
  • Niram7777/vlc-android
  • Yashraj254/vlc-android
  • Choucroute_melba/vlc-android
  • Soete/vlc-android
  • MangalK/vlc-android
  • mohak2003/vlc-android
  • advait-0/vlc-android
  • McLP/vlc-android
  • fhuber/vlc-android
  • sami-sweng/vlc-android
  • josiahcarlson/vlc-android
  • mzych/vlc-android
329 results
Show changes
Commits on Source (1382)
Showing
with 334 additions and 112 deletions
# VLC
/libvlcjni
/vlc/
/toolchains/
application/app/src/main/assets/
......@@ -11,6 +13,10 @@ medialibrary/build
medialibrary/jni/obj
medialibrary/jni/libs
medialibrary/.libs
medialibrary/prefix
# Remote access
remoteaccess/**
# Android .so
/android-libs/**/*.so
......
......@@ -3,7 +3,7 @@
This default template purpose is to be used to report a bug you found in VLC for Android.
To use a different template, follow the instructions here: https://code.videolan.org/videolan/vlc-android/-/wikis/Create-an-issue-and-use-a-template
To use a different template, select it from the "Description" drop-down above. If you're having trouble finding it, see https://code.videolan.org/videolan/vlc-android/-/wikis/Create-an-issue-and-use-a-template.
If you want to ask for a new feature, please use the "VLC for Android - Feature Request.md" template above.
......
[main]
host = https://app.transifex.com
[o:yaron:p:vlc-trans:r:android]
file_filter = application/resources/src/main/res/values-<lang>/strings.xml
source_file = application/resources/src/main/res/values/strings.xml
type = ANDROID
minimum_perc = 50
resource_name = android
replace_edited_strings = false
keep_translations = false
lang_map = zh_CN: zh-rCN, zh_TW: zh-rTW, zgh: zgh-rMA, en_GB: en-rGB, es_MX: es-rMX, pt_BR: pt-rBR, pt_PT: pt
[o:yaron:p:vlc-trans:r:android_store]
file_filter = buildsystem/automation/framing/locale/<lang>.po
source_file = buildsystem/automation/framing/locale/en.po
type = PO
minimum_perc = 100
resource_name = android (Store screenshots)
replace_edited_strings = false
keep_translations = false
\ No newline at end of file
Changes between 3.6.4 Beta 2 and 3.6.4 Beta 3:
------------------
* New bookmark navigation
* Fix the resume behavior
* TV audio player improvements
* Crash and behavior fixes
Changes between 3.6.4 Beta 1 and 3.6.4 Beta 2:
------------------
* Fix a permission issue
* Add a confirmation when overwriting playlists
Changes between 3.6.3 and 3.6.4 Beta 1:
------------------
* Improve the playback speed feature
* Subtitle download fixes
* Fix some permission issues
* Widget state improvement
* UI and crash fixes
Changes between 3.6.2 and 3.6.3:
------------------
* Fix SMB navigation
* Cast only audio setting
* Behavior and crash fixes
Changes between 3.6.1 and 3.6.2:
------------------
* Update the remote access dependency to fix a crash loop
* Fix a bug making the video played twice
Changes between 3.6.0 and 3.6.1:
------------------
* Behavior and crash fixes
Changes between 3.6.0 Beta 6 and 3.6.0:
------------------
* Improve the orientation user experience in the video player
* Behavior and crash fixes
Changes between 3.6.0 Beta 5 and 3.6.0 Beta 6:
------------------
* Fix the remote access not included in the app bundle
Changes between 3.6.0 Beta 4 and 3.6.0 Beta 5:
------------------
* Allow deleting files on TV
* Multiple remote access improvements
* Fix 360 videos
* Behavior and UI fixes
* Crash fixes
Changes between 3.6.0 Beta 3 and 3.6.0 Beta 4:
------------------
* Fix subtitles download
* Improve the permission management
* Allow renaming a playlist
* Fix some language issues
* Behavior and UI fixes
* Crash fixes
Changes between 3.6.0 Beta 2 and 3.6.0 Beta 3:
------------------
* Fix custom PiP
* UI fixes
* Crash fixes
Changes between 3.5.7 and 3.6.0 Beta 2:
------------------
* Remote access: take control of your VLC for Android from any device
* Favorite any media and filter your medialibrary content by favorite
* Video player: tap to fast play
* Warning for metered connections
* PiP improvements
* Audio player chapter navigation
* UI improvements
* Crash fixes
Changes between 3.5.6 and 3.5.7:
------------------
* Fix crash when downloading subtitles
Changes between 3.5.5 and 3.5.6:
------------------
* Fix crash on startup
Changes between 3.5.4 and 3.5.5:
------------------
* Target Android 34
* This release is empty. Its sole purpose is to unlock the Play Store releases
Changes between 3.5.4 Beta 2 and 3.5.4:
------------------
* Fix media controls not working after some time on Android 13
* Fix audio notification icon transparency
* Minor interface fixes
* Crash fixes
Changes between 3.5.4 Beta 1 and 3.5.4 Beta 2:
------------------
* Re-allow access to the media controls for third party apps
* Fix some Android Auto and Android TV behaviors
* Crash fixes
Changes between 3.5.3 and 3.5.4 Beta 1:
------------------
* Improve the video resolution text
......
......@@ -3,21 +3,24 @@ apply plugin: 'kotlin-android'
android {
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
packagingOptions {
jniLibs {
pickFirsts += ['lib/armeabi-v7a/libc++_shared.so', 'lib/armeabi/libc++_shared.so', 'lib/arm64-v8a/libc++_shared.so', 'lib/x86/libc++_shared.so', 'lib/x86_64/libc++_shared.so']
}
resources {
excludes += ['META-INF/main.kotlin_module', 'META-INF/donations_debug.kotlin_module', 'META-INF/mediadb_debug.kotlin_module', 'META-INF/resources_debug.kotlin_module', 'META-INF/television_debug.kotlin_module']
excludes += ['META-INF/*']
}
}
packaging {
resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
}
dataBinding {
enabled = true
}
......@@ -28,6 +31,7 @@ android {
applicationId rootProject.ext.appId
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
compileSdk rootProject.ext.compileSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
vectorDrawables.useSupportLibrary = true
......@@ -62,18 +66,28 @@ android {
}
}
}
androidComponents {
beforeVariants(selector().withBuildType("vlcBundle")) { variantBuilder ->
variantBuilder.minSdk = 30
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
kotlinOptions.freeCompilerArgs = ['-Xno-param-assertions']
defaultConfig.minSdkVersion rootProject.ext.minSdkVersion
}
signedRelease {
initWith release
signingConfig = signingConfigs.release
matchingFallbacks = ['release']
}
vlcBundle {
initWith release
matchingFallbacks = ['release']
}
debug {
applicationIdSuffix ".debug"
jniDebuggable true
......@@ -91,6 +105,12 @@ android {
manifest.srcFile 'flavors/release/AndroidManifest.xml'
}
bundle {
language {
enableSplit = false
}
}
splits {
abi {
def isReleaseBuild = false
......@@ -110,7 +130,7 @@ android {
}
}
def abiCodes = ['x86': 5, 'x86_64': 8, 'armeabi-v7a': 4, 'arm64-v8a': 7]
def abiCodes = ['armeabi-v7a': 5, 'arm64-v8a': 6, 'x86': 7, 'x86_64': 8]
lint {
abortOnError false
disable 'MissingTranslation', 'ExtraTranslation'
......@@ -123,7 +143,12 @@ android {
def outputAbi = output.getFilter(com.android.build.OutputFile.ABI)
def abiName = System.getenv('GRADLE_ABI')?.toLowerCase() ?: "all"
if (outputAbi != null) abiName = outputAbi
output.versionCodeOverride = 10000000 + defaultConfig.versionCode + abiCodes.get(abiName, 0)
def versionCode = abiCodes.get(abiName, 0)
if (variant.buildType.name == "vlcBundle") {
versionCode = 9
}
output.versionCodeOverride = 10000000 + defaultConfig.versionCode + versionCode
def outputName = "VLC-Android-"
outputName += variant.versionName.replace(" ", "-")
if (variant.buildType.name == "debug") outputName += "-debug"
......@@ -137,7 +162,9 @@ android {
dependencies {
implementation project(':application:vlc-android')
implementation project(':application:television')
implementation project(':application:remote-access-server')
testImplementation project(':application:television')
testImplementation project(':application:remote-access-server')
androidTestImplementation "androidx.test.espresso:espresso-contrib:$rootProject.espressoVersion"
androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoVersion"
......@@ -147,6 +174,7 @@ dependencies {
testImplementation "androidx.arch.core:core-testing:$rootProject.ext.archVersion"
androidTestImplementation "androidx.arch.core:core-testing:$rootProject.ext.archVersion"
androidTestImplementation "androidx.test.ext:junit:$rootProject.ext.junitExtVersion"
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:$rootProject.ext.desugarLib"
androidTestUtil "androidx.test:orchestrator:$rootProject.ext.orchestrator"
testImplementation "androidx.test:core:$rootProject.ext.testCore"
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$rootProject.ext.kotlinx_version"
......
......@@ -26,26 +26,36 @@ package org.videolan.vlc
import android.content.Intent
import android.content.pm.ActivityInfo
import android.net.Uri
import android.os.SystemClock
import android.util.Log
import androidx.core.view.get
import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.Espresso.pressBack
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.contrib.RecyclerViewActions
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.UiDevice
import androidx.viewpager.widget.ViewPager
import org.hamcrest.core.AllOf
import org.junit.ClassRule
import org.junit.Rule
import org.junit.Test
import org.videolan.medialibrary.MLServiceLocator
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.resources.EXTRA_FOR_ESPRESSO
import org.videolan.resources.EXTRA_TARGET
import org.videolan.tools.Settings
import org.videolan.vlc.gui.MainActivity
import org.videolan.vlc.gui.helpers.UiTools.isTablet
import org.videolan.vlc.gui.view.TitleListView
import org.videolan.vlc.util.DpadHelper.pressHome
import org.videolan.vlc.util.DpadHelper.pressPip
import org.videolan.vlc.util.DpadHelper.pressStop
import org.videolan.vlc.util.DummyMediaWrapperProvider
import org.videolan.vlc.util.ScreenshotUtil
import org.videolan.vlc.util.UiUtils.waitId
import org.videolan.vlc.util.UiUtils.waitUntilLoaded
......@@ -69,23 +79,38 @@ class PhoneScreenhotsInstrumentedTest : BaseUITest() {
fun testTakeScreenshot() {
onView(isRoot()).perform(waitId(R.id.audio_list, 5000))
//Audio
// ScreenshotUtil.takeScreenshot("01_trash")
waitUntilLoaded { activity.findViewById(R.id.audio_list) }
onView(withId(R.id.sliding_tabs)).perform(TabsMatcher(0))
waitUntilLoaded { activity.findViewById(R.id.audio_list) }
SystemClock.sleep(1500)
waitUntilLoaded { activity.findViewById<ViewPager>(R.id.pager).get(0).findViewById(R.id.audio_list) }
SystemClock.sleep(500)
ScreenshotUtil.takeScreenshot(3, "audio_list")
ScreenshotUtil.takeScreenshot(2, "audio_list")
onView(withId(R.id.sliding_tabs)).perform(TabsMatcher(2))
SystemClock.sleep(500)
waitUntilLoaded { activity.findViewById(R.id.audio_list) }
waitUntilLoaded { activity.findViewById<ViewPager>(R.id.pager).get(2).findViewById(R.id.audio_list) }
SystemClock.sleep(1500)
//We use the audio list as PiP background. The PiP img is static
ScreenshotUtil.takeScreenshot(7,"pip_video")
onView(withId(R.id.ml_menu_last_playlist)).perform(click())
onView(isRoot()).perform(waitId(R.id.audio_media_switcher, 5000))
onView(withId(R.id.audio_media_switcher)).perform(click())
SystemClock.sleep(300)
ScreenshotUtil.takeScreenshot(6,"audio_player_playlist")
activity.slideUpOrDownAudioPlayer()
SystemClock.sleep(1500)
waitUntilLoaded { activity.findViewById(R.id.songs_list) }
SystemClock.sleep(1500)
ScreenshotUtil.takeScreenshot(4,"audio_player_playlist")
onView(withId(R.id.playlist_switch)).perform(click())
ScreenshotUtil.takeScreenshot(5,"audio_player")
ScreenshotUtil.takeScreenshot(3,"audio_player")
onView(withId(R.id.playlist_switch)).perform(click())
onView(withId(R.id.adv_function)).perform(click())
waitUntilLoaded { activity.findViewById(R.id.options_list) }
onView(withId(R.id.options_list))
.perform(RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(3, click()))
waitId(R.id.equalizer_bands, 5000)
ScreenshotUtil.takeScreenshot(9,"equalizer")
pressBack()
//close audio player
onView(withId(R.id.header)).perform(click())
pressStop()
......@@ -97,6 +122,7 @@ class PhoneScreenhotsInstrumentedTest : BaseUITest() {
.perform(click())
Log.d("Espresso", "0")
waitUntilLoaded { activity.findViewById(R.id.video_grid) }
SystemClock.sleep(1500)
Log.d("Espresso", "1")
ScreenshotUtil.takeScreenshot(1, "video_list")
......@@ -106,34 +132,23 @@ class PhoneScreenhotsInstrumentedTest : BaseUITest() {
onView(rvMatcher.atPosition(2)).perform(click())
Log.d("Espresso", "3")
rotateLandscape()
onView(isRoot()).perform(orientationLandscape())
onView(isRoot()).perform(waitId(R.id.player_root, 5000))
SystemClock.sleep(1500)
onView(withId(R.id.player_root)).perform(click())
SystemClock.sleep(500)
ScreenshotUtil.takeScreenshot(2, "video_player")
onView(withId(R.id.player_overlay_adv_function)).perform(ForceClickAction())
SystemClock.sleep(500)
ScreenshotUtil.takeScreenshot(7,"video_player_advanced_options")
disableRotateLandscape()
SystemClock.sleep(500)
onView(withRecyclerView(R.id.options_list).atPositionOnView(4, R.id.option_title)).perform(click())
// ScreenshotUtil.takeScreenshot(9,"video_player_equalizer")
pressBack()
onView(withId(R.id.player_overlay_adv_function)).perform(ForceClickAction())
onView(withRecyclerView(R.id.options_list).atPositionOnView(6, R.id.option_title)).perform(click())
pressHome()
pressPip()
ScreenshotUtil.takeScreenshot(8,"pip")
ScreenshotUtil.takeScreenshot(6, "video_player")
}
@Test
fun testTakeScreenshotBrowser() {
onView(AllOf.allOf(withId(R.id.nav_directories), withEffectiveVisibility(Visibility.VISIBLE)))
.perform(click())
ScreenshotUtil.takeScreenshot(4,"browser")
waitUntilLoaded { activity.findViewById<TitleListView>(R.id.network_browser_entry).findViewById(R.id.list) }
ScreenshotUtil.takeScreenshot(5,"browser")
}
private fun rotateLandscape() = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).setOrientationLeft()
......@@ -150,11 +165,31 @@ class PhoneScreenhotsInstrumentedTest : BaseUITest() {
Settings.getInstance(context).edit().putBoolean("auto_rescan", false).putBoolean("audio_resume_card", false).commit()
val intent = Intent().apply {
putExtra(EXTRA_TARGET, R.id.nav_audio)
putParcelableArrayListExtra(
EXTRA_FOR_ESPRESSO, arrayListOf(
MLServiceLocator.getAbstractMediaWrapper(
Uri.parse("upnp://test/mock"), 0L, 0F, 0L, MediaWrapper.TYPE_ALL,
null, "My NAS", -1, -1, "",
"", -1, "", "",
0, 0, "/storage/emulated/0/Download/upnp2.png",
0, 0, 0,
0, 0L, 0L,
0L
),
MLServiceLocator.getAbstractMediaWrapper(
Uri.parse("upnp://test/mock"), 0L, 0F, 0L, MediaWrapper.TYPE_ALL,
null, "My SMB server", -1, -1, "",
"", -1, "", "",
0, 0, "/storage/emulated/0/Download/upnp1.png",
0, 0, 0,
0, 0L, 0L,
0L
)
)
)
}
activityTestRule.launchActivity(intent)
activity = activityTestRule.activity
if (activity.isTablet()) {
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
}
}
......@@ -2,18 +2,29 @@ package org.videolan.vlc.gui
import android.content.Intent
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.*
import androidx.test.espresso.action.CoordinatesProvider
import androidx.test.espresso.action.GeneralLocation
import androidx.test.espresso.action.GeneralSwipeAction
import androidx.test.espresso.action.Press
import androidx.test.espresso.action.Swipe
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.assertThat
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.rule.ActivityTestRule
import org.hamcrest.Matchers.equalTo
import org.junit.Rule
import org.junit.Test
import org.videolan.medialibrary.interfaces.Medialibrary
import org.videolan.vlc.*
import org.videolan.vlc.BaseUITest
import org.videolan.vlc.R
import org.videolan.vlc.databinding.AudioBrowserItemBinding
import org.videolan.vlc.findFirstPosition
import org.videolan.vlc.gui.audio.AudioBrowserAdapter
import org.videolan.vlc.gui.audio.AudioBrowserFragment
import org.videolan.vlc.sizeOfAtLeast
import org.videolan.vlc.withMediaItem
import org.videolan.vlc.withRecyclerView
class HeaderMediaListActivityUITest: BaseUITest() {
@Rule
......@@ -27,9 +38,9 @@ class HeaderMediaListActivityUITest: BaseUITest() {
Thread.sleep(3 * 1000)
val ml = Medialibrary.getInstance()
val pl = ml.createPlaylist("test", true)
pl.append(ml.getPagedVideos(Medialibrary.SORT_DEFAULT, false, true, 5, 0).map { it.id })
pl.append(ml.getPagedAudio(Medialibrary.SORT_DEFAULT, false, true, 5, 0).map { it.id })
val pl = ml.createPlaylist("test", true, false)
pl.append(ml.getPagedVideos(Medialibrary.SORT_DEFAULT, false, true, false, 5, 0).map { it.id })
pl.append(ml.getPagedAudio(Medialibrary.SORT_DEFAULT, false, true, false, 5, 0).map { it.id })
val intent = Intent().apply {
putExtra(AudioBrowserFragment.TAG_ITEM, pl)
......
......@@ -5,23 +5,38 @@ import android.widget.EditText
import androidx.test.espresso.Espresso
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.longClick
import androidx.test.espresso.action.ViewActions.typeTextIntoFocusedView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.DrawerActions.open
import androidx.test.espresso.matcher.RootMatchers.isPlatformPopup
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.assertThat
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
import androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.rule.ActivityTestRule
import com.google.android.material.internal.NavigationMenuItemView
import org.hamcrest.Matchers.*
import org.hamcrest.Matchers.allOf
import org.hamcrest.Matchers.anyOf
import org.hamcrest.Matchers.equalTo
import org.hamcrest.Matchers.instanceOf
import org.hamcrest.Matchers.notNullValue
import org.junit.After
import org.junit.Rule
import org.junit.Test
import org.videolan.medialibrary.interfaces.Medialibrary
import org.videolan.vlc.*
import org.videolan.vlc.gui.dialogs.SavePlaylistDialog
import org.videolan.tools.CoroutineContextProvider
import org.videolan.medialibrary.interfaces.media.Playlist
import org.videolan.resources.EXTRA_TARGET
import org.videolan.tools.CoroutineContextProvider
import org.videolan.vlc.BaseUITest
import org.videolan.vlc.R
import org.videolan.vlc.gui.dialogs.SavePlaylistDialog
import org.videolan.vlc.sizeOfAtLeast
import org.videolan.vlc.util.TestCoroutineContextProvider
import org.videolan.vlc.withCount
import org.videolan.vlc.withRecyclerView
class PlaylistFragmentUITest: BaseUITest() {
@Rule
......@@ -43,14 +58,14 @@ class PlaylistFragmentUITest: BaseUITest() {
@After
fun resetData() {
Medialibrary.getInstance().playlists.map { it.delete() }
Medialibrary.getInstance().getPlaylists(Playlist.Type.All, false).map { it.delete() }
}
private fun createDummyPlaylist() {
val ml = Medialibrary.getInstance()
val pl = ml.createPlaylist(DUMMY_PLAYLIST, true)
pl.append(ml.getPagedVideos(Medialibrary.SORT_DEFAULT, false, true, 5, 0).map { it.id })
pl.append(ml.getPagedAudio(Medialibrary.SORT_DEFAULT, false, true, 5, 0).map { it.id })
val pl = ml.createPlaylist(DUMMY_PLAYLIST, true, false)
pl.append(ml.getPagedVideos(Medialibrary.SORT_DEFAULT, false, true, false, 5, 0).map { it.id })
pl.append(ml.getPagedAudio(Medialibrary.SORT_DEFAULT, false, true, false, 5, 0).map { it.id })
}
@Test
......
......@@ -391,9 +391,9 @@ class FileBrowserFragmentUITest : BaseUITest() {
onView(withRecyclerView(R.id.network_list).atPosition(0)).perform(click())
onView(withId(R.id.ml_menu_save))
.check(matches(withActionIconDrawable(R.drawable.ic_menu_favorite_outline)))
.check(matches(withActionIconDrawable(R.drawable.ic_fav_add)))
.perform(click())
.check(matches(withActionIconDrawable(R.drawable.ic_menu_favorite)))
.check(matches(withActionIconDrawable(R.drawable.ic_fav_remove)))
onView(isRoot()).perform(pressBack())
onView(isRoot()).perform(pressBack())
......@@ -414,9 +414,9 @@ class FileBrowserFragmentUITest : BaseUITest() {
onView(withRecyclerView(R.id.network_list).atPosition(3)).perform(click())
onView(withId(R.id.ml_menu_save))
.check(matches(withActionIconDrawable(R.drawable.ic_menu_favorite)))
.check(matches(withActionIconDrawable(R.drawable.ic_fav_remove)))
.perform(click())
.check(matches(withActionIconDrawable(R.drawable.ic_menu_favorite_outline)))
.check(matches(withActionIconDrawable(R.drawable.ic_fav_add)))
onView(isRoot()).perform(pressBack())
......
......@@ -37,17 +37,6 @@ class PreferencesSubtitlesUITest: BasePreferenceUITest() {
checkModeChanged(key, "10", "16", MAP_SUBTITLE_SIZE)
}
@Test
fun checkSubtitleColorSetting() {
val key = "subtitles_color"
checkModeChanged(key, "65535", "16777215", MAP_SUBTITLE_COLOR)
checkModeChanged(key, "16776960", "16777215", MAP_SUBTITLE_COLOR)
checkModeChanged(key, "65280", "16777215", MAP_SUBTITLE_COLOR)
checkModeChanged(key, "16711935", "16777215", MAP_SUBTITLE_COLOR)
checkModeChanged(key, "12632256", "16777215", MAP_SUBTITLE_COLOR)
checkModeChanged(key, "16777215", "16777215", MAP_SUBTITLE_COLOR)
}
@Test
fun checkSubtitleBackgroundSetting() {
......@@ -71,10 +60,6 @@ class PreferencesSubtitlesUITest: BasePreferenceUITest() {
companion object {
val MAP_SUBTITLE_SIZE = mapOf("19" to R.string.subtitles_size_small, "16" to R.string.subtitles_size_normal, "13" to R.string.subtitles_size_big, "10" to R.string.subtitles_size_huge)
val MAP_SUBTITLE_COLOR = mapOf(
"16777215" to R.string.subtitles_color_white, "12632256" to R.string.subtitles_color_gray, "16711935" to R.string.subtitles_color_pink,
"65535" to R.string.subtitles_color_blue, "16776960" to R.string.subtitles_color_yellow, "65280" to R.string.subtitles_color_green
)
val MAP_SUBTITLE_ENCODING = mapOf(
"" to "Default (Windows-1252)", "UTF-8" to "Universal (UTF-8)"
)
......
......@@ -102,7 +102,7 @@ class PreferencesUIUITest: BasePreferenceUITest() {
@Test
fun checkVideoPlaylistMode() {
val key = FORCE_PLAY_ALL_VIDEO
val key = PLAYLIST_MODE_VIDEO
checkToggleWorks(key, settings)
}
......
......@@ -25,12 +25,6 @@ class PreferencesVideoUITest: BasePreferenceUITest() {
.perform(click())
}
@Test
fun checkPersistentBrightnessSetting() {
val key = SAVE_BRIGHTNESS
checkToggleWorks(key, settings, default = false)
}
@Test
fun checkAudioIndividualDelaySetting() {
val key = "save_individual_audio_delay"
......
......@@ -40,6 +40,7 @@ object DpadHelper {
Direction.LEFT -> device.pressDPadLeft()
Direction.UP -> device.pressDPadUp()
Direction.RIGHT -> device.pressDPadRight()
else -> {}
}
if (i < nbTimes - 1) SystemClock.sleep(300)
}
......
......@@ -25,8 +25,6 @@ import androidx.core.net.toUri
import org.videolan.libvlc.interfaces.IMedia
import org.videolan.resources.TYPE_LOCAL_FAV
import org.videolan.resources.TYPE_NETWORK_FAV
import org.videolan.resources.opensubtitles.OpenSubtitle
import org.videolan.resources.opensubtitles.QueryParameters
import org.videolan.vlc.gui.dialogs.State
import org.videolan.vlc.gui.dialogs.SubtitleItem
......@@ -75,12 +73,12 @@ object TestUtil {
mediaPath: String,
subLanguageID: String,
movieReleaseName: String): org.videolan.vlc.mediadb.models.ExternalSub {
return org.videolan.vlc.mediadb.models.ExternalSub(idSubtitle, subtitlePath, mediaPath, subLanguageID, movieReleaseName)
return org.videolan.vlc.mediadb.models.ExternalSub(idSubtitle, subtitlePath, mediaPath, subLanguageID, movieReleaseName, false)
}
fun createExternalSubsForMedia(mediaPath: String, mediaName: String, count: Int): List<org.videolan.vlc.mediadb.models.ExternalSub> {
return (0 until count).map {
org.videolan.vlc.mediadb.models.ExternalSub(it.toString(), "${fakeSubUri}$mediaName$it", mediaPath, "en", mediaName)
org.videolan.vlc.mediadb.models.ExternalSub(it.toString(), "${fakeSubUri}$mediaName$it", mediaPath, "en", mediaName, false)
}
}
......@@ -110,26 +108,6 @@ object TestUtil {
mediaUri: Uri,
subLanguageID: String,
movieReleaseName: String,
zipDownloadLink: String): SubtitleItem = SubtitleItem(idSubtitle, mediaUri, subLanguageID, movieReleaseName, State.Downloading, zipDownloadLink)
zipDownloadLink: String): SubtitleItem = SubtitleItem(idSubtitle, -1L, mediaUri, subLanguageID, movieReleaseName, State.Downloading, zipDownloadLink, false, 0F, 0L, "")
fun createDownloadingSubtitleItem(
idSubtitle: String,
mediaPath: String,
subLanguageID: String,
movieReleaseName: String,
zipDownloadLink: String): SubtitleItem = createDownloadingSubtitleItem(idSubtitle, mediaPath.toUri(), subLanguageID, movieReleaseName, zipDownloadLink)
fun createOpenSubtitle(
idSubtitle: String,
subLanguageID: String,
movieReleaseName: String,
zipDownloadLink: String) = OpenSubtitle(
idSubtitle = idSubtitle, subLanguageID = subLanguageID, movieReleaseName = movieReleaseName, zipDownloadLink = zipDownloadLink,
idMovie = "", idMovieImdb = "", idSubMovieFile = "", idSubtitleFile = "", infoFormat = "", infoOther = "", infoReleaseGroup = "",
userID = "", iSO639 = "", movieFPS = "", languageName = "", subActualCD = "", subSumVotes = "", subAuthorComment = "", subComments = "",
score = 0.0, seriesEpisode = "", seriesIMDBParent = "", seriesSeason = "", subAddDate = "", subAutoTranslation = "", subBad = "", subDownloadLink = "",
subDownloadsCnt = "", subEncoding = "", subFeatured = "", subFileName = "", subForeignPartsOnly = "", subFormat = "", subFromTrusted = "", subHash = "",
subHD = "", subHearingImpaired = "", subLastTS = "", subRating = "", subSize = "", subSumCD = "", subtitlesLink = "", subTranslator = "", subTSGroup = "",
subTSGroupHash = "", movieByteSize = "", movieHash = "", movieTimeMS = "", queryParameters = QueryParameters("", "", ""), queryNumber = "",
userNickName = "", userRank = "", matchedBy = "", movieImdbRating = "", movieKind = "", movieName = "", movieNameEng = "", movieYear = "")
}
......@@ -20,11 +20,15 @@
package org.videolan.mobile.app
import android.annotation.TargetApi
import android.app.Activity
import android.app.Application
import android.app.Application.ActivityLifecycleCallbacks
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import kotlinx.coroutines.DEBUG_PROPERTY_NAME
import kotlinx.coroutines.DEBUG_PROPERTY_VALUE_ON
import kotlinx.coroutines.Dispatchers
......@@ -42,18 +46,21 @@ import org.videolan.mobile.app.delegates.MediaContentDelegate
import org.videolan.resources.AndroidDevices
import org.videolan.resources.AppContextProvider
import org.videolan.resources.VLCInstance
import org.videolan.resources.util.startRemoteAccess
import org.videolan.tools.AppScope
import org.videolan.tools.KEY_ENABLE_REMOTE_ACCESS
import org.videolan.tools.Settings
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.gui.SendCrashActivity
import org.videolan.vlc.gui.helpers.NotificationHelper
import org.videolan.vlc.util.DialogDelegate
import org.videolan.vlc.util.NetworkConnectionManager
import org.videolan.vlc.util.VersionMigration
import org.videolan.vlc.widget.MiniPlayerAppWidgetProvider
interface AppDelegate {
val appContextProvider : AppContextProvider
fun Context.setupApplication()
fun Application.setupApplication()
}
class AppSetupDelegate : AppDelegate,
......@@ -64,7 +71,7 @@ class AppSetupDelegate : AppDelegate,
override val appContextProvider = AppContextProvider
@TargetApi(Build.VERSION_CODES.O)
override fun Context.setupApplication() {
override fun Application.setupApplication() {
appContextProvider.init(this)
NotificationHelper.createNotificationChannels(this)
......@@ -87,6 +94,24 @@ class AppSetupDelegate : AppDelegate,
//Initiate Kotlinx Dispatchers in a thread to prevent ANR
backgroundInit()
if (Settings.getInstance(this).getBoolean(KEY_ENABLE_REMOTE_ACCESS, false))
startRemoteAccess()
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityResumed(activity: Activity) {
AppContextProvider.currentActivity = activity
}
override fun onActivityPaused(activity: Activity) {
AppContextProvider.currentActivity = null
}
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
override fun onActivityStarted(activity: Activity) {}
override fun onActivityStopped(activity: Activity) {}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {}
})
}
// init operations executed in background threads
......@@ -101,6 +126,9 @@ class AppSetupDelegate : AppDelegate,
if (!AndroidDevices.isAndroidTv) sendBroadcast(Intent(MiniPlayerAppWidgetProvider.ACTION_WIDGET_INIT).apply {
component = ComponentName(appContextProvider.appContext, MiniPlayerAppWidgetProvider::class.java)
})
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
NetworkConnectionManager.start(AppContextProvider.appContext)
}
}
}
......@@ -7,8 +7,8 @@ import android.content.IntentFilter
import kotlinx.coroutines.launch
import org.videolan.moviepedia.MediaScraper
import org.videolan.resources.ACTION_CONTENT_INDEXING
import org.videolan.resources.util.registerReceiverCompat
import org.videolan.tools.AppScope
import org.videolan.tools.localBroadcastManager
internal interface IIndexersDelegate {
fun Context.setupIndexers()
......@@ -17,7 +17,7 @@ internal interface IIndexersDelegate {
internal class IndexersDelegate : BroadcastReceiver(), IIndexersDelegate {
override fun Context.setupIndexers() {
localBroadcastManager.registerReceiver(this@IndexersDelegate, IntentFilter(ACTION_CONTENT_INDEXING))
registerReceiverCompat(this@IndexersDelegate, IntentFilter(ACTION_CONTENT_INDEXING), false)
}
override fun onReceive(context: Context?, intent: Intent?) {
......
......@@ -26,8 +26,6 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
dataBinding {
enabled = true
......@@ -42,6 +40,7 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
compileSdk rootProject.ext.compileSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
......@@ -61,8 +60,16 @@ android {
initWith debug
matchingFallbacks = ['debug']
}
vlcBundle {
initWith release
matchingFallbacks = ['release']
}
}
namespace 'org.videolan.vlc.donations'
buildFeatures {
aidl true
buildConfig true
}
}
static def getPublicApiKey(project) {
......
......@@ -26,12 +26,11 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
compileSdk rootProject.ext.compileSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
......@@ -42,8 +41,15 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
vlcBundle {
initWith release
matchingFallbacks = ['release']
}
}
namespace 'org.videolan.liveplotgraph'
buildFeatures {
buildConfig true
}
}
......
......@@ -101,7 +101,7 @@ class PlotView : FrameLayout {
listeners.remove(listener)
}
override fun onDraw(canvas: Canvas?) {
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
maxsY.clear()
......
......@@ -27,8 +27,6 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
packagingOptions {
jniLibs {
......@@ -40,6 +38,7 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
compileSdk rootProject.ext.compileSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
......@@ -54,6 +53,10 @@ android {
initWith debug
matchingFallbacks = ['debug']
}
vlcBundle {
initWith release
matchingFallbacks = ['release']
}
}
namespace 'org.videolan.vlc.mediadb'
......