11apply plugin : ' com.android.library'
2+ apply plugin : ' kotlin-android'
3+ apply plugin : ' kotlin-android-extensions'
4+
5+ buildscript {
6+ def kotlin_version = rootProject. ext. has(' kotlinVersion' ) ? rootProject. ext. get(' kotlinVersion' ) : project. properties[' RNSAC_kotlinVersion' ]
7+
8+ repositories {
9+ mavenCentral()
10+ }
11+
12+ dependencies {
13+ classpath(" org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version " )
14+ }
15+ }
216
317def safeExtGet (prop , fallback ) {
418 rootProject. ext. has(prop) ? rootProject. ext. get(prop) : fallback
519}
620
21+ def getExtOrDefault (name , defaultValue ) {
22+ return rootProject. ext. has(name) ? rootProject. ext. get(name) : defaultValue
23+ }
24+
25+ def isNewArchitectureEnabled () {
26+ // To opt-in for the New Architecture, you can either:
27+ // - Set `newArchEnabled` to true inside the `gradle.properties` file
28+ // - Invoke gradle with `-newArchEnabled=true`
29+ // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
30+ return project. hasProperty(" newArchEnabled" ) && project. newArchEnabled == " true"
31+ }
32+
733def useExoplayerIMA = safeExtGet(" RNVUseExoplayerIMA" , false )
834
935println " useExoplayerIMA:" + useExoplayerIMA
@@ -16,6 +42,10 @@ def configStringPath = (
1642 ' useExoplayerIMA' + useExoplayerIMA \
1743). md5()
1844
45+ if (isNewArchitectureEnabled()) {
46+ apply plugin : " com.facebook.react"
47+ }
48+
1949android {
2050 namespace ' com.brentvatne.react'
2151 compileSdkVersion safeExtGet(' compileSdkVersion' , 31 )
@@ -31,6 +61,15 @@ android {
3161 targetSdkVersion safeExtGet(' targetSdkVersion' , 28 )
3262 versionCode 1
3363 versionName " 1.0"
64+ buildConfigField " boolean" , " IS_NEW_ARCHITECTURE_ENABLED" , isNewArchitectureEnabled(). toString()
65+
66+ ndk {
67+ abiFilters(* reactNativeArchitectures())
68+ }
69+ }
70+
71+ packagingOptions {
72+ exclude " **/libreact_render*.so"
3473 }
3574
3675 compileOptions {
@@ -50,12 +89,39 @@ android {
5089 }
5190 }
5291 }
92+
93+ sourceSets. main {
94+ java {
95+ if (isNewArchitectureEnabled()) {
96+ srcDirs + = [
97+ " src/fabric/java" ,
98+ " ${ project.buildDir} /generated/source/codegen/java"
99+ ]
100+ } else {
101+ srcDirs + = [
102+ " src/oldarch/java"
103+ ]
104+ }
105+ }
106+ }
107+ }
108+
109+ def reactNativeArchitectures () {
110+ def value = project. getProperties(). get(" reactNativeArchitectures" )
111+ return value ? value. split(" ," ) : [" armeabi-v7a" , " x86" , " x86_64" , " arm64-v8a" ]
53112}
54113
55114repositories {
56115 google()
116+ maven {
117+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
118+ url " $rootDir /../node_modules/react-native/android"
119+ }
120+ mavenCentral()
57121}
58122
123+ def kotlin_version = getExtOrDefault(' kotlinVersion' , project. properties[' RNSAC_kotlinVersion' ])
124+
59125dependencies {
60126 implementation " com.facebook.react:react-native:${ safeExtGet('reactNativeVersion', '+')} "
61127 implementation(' com.google.android.exoplayer:exoplayer:2.18.1' ) {
@@ -76,4 +142,5 @@ dependencies {
76142 implementation ' com.google.android.exoplayer:extension-ima:2.18.1'
77143 }
78144 implementation " com.squareup.okhttp3:okhttp:" + ' $OKHTTP_VERSION'
145+ implementation " org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version "
79146}
0 commit comments