apply plugin: 'com.android.library' String SDK_DIR = System.getenv("ANDROID_HOME") android { compileSdkVersion 29 defaultConfig { minSdkVersion 29 targetSdkVersion 29 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } def jarName = 'com.huanglong.android.tv' dependencies { String frameworkPath = "${SDK_DIR}/platforms/android-29/framework.jar"; compileOnly files(frameworkPath) } task dexClasses(description: 'Create dex file from classes.jar') { } assemble.dependsOn 'dexClasses' String DEX_DIR = "$buildDir/outputs/dex" task createDexDir { doFirst { mkdir DEX_DIR } } android.libraryVariants.all { variant -> String BUILD_TOOLS_VERSION = project.android.buildToolsVersion String DEX = "${SDK_DIR}/build-tools/${BUILD_TOOLS_VERSION}/dx" String DEX_TOOL = org.gradle.internal.os.OperatingSystem.current().windows ? "${DEX}.bat" : "${DEX}" String dexVariantName = "dex${variant.buildType.name.capitalize()}Classes" dexClasses.dependsOn "$dexVariantName" task (dexVariantName, type: Exec) { dependsOn 'createDexDir' dependsOn "assemble${variant.buildType.name.capitalize()}" String inputFile = "${buildDir}/intermediates/aar_main_jar/${variant.buildType.name}/classes.jar" String outputFile = "${DEX_DIR}/classes.dex" commandLine("${DEX_TOOL}", "--dex", "--output=${outputFile}", "${inputFile}") } } task makeJar(type: Jar) { setBaseName(jarName) from('build/outputs/dex/classes.dex') include('classes.dex') } makeJar.dependsOn(build)