UNPKG

3.82 kBPlain TextView Raw
1def safeExtGet(prop, fallback) {
2 rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
3}
4
5buildscript {
6 if (project == rootProject) {
7 // The Android Gradle plugin is only required when opening the android folder stand-alone.
8 // This avoids unnecessary downloads and potential conflicts when the library is included as a
9 // module dependency in an application project.
10 repositories {
11 google()
12 jcenter()
13 }
14 dependencies {
15 classpath 'com.android.tools.build:gradle:3.5.2'
16 }
17 }
18}
19
20apply plugin: 'com.android.library'
21apply plugin: 'maven'
22
23android {
24 compileSdkVersion safeExtGet('compileSdkVersion', 28)
25 buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
26 defaultConfig {
27 minSdkVersion safeExtGet('minSdkVersion', 16)
28 targetSdkVersion safeExtGet('targetSdkVersion', 28)
29 versionCode 1
30 versionName "1.0"
31 }
32 lintOptions {
33 abortOnError false
34 }
35}
36
37repositories {
38 mavenLocal()
39 maven {
40 // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
41 url "$rootDir/../node_modules/react-native/android"
42 }
43 maven {
44 // Android JSC is installed from npm
45 url "$rootDir/../node_modules/jsc-android/dist"
46 }
47 google()
48 jcenter()
49}
50
51dependencies {
52 //noinspection GradleDynamicVersion
53 implementation 'com.facebook.react:react-native:+' // From node_modules
54 implementation "androidx.transition:transition:1.1.0"
55}
56
57def configureReactNativePom(def pom) {
58 def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text)
59
60 pom.project {
61 name packageJson.title
62 artifactId packageJson.name
63 version = packageJson.version
64 group = "com.swmansion.reanimated"
65 description packageJson.description
66 url packageJson.repository.baseUrl
67
68 licenses {
69 license {
70 name packageJson.license
71 url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename
72 distribution 'repo'
73 }
74 }
75
76 developers {
77 developer {
78 id packageJson.author.username
79 name packageJson.author.name
80 }
81 }
82 }
83}
84
85afterEvaluate { project ->
86
87 task androidJavadoc(type: Javadoc) {
88 source = android.sourceSets.main.java.srcDirs
89 classpath += files(android.bootClasspath)
90 classpath += files(project.getConfigurations().getByName('compile').asList())
91 include '**/*.java'
92 }
93
94 task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
95 classifier = 'javadoc'
96 from androidJavadoc.destinationDir
97 }
98
99 task androidSourcesJar(type: Jar) {
100 classifier = 'sources'
101 from android.sourceSets.main.java.srcDirs
102 include '**/*.java'
103 }
104
105 android.libraryVariants.all { variant ->
106 def compileTask
107 if (variant.hasProperty('javaCompileProvider')){
108 compileTask = variant.javaCompileProvider.get()
109 }else{
110 compileTask = variant.javaCompile
111 }
112
113 def name = variant.name.capitalize()
114 task "jar${name}"(type: Jar, dependsOn: compileTask) {
115 from compileTask.destinationDir
116 }
117 }
118
119 artifacts {
120 archives androidSourcesJar
121 archives androidJavadocJar
122 }
123
124 task installArchives(type: Upload) {
125 configuration = configurations.archives
126 repositories.mavenDeployer {
127 // Deploy to react-native-event-bridge/maven, ready to publish to npm
128 repository url: "file://${projectDir}/../android/maven"
129
130 configureReactNativePom pom
131 }
132 }
133}