xref: /aosp_15_r20/external/flatbuffers/android/app/build.gradle (revision 890232f25432b36107d06881e0a25aaa6b473652)
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