Files
flipper/android/build.gradle
Pascal Hartig 3d2a0e3eb2 Enable prefab for fbjni integration (#1941)
Summary:
I'm in the progress of releasing a prefab-enabled FBJNI release. This dramatically reduces the hackery around integrating with separately released native libraries.

This will fail until the release is actually out.

Pull Request resolved: https://github.com/facebook/flipper/pull/1941

Test Plan:
`./gradlew :sample:installDebug` works as before.
Once the release is out, we need to check if this creates any problems with RN but because we advice to exclude the dependency, I expect it not to cause any trouble.

Reviewed By: mweststrate

Differential Revision: D26545104

Pulled By: passy

fbshipit-source-id: 1e21fa1816f28e2fcb52da68863fabc8bc625136
2021-02-24 06:20:12 -08:00

129 lines
3.2 KiB
Groovy

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
apply plugin: 'com.android.library'
apply plugin: 'maven'
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
ndkVersion rootProject.ndkVersion
// Uncomment this and enable the database plugin test when roboelectric is upgraded
// testOptions.unitTests.includeAndroidResources = true
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
buildConfigField "boolean", "IS_INTERNAL_BUILD", 'true'
buildConfigField "boolean", "IS_ASAN_BUILD", 'false'
buildConfigField "boolean", "LOAD_FLIPPER_EXPLICIT", 'false'
ndk {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared'
targets 'flipper', 'event_shared', 'event_extra_shared', 'event_core_shared'
}
}
}
lintOptions {
abortOnError false
}
configurations {
extractHeaders
extractJNI
}
sourceSets {
test {
java {
exclude 'com/facebook/flipper/plugins/facebook/**'
}
}
}
buildFeatures {
prefab true
}
packagingOptions {
exclude("**/libfbjni.so")
exclude("**/libc++_shared.so")
}
externalNativeBuild {
cmake {
path './CMakeLists.txt'
}
}
dependencies {
compileOnly deps.proguardAnnotations
implementation 'com.facebook.fbjni:fbjni:0.1.0'
implementation deps.soloader
implementation deps.jsr305
implementation deps.supportAppCompat
implementation deps.supportSqlite
testImplementation deps.mockito
testImplementation deps.robolectric
testImplementation deps.testCore
testImplementation deps.testRules
testImplementation deps.hamcrest
testImplementation deps.junit
}
}
preBuild.dependsOn(tasks.getByPath(':third-party:prepare'))
apply plugin: 'com.vanniktech.maven.publish'
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
artifacts.add('archives', sourcesJar)
task extractAARHeaders {
doLast {
configurations.extractHeaders.files.each {
def file = it.absoluteFile
copy {
from zipTree(file)
into "$buildDir/$file.name"
include "**/*.h"
}
}
}
}
task extractJNIFiles {
doLast {
configurations.extractJNI.files.each {
def file = it.absoluteFile
copy {
from zipTree(file)
into "$buildDir/$file.name"
include "jni/**/*"
}
}
}
}
tasks.whenTaskAdded { task ->
if (task.name.contains('externalNativeBuild')) {
task.dependsOn(extractAARHeaders)
task.dependsOn(extractJNIFiles)
}
}