I think I must be missing something here, as far as I'm aware I've tried these approaches after reading a number of articles and I can't seem to get things working. I'm triggering these builds manually at the moment, using the command that detox would use which is ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug
though I've also tried using npx detox build --configuration android.emu.debug
directly too.
My error is a typical minSdkVersion mismatch:
uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in library [com.facebook.react:react-native:0.64.0] /home/iw651/.gradle/caches/transforms-2/files-2.1/354c8f3d479b5a1203bfff874da058bc/jetified-react-native-0.64.0/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 21,
or use tools:overrideLibrary="com.facebook.react" to force usage (may lead to runtime failures)
build.gradle
So the things that are confusing me somewhat, are firstly my project's minSdkVersion
is set to at least 21... This is the top of my /android/build.gradle
file:
buildscript {
ext {
buildToolsVersion = "29.0.3"
minSdkVersion = 23
compileSdkVersion = 29
targetSdkVersion = 29
kotlinVersion = '1.3.61'
ndkVersion = "20.1.5948944"
}
Within my android/app/build.gradle
I have the following:
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled true
...
}
So really I believe the following has been done. But it's obviously still throwing an error.
or increase this project's minSdk version to at least 2
tools:overrideLibrary
I'm not exactly sure how to do this, I've tried setting this in my /android/app/src/debug/AndroidManifest.xml
file. I've tried a few permutations:
<uses-sdk minSdkVersion="16" tools:overrideLibrary="com.facebook.react"/>
<uses-sdk minSdkVersion="21" tools:overrideLibrary="com.facebook.react"/>
<uses-sdk tools:overrideLibrary="com.facebook.react"/>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-sdk minSdkVersion="16" tools:overrideLibrary="com.facebook.react"/>
<application
android:usesCleartextTraffic="true"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>
None of those permutations seem to help either.
use a compatible library with a minSdk of at most 16
This just leaves me with this option, for which I'm going to raise a PR against the package in question. But it still doesn't help me build until a new release is made.
Can anyone see what I'm missing? Or could some caching be getting in the way between builds?