build.gradle 3.2 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.
Thomas Guillem's avatar
Thomas Guillem committed
10
        jniLibs.srcDirs = [ 'jni/libs', 'private_libs/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' ]
18 19 20 21 22
    }
    }

    buildTypes {
        release {
23
            minifyEnabled false
24 25 26
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
27 28 29 30 31 32

    // 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)
33 34
        manifestParser = new com.android.builder.core.DefaultManifestParser()
        def androidVersion = manifestParser.getVersionName(file('../vlc-android/AndroidManifest.xml'))
35 36 37 38
        //Custom APK name
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.aar')) {
39
                def fileName = "libvlc-${vlcVersion}-${androidVersion}.aar"
40 41 42 43
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }
44
}
45

46 47 48
/*
 * Include GDB files into apk
 */
Geoffrey Métais's avatar
Geoffrey Métais committed
49 50 51 52
//afterEvaluate {
//    Sync packageTask = project.getTasks().findByName("packageReleaseJniLibs")
//    packageTask.include(['**/gdbserver', '**/gdb.setup'])
//}
53

54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
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 buildDebugARMv7(type:BuildNative) {
    args('-a', "armeabi-v7a")
}
task buildDebugARM64(type:BuildNative) {
Geoffrey Métais's avatar
Geoffrey Métais committed
80
    args('-a', "arm64-v8a")
81 82 83 84 85 86 87 88 89 90 91 92 93
}
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")
}
94
dependencies {
Sébastien Toque's avatar
Sébastien Toque committed
95
    compile 'com.android.support:support-annotations:23.0.1'
96
}