1*890232f2SAndroid Build Coastguard Workerapply plugin: 'com.android.application' 2*890232f2SAndroid Build Coastguard Workerapply plugin: 'kotlin-android' 3*890232f2SAndroid Build Coastguard Workerapply plugin: 'kotlin-android-extensions' 4*890232f2SAndroid Build Coastguard Worker 5*890232f2SAndroid Build Coastguard Workerandroid { 6*890232f2SAndroid Build Coastguard Worker compileSdkVersion 30 7*890232f2SAndroid Build Coastguard Worker buildToolsVersion "30.0.2" 8*890232f2SAndroid Build Coastguard Worker 9*890232f2SAndroid Build Coastguard Worker defaultConfig { 10*890232f2SAndroid Build Coastguard Worker applicationId "com.flatbuffers.app" 11*890232f2SAndroid Build Coastguard Worker minSdkVersion 16 12*890232f2SAndroid Build Coastguard Worker targetSdkVersion 30 13*890232f2SAndroid Build Coastguard Worker versionCode 1 14*890232f2SAndroid Build Coastguard Worker versionName "1.0" 15*890232f2SAndroid Build Coastguard Worker 16*890232f2SAndroid Build Coastguard Worker compileOptions { 17*890232f2SAndroid Build Coastguard Worker sourceCompatibility JavaVersion.VERSION_1_8 18*890232f2SAndroid Build Coastguard Worker targetCompatibility JavaVersion.VERSION_1_8 19*890232f2SAndroid Build Coastguard Worker } 20*890232f2SAndroid Build Coastguard Worker 21*890232f2SAndroid Build Coastguard Worker ndk { 22*890232f2SAndroid Build Coastguard Worker abiFilters 'arm64-v8a', 'armeabi-v7a' 23*890232f2SAndroid Build Coastguard Worker } 24*890232f2SAndroid Build Coastguard Worker 25*890232f2SAndroid Build Coastguard Worker testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 26*890232f2SAndroid Build Coastguard Worker externalNativeBuild { 27*890232f2SAndroid Build Coastguard Worker cmake { 28*890232f2SAndroid Build Coastguard Worker arguments "-DFLATBUFFERS_SRC=${rootProject.projectDir}/.." 29*890232f2SAndroid Build Coastguard Worker } 30*890232f2SAndroid Build Coastguard Worker } 31*890232f2SAndroid Build Coastguard Worker } 32*890232f2SAndroid Build Coastguard Worker 33*890232f2SAndroid Build Coastguard Worker buildTypes { 34*890232f2SAndroid Build Coastguard Worker release { 35*890232f2SAndroid Build Coastguard Worker minifyEnabled false 36*890232f2SAndroid Build Coastguard Worker proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 37*890232f2SAndroid Build Coastguard Worker } 38*890232f2SAndroid Build Coastguard Worker } 39*890232f2SAndroid Build Coastguard Worker 40*890232f2SAndroid Build Coastguard Worker externalNativeBuild { 41*890232f2SAndroid Build Coastguard Worker cmake { 42*890232f2SAndroid Build Coastguard Worker path "src/main/cpp/CMakeLists.txt" 43*890232f2SAndroid Build Coastguard Worker } 44*890232f2SAndroid Build Coastguard Worker } 45*890232f2SAndroid Build Coastguard Worker 46*890232f2SAndroid Build Coastguard Worker task generateFbsCpp(type: Exec) { 47*890232f2SAndroid Build Coastguard Worker def inputDir = file("$projectDir/src/main/fbs") 48*890232f2SAndroid Build Coastguard Worker def outputCppDir = file("$projectDir/src/main/cpp/generated/") 49*890232f2SAndroid Build Coastguard Worker def fbsFiles = layout.files { file(inputDir).listFiles() }.filter { File f -> f.name.endsWith(".fbs") }.toList() 50*890232f2SAndroid Build Coastguard Worker ignoreExitValue(true) 51*890232f2SAndroid Build Coastguard Worker 52*890232f2SAndroid Build Coastguard Worker standardOutput = new ByteArrayOutputStream() 53*890232f2SAndroid Build Coastguard Worker errorOutput = new ByteArrayOutputStream() 54*890232f2SAndroid Build Coastguard Worker def commandLineArgs = ['flatc', '-o', outputCppDir, '--cpp'] 55*890232f2SAndroid Build Coastguard Worker fbsFiles.forEach{ 56*890232f2SAndroid Build Coastguard Worker commandLineArgs.add(it.path) 57*890232f2SAndroid Build Coastguard Worker } 58*890232f2SAndroid Build Coastguard Worker 59*890232f2SAndroid Build Coastguard Worker commandLine commandLineArgs 60*890232f2SAndroid Build Coastguard Worker 61*890232f2SAndroid Build Coastguard Worker doFirst { 62*890232f2SAndroid Build Coastguard Worker delete "$outputCppDir/" 63*890232f2SAndroid Build Coastguard Worker mkdir "$outputCppDir/" 64*890232f2SAndroid Build Coastguard Worker } 65*890232f2SAndroid Build Coastguard Worker 66*890232f2SAndroid Build Coastguard Worker doLast { 67*890232f2SAndroid Build Coastguard Worker if (executionResult.get().exitValue != 0) { 68*890232f2SAndroid Build Coastguard Worker throw new GradleException("flatc failed with: ${executionResult.get().toString()}") 69*890232f2SAndroid Build Coastguard Worker } 70*890232f2SAndroid Build Coastguard Worker } 71*890232f2SAndroid Build Coastguard Worker } 72*890232f2SAndroid Build Coastguard Worker 73*890232f2SAndroid Build Coastguard Worker task generateFbsKotlin(type: Exec) { 74*890232f2SAndroid Build Coastguard Worker def inputDir = file("$projectDir/src/main/fbs") 75*890232f2SAndroid Build Coastguard Worker def outputKotlinDir = file("$projectDir/src/main/java/generated/") 76*890232f2SAndroid Build Coastguard Worker def fbsFiles = layout.files { file(inputDir).listFiles() }.filter { File f -> f.name.endsWith(".fbs") }.toList() 77*890232f2SAndroid Build Coastguard Worker ignoreExitValue(true) 78*890232f2SAndroid Build Coastguard Worker 79*890232f2SAndroid Build Coastguard Worker standardOutput = new ByteArrayOutputStream() 80*890232f2SAndroid Build Coastguard Worker errorOutput = new ByteArrayOutputStream() 81*890232f2SAndroid Build Coastguard Worker 82*890232f2SAndroid Build Coastguard Worker setErrorOutput(errorOutput) 83*890232f2SAndroid Build Coastguard Worker setStandardOutput(standardOutput) 84*890232f2SAndroid Build Coastguard Worker 85*890232f2SAndroid Build Coastguard Worker def commandLineArgs = ['flatc', '-o', outputKotlinDir, '--kotlin'] 86*890232f2SAndroid Build Coastguard Worker fbsFiles.forEach{ 87*890232f2SAndroid Build Coastguard Worker commandLineArgs.add(it.path) 88*890232f2SAndroid Build Coastguard Worker } 89*890232f2SAndroid Build Coastguard Worker commandLine commandLineArgs 90*890232f2SAndroid Build Coastguard Worker 91*890232f2SAndroid Build Coastguard Worker doFirst { 92*890232f2SAndroid Build Coastguard Worker delete "$outputKotlinDir/" 93*890232f2SAndroid Build Coastguard Worker mkdir "$outputKotlinDir/" 94*890232f2SAndroid Build Coastguard Worker } 95*890232f2SAndroid Build Coastguard Worker doLast { 96*890232f2SAndroid Build Coastguard Worker if (executionResult.get().exitValue != 0) { 97*890232f2SAndroid Build Coastguard Worker throw new GradleException("flatc failed with: ${executionResult.get().toString()}") 98*890232f2SAndroid Build Coastguard Worker } 99*890232f2SAndroid Build Coastguard Worker } 100*890232f2SAndroid Build Coastguard Worker } 101*890232f2SAndroid Build Coastguard Worker 102*890232f2SAndroid Build Coastguard Worker afterEvaluate { 103*890232f2SAndroid Build Coastguard Worker tasks.named("preBuild") { 104*890232f2SAndroid Build Coastguard Worker dependsOn(generateFbsKotlin) 105*890232f2SAndroid Build Coastguard Worker dependsOn(generateFbsCpp) 106*890232f2SAndroid Build Coastguard Worker } 107*890232f2SAndroid Build Coastguard Worker } 108*890232f2SAndroid Build Coastguard Worker 109*890232f2SAndroid Build Coastguard Worker// flavorDimensions "stl-variant" 110*890232f2SAndroid Build Coastguard Worker// productFlavors { 111*890232f2SAndroid Build Coastguard Worker// gnustl { 112*890232f2SAndroid Build Coastguard Worker// dimension "stl-variant" 113*890232f2SAndroid Build Coastguard Worker// applicationIdSuffix ".gnustl" 114*890232f2SAndroid Build Coastguard Worker// versionNameSuffix "-gnustl" 115*890232f2SAndroid Build Coastguard Worker// externalNativeBuild { 116*890232f2SAndroid Build Coastguard Worker// ndkBuild { 117*890232f2SAndroid Build Coastguard Worker// arguments "APP_STL=gnustl_static" 118*890232f2SAndroid Build Coastguard Worker// } 119*890232f2SAndroid Build Coastguard Worker// } 120*890232f2SAndroid Build Coastguard Worker// } 121*890232f2SAndroid Build Coastguard Worker// libcpp { 122*890232f2SAndroid Build Coastguard Worker// dimension "stl-variant" 123*890232f2SAndroid Build Coastguard Worker// applicationIdSuffix ".libcpp" 124*890232f2SAndroid Build Coastguard Worker// versionNameSuffix "-libcpp" 125*890232f2SAndroid Build Coastguard Worker// externalNativeBuild { 126*890232f2SAndroid Build Coastguard Worker// ndkBuild { 127*890232f2SAndroid Build Coastguard Worker// arguments "APP_STL=c++_static" 128*890232f2SAndroid Build Coastguard Worker// } 129*890232f2SAndroid Build Coastguard Worker// } 130*890232f2SAndroid Build Coastguard Worker// } 131*890232f2SAndroid Build Coastguard Worker// } 132*890232f2SAndroid Build Coastguard Worker} 133*890232f2SAndroid Build Coastguard Worker 134*890232f2SAndroid Build Coastguard Workerdependencies { 135*890232f2SAndroid Build Coastguard Worker implementation fileTree(dir: "libs", include: ["*.jar"]) 136*890232f2SAndroid Build Coastguard Worker implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 137*890232f2SAndroid Build Coastguard Worker implementation 'androidx.core:core-ktx:1.3.2' 138*890232f2SAndroid Build Coastguard Worker implementation 'androidx.appcompat:appcompat:1.2.0' 139*890232f2SAndroid Build Coastguard Worker implementation 'com.google.flatbuffers:flatbuffers-java:2.0.0' 140*890232f2SAndroid Build Coastguard Worker 141*890232f2SAndroid Build Coastguard Worker} 142