
buildscript {
  repositories {
    mavenCentral()
    google()
  }
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
  namespace = "com.badlogic.drop"
  compileSdk = 35
  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      java.setSrcDirs(['src/main/java', 'src/main/kotlin'])
      aidl.setSrcDirs(['src/main/java', 'src/main/kotlin'])
      renderscript.setSrcDirs(['src/main/java', 'src/main/kotlin'])
      res.setSrcDirs(['res'])
      assets.setSrcDirs(['../assets'])
      jniLibs.setSrcDirs(['libs'])
    }
  }
  packagingOptions {
		resources {
			excludes += ['META-INF/robovm/ios/robovm.xml', 'META-INF/DEPENDENCIES.txt', 'META-INF/DEPENDENCIES',
                   'META-INF/dependencies.txt', '**/*.gwt.xml']
			pickFirsts += ['META-INF/LICENSE.txt', 'META-INF/LICENSE', 'META-INF/license.txt', 'META-INF/LGPL2.1',
                     'META-INF/NOTICE.txt', 'META-INF/NOTICE', 'META-INF/notice.txt']
		}
  }
  defaultConfig {
    applicationId 'com.badlogic.drop'
    minSdkVersion 21
    targetSdkVersion 35
    versionCode 1
    versionName "1.0"
  }
  compileOptions {
    sourceCompatibility "8"
    targetCompatibility "8"
    coreLibraryDesugaringEnabled = true
  }
  buildTypes {
    release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  kotlin.compilerOptions.jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
  
}

repositories {
  // needed for AAPT2, may be needed for other tools
  google()
}

configurations { natives }

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
  implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
  implementation project(':core')

  natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
  natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
  natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
  natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
  natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
  natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
  natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
  natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"

}

// Called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders
// so they get packed with the APK.
tasks.register('copyAndroidNatives') {
  doFirst {
    file("libs/armeabi-v7a/").mkdirs()
    file("libs/arm64-v8a/").mkdirs()
    file("libs/x86_64/").mkdirs()
    file("libs/x86/").mkdirs()

    configurations.natives.copy().files.each { jar ->
      def outputDir = null
      if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
      if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
      if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
      if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
      if(outputDir != null) {
        copy {
          from zipTree(jar)
          into outputDir
          include "*.so"
        }
      }
    }
  }
}

tasks.matching { it.name.contains("merge") && it.name.contains("JniLibFolders") }.configureEach { packageTask ->
  packageTask.dependsOn 'copyAndroidNatives'
}

tasks.register('run', Exec) {
  def path
  def localProperties = project.file("../local.properties")
  if (localProperties.exists()) {
    Properties properties = new Properties()
    localProperties.withInputStream { instr ->
      properties.load(instr)
    }
    def sdkDir = properties.getProperty('sdk.dir')
    if (sdkDir) {
      path = sdkDir
    } else {
      path = "$System.env.ANDROID_SDK_ROOT"
    }
  } else {
    path = "$System.env.ANDROID_SDK_ROOT"
  }

  def adb = path + "/platform-tools/adb"
  commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.badlogic.drop/com.badlogic.drop.android.AndroidLauncher'
}

eclipse.project.name = appName + "-android"
