buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.1' classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3' } } apply plugin: 'com.android.application' apply plugin: 'com.github.ben-manes.versions' repositories { mavenCentral() jcenter() } dependencies { compile 'eu.chainfire:libsuperuser:1.0.0.201510071325' compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' compile 'com.android.support:appcompat-v7:23.1.0' androidTestCompile 'com.squareup.okhttp:mockwebserver:2.4.0' } preBuild { dependsOn 'buildNative' } project.archivesBaseName = 'syncthing' android { compileSdkVersion 23 buildToolsVersion "23.0.0" useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "com.nutomic.syncthingandroid" minSdkVersion 11 targetSdkVersion 22 versionCode 76 versionName "0.7.1" testApplicationId 'com.nutomic.syncthingandroid.test' testInstrumentationRunner 'android.test.InstrumentationTestRunner' testHandleProfiling true testFunctionalTest true } sourceSets { main { jniLibs.srcDir file("libs/") } } signingConfigs { release { if (System.getenv("key_alias")) { storeFile = file(System.getenv("key_store")) storePassword = System.getenv("key_store_password") keyAlias = System.getenv("key_alias") keyPassword = System.getenv("key_alias_password") } } } buildTypes { debug { applicationIdSuffix ".debug" debuggable true testCoverageEnabled true } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-android.txt' if (System.getenv("key_alias")) { signingConfig signingConfigs.release } } } productFlavors { x86 { versionCode Integer.parseInt("4" + defaultConfig.versionCode) ndk { abiFilter "x86" } } armeabi { versionCode Integer.parseInt("3" + defaultConfig.versionCode) ndk { abiFilter "armeabi" } } fat { versionCode Integer.parseInt("0" + defaultConfig.versionCode) } } } task buildNative(type: Exec) { outputs.upToDateWhen { false } executable = './build-syncthing.sh' } task copyNative(type: Copy) { def lib_dir = "libs/" new File(lib_dir).mkdirs() def st_dir = "bin/"; from st_dir + 'syncthing-x86', st_dir + 'syncthing-armeabi'; into lib_dir rename('syncthing-x86', 'x86/libsyncthing.so') rename('syncthing-armeabi', 'armeabi/libsyncthing.so') } buildNative.finalizedBy copyNative task cleanBin(type: Delete) { delete 'bin/' } copyNative.finalizedBy cleanBin task cleanNative(type: Delete) { delete 'bin/' delete 'build/' delete 'libs/' delete 'ext/syncthing/bin/' delete 'ext/syncthing/pkg/' } clean.dependsOn cleanNative