I am working on a Fabric Native component for Android as part of a React Native app and need to include a .aar
file as a dependency.
I have included a static lib file, mylibrary-debug.aar
in a directory called libs
that is a sibling to my src folder in the Fabric Native component's android folder. The lib can't be found when running react-native run-android
and this Fabric component is included in my node_modules.
The build.gradle is shown below.
buildscript {
ext.safeExtGet = {prop, fallback ->
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
repositories {
google()
gradlePluginPortal()
}
dependencies {
classpath("com.android.tools.build:gradle:7.3.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20")
}
}
def isNewArchitectureEnabled() {
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}
apply plugin: 'com.android.library'
if (isNewArchitectureEnabled()) {
apply plugin: 'com.facebook.react'
}
apply plugin: 'org.jetbrains.kotlin.android'
android {
compileSdkVersion safeExtGet('compileSdkVersion', 33)
namespace "com.composabletext"
defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 21)
targetSdkVersion safeExtGet('targetSdkVersion', 33)
buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true")
}
}
repositories {
mavenCentral()
google()
flatDir{
dirs 'libs'
}
}
dependencies {
implementation(name:'mylibrary-debug', ext:'aar')
implementation 'com.facebook.react:react-native'
}
This build.gradle configuration allows me to import Kotlin classes from com.mylibrary.*
in Android Studio and the gradle sync succeeds, but when I run react-native run android
and build the gradle project using this Fabric Native component's source code in the node_modules folder of my React Native Android app, the build fails with the following:
error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 -PreactNativeDebugArchitectures=arm64-v8a -PreactNativeArchitectures=arm64-v8a
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':composable-text:compileDebugAidl'.
> Could not resolve all task dependencies for configuration ':composable-text:debugCompileClasspath'.
> Could not find :mylibrary-debug:.
Required by:
project :composable-text
Why does it seem to work in Android Studio but fail when building the Android app?
I was able to fix this by putting the .aar library inside the example libs folder (sibling to src folder) and calling it on the example build.gradle like this:
and inside the parent android folder (outside example folder), I added the library like this:
The rootDir points to the android folder inside the example folder and loads the libraries inside
${rootDir}/app/libs