build.gradle 3.29 KB
Newer Older
1 2 3
apply plugin: 'com.android.library'

android {
4 5
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
6 7 8

    sourceSets {
    main {
Edward Wang's avatar
Edward Wang committed
9
        jni.srcDirs = [] // Prevent gradle from building native code with ndk; we have our own Makefile for it.
10
        jniLibs.srcDir 'jni/libs' // Where generated .so files are placed.
11 12 13 14 15 16
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
17
        assets.srcDirs = ['assets', 'libcompat/libs/armeabi']
18 19 20 21 22
    }
    }

    defaultConfig {
        minSdkVersion 7
23
        targetSdkVersion 22
24 25 26 27
    }

    buildTypes {
        release {
28
            minifyEnabled false
29 30 31
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

    // Make per-variant version code
    libraryVariants.all { variant ->
        def manifestParser = new com.android.builder.core.DefaultManifestParser()
        // get the version code of each flavor
        def vlcVersion = manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
        //Custom APK name
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.aar')) {
                def fileName = "libvlc-${vlcVersion}.aar"
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }
47
}
48

49 50 51 52 53 54 55 56
/*
 * Include GDB files into apk
 */
afterEvaluate {
    Sync packageTask = project.getTasks().findByName("packageReleaseJniLibs")
    packageTask.include(['**/gdbserver', '**/gdb.setup'])
}

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
class BuildNative extends Exec {}

tasks.withType(BuildNative){
    /*
    Properties set for Android Studio own shell.
    when you run gradlew from cli, OS shell env variables will be used

    To be able to build from Android Studio, you have to set ndk.dir & sdk.dir
    properties in local.properties in the root folder, like this (for example):
    sdk.dir=/home/<username>/SDK/android-sdk-linux
    ndk.dir=/home/<username>/SDK/android-ndk-r10b
     */
    if (System.getenv('ANDROID_SDK') == null || System.getenv('ANDROID_NDK') == null) {
        Properties properties = new Properties()
        properties.load(project.rootProject.file('local.properties').newDataInputStream())
        environment 'ANDROID_NDK', properties.getProperty('ndk.dir')
        environment 'ANDROID_SDK', properties.getProperty('sdk.dir')
    }
    workingDir '..'
    commandLine './compile-libvlc.sh'
}

task buildDebugARMv5(type:BuildNative) {
    args('-a', "armeabi-v5")
}
task buildDebugARMv6(type:BuildNative) {
    args('-a', "armeabi")
}
task buildDebugARMv6_nofpu(type:BuildNative) {
    args('-a', "armeabi-nofpu")
}
task buildDebugARMv7(type:BuildNative) {
    args('-a', "armeabi-v7a")
}
task buildDebugARM64(type:BuildNative) {
Geoffrey Métais's avatar
Geoffrey Métais committed
92
    args('-a', "arm64-v8a")
93 94 95 96 97 98 99 100 101 102 103 104 105
}
task buildDebugx86(type:BuildNative) {
    args('-a', "x86")
}
task buildDebugx86_64(type:BuildNative) {
    args('-a', "x86_64")
}
task buildDebugMIPS(type:BuildNative) {
    args('-a', "mips")
}
task buildDebugMIPS64(type:BuildNative) {
    args('-a', "mips64")
}
106
dependencies {
Sébastien Toque's avatar
Sébastien Toque committed
107
    compile 'com.android.support:support-annotations:23.0.1'
108
}