Summary: This diff is part of the bigger task T60496135 This diff is based on D18706643, extracting only the react native module parts It implements the entire Android client api for JavaScript, so that there is feature parity. However this implementation is happy path only, and edge cases will be handled in separate diffs Reviewed By: jknoxville Differential Revision: D19310265 fbshipit-source-id: 589716fe059952bdde98df84ed250c5c6feaa118
164 lines
5.1 KiB
Groovy
164 lines
5.1 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.
|
|
*/
|
|
|
|
// android/build.gradle
|
|
|
|
// based on:
|
|
//
|
|
// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/build.gradle
|
|
// original location:
|
|
// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/build.gradle
|
|
//
|
|
// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/app/build.gradle
|
|
// original location:
|
|
// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle
|
|
|
|
def DEFAULT_COMPILE_SDK_VERSION = 28
|
|
def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'
|
|
def DEFAULT_MIN_SDK_VERSION = 16
|
|
def DEFAULT_TARGET_SDK_VERSION = 28
|
|
|
|
def safeExtGet(prop, fallback) {
|
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
apply plugin: 'maven'
|
|
|
|
buildscript {
|
|
// The Android Gradle plugin is only required when opening the android folder stand-alone.
|
|
// This avoids unnecessary downloads and potential conflicts when the library is included as a
|
|
// module dependency in an application project.
|
|
// ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
|
|
if (project == rootProject) {
|
|
repositories {
|
|
google()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:3.4.1'
|
|
}
|
|
}
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
apply plugin: 'maven'
|
|
|
|
android {
|
|
compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)
|
|
buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION)
|
|
defaultConfig {
|
|
minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
|
|
targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
|
|
versionCode 1
|
|
versionName "1.0"
|
|
}
|
|
lintOptions {
|
|
abortOnError false
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
// ref: https://www.baeldung.com/maven-local-repository
|
|
mavenLocal()
|
|
maven {
|
|
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
|
url "$rootDir/../node_modules/react-native/android"
|
|
}
|
|
maven {
|
|
// Android JSC is installed from npm
|
|
url "$rootDir/../node_modules/jsc-android/dist"
|
|
}
|
|
google()
|
|
jcenter()
|
|
}
|
|
|
|
dependencies {
|
|
//noinspection GradleDynamicVersion
|
|
implementation 'com.facebook.react:react-native:+' // From node_modules
|
|
|
|
implementation 'com.facebook.soloader:soloader:0.6.0+'
|
|
|
|
implementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
|
exclude group:'com.facebook.yoga'
|
|
exclude group:'com.facebook.flipper', module: 'fbjni'
|
|
exclude group:'com.facebook.litho', module: 'litho-annotations'
|
|
exclude group:'com.squareup.okhttp3'
|
|
}
|
|
}
|
|
|
|
def configureReactNativePom(def pom) {
|
|
def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text)
|
|
|
|
pom.project {
|
|
name packageJson.title
|
|
artifactId packageJson.name
|
|
version = packageJson.version
|
|
group = "com.facebook.flipper.reactnative"
|
|
description packageJson.description
|
|
url packageJson.repository.baseUrl
|
|
|
|
licenses {
|
|
license {
|
|
name packageJson.license
|
|
url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename
|
|
distribution 'repo'
|
|
}
|
|
}
|
|
|
|
developers {
|
|
developer {
|
|
id packageJson.author.username
|
|
name packageJson.author.name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
afterEvaluate { project ->
|
|
// some Gradle build hooks ref:
|
|
// https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html
|
|
task androidJavadoc(type: Javadoc) {
|
|
source = android.sourceSets.main.java.srcDirs
|
|
classpath += files(android.bootClasspath)
|
|
classpath += files(project.getConfigurations().getByName('compile').asList())
|
|
include '**/*.java'
|
|
}
|
|
|
|
task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
|
|
classifier = 'javadoc'
|
|
from androidJavadoc.destinationDir
|
|
}
|
|
|
|
task androidSourcesJar(type: Jar) {
|
|
classifier = 'sources'
|
|
from android.sourceSets.main.java.srcDirs
|
|
include '**/*.java'
|
|
}
|
|
|
|
android.libraryVariants.all { variant ->
|
|
def name = variant.name.capitalize()
|
|
task "jar${name}"(type: Jar, dependsOn: variant.javaCompile) {
|
|
from variant.javaCompile.destinationDir
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
archives androidSourcesJar
|
|
archives androidJavadocJar
|
|
}
|
|
|
|
task installArchives(type: Upload) {
|
|
configuration = configurations.archives
|
|
repositories.mavenDeployer {
|
|
// Deploy to react-native-event-bridge/maven, ready to publish to npm
|
|
repository url: "file://${projectDir}/../android/maven"
|
|
configureReactNativePom pom
|
|
}
|
|
}
|
|
}
|