
> echo Attempting build for agaxe-nalssieottae_app with Node 18 and jdk 17
Attempting build for agaxe-nalssieottae_app with Node 18 and jdk 17

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:18-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- clean gradle ----
                (./gradlew clean || true) && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration debugCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- build debug apk ----
                ./gradlew assembleDebug --no-daemon || exit 1 && 
                APK_PATH="app/build/outputs/apk/debug"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi
                # ---- copy output ----
                cp app/build/outputs/apk/debug/*.apk /output/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                mkdir -p /output/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 31.00s.
Downloading https://services.gradle.org/distributions/gradle-7.5.1-all.zip
...............10%................20%................30%................40%................50%................60%...............70%................80%................90%................100%

Welcome to Gradle 7.5.1!

Here are the highlights of this release:
 - Support for Java 18
 - Support for building with Groovy 4
 - Much more responsive continuous builds
 - Improved diagnostics for dependency resolution

For more details see https://docs.gradle.org/7.5.1/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors
> Task :react-native-gradle-plugin:processResources
> Task :react-native-gradle-plugin:classes
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC
> Task :react-native-gradle-plugin:jar
> Task :app:clean UP-TO-DATE
> Task :react-native-geolocation-service:clean UP-TO-DATE
> Task :react-native-permissions:clean UP-TO-DATE
> Task :react-native-splash-screen:clean UP-TO-DATE
> Task :react-native-svg:clean UP-TO-DATE

BUILD SUCCESSFUL in 2m 4s
10 actionable tasks: 5 executed, 5 up-to-date
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :app:buildCodegenCLI SKIPPED
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :app:generatePackageList
> Task :app:preBuild
> Task :app:preDebugBuild
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preDebugBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileDebugAidl NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preDebugBuild UP-TO-DATE
> Task :react-native-permissions:compileDebugAidl NO-SOURCE
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-splash-screen:preDebugBuild UP-TO-DATE
> Task :react-native-splash-screen:compileDebugAidl NO-SOURCE
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-svg:preDebugBuild UP-TO-DATE
> Task :react-native-svg:compileDebugAidl NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :react-native-geolocation-service:packageDebugRenderscript NO-SOURCE
> Task :react-native-permissions:packageDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:packageDebugRenderscript NO-SOURCE
> Task :react-native-svg:packageDebugRenderscript NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE
> Task :app:generateDebugBuildConfig
> Task :app:javaPreCompileDebug
> Task :react-native-permissions:writeDebugAarMetadata
> Task :react-native-geolocation-service:writeDebugAarMetadata
> Task :react-native-splash-screen:writeDebugAarMetadata
> Task :react-native-svg:writeDebugAarMetadata
> Task :app:generateDebugResValues
> Task :react-native-geolocation-service:compileDebugRenderscript NO-SOURCE
> Task :react-native-geolocation-service:generateDebugResValues
> Task :react-native-geolocation-service:generateDebugResources
> Task :app:checkDebugAarMetadata
> Task :react-native-geolocation-service:packageDebugResources
> Task :react-native-permissions:compileDebugRenderscript NO-SOURCE
> Task :react-native-permissions:generateDebugResValues
> Task :react-native-permissions:generateDebugResources
> Task :react-native-permissions:packageDebugResources
> Task :react-native-splash-screen:compileDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateDebugResValues
> Task :react-native-splash-screen:generateDebugResources
> Task :react-native-splash-screen:packageDebugResources
> Task :react-native-svg:compileDebugRenderscript NO-SOURCE
> Task :react-native-svg:generateDebugResValues
> Task :react-native-svg:generateDebugResources
> Task :react-native-svg:packageDebugResources
> Task :app:mapDebugSourceSetPaths
> Task :app:generateDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :react-native-geolocation-service:extractDeepLinksDebug
> Task :react-native-permissions:extractDeepLinksDebug
> Task :react-native-splash-screen:extractDeepLinksDebug
> Task :react-native-svg:extractDeepLinksDebug

> Task :react-native-svg:processDebugManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:processDebugManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-geolocation-service:processDebugManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:processDebugManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :app:mergeDebugResources
> Task :react-native-geolocation-service:compileDebugLibraryResources
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :react-native-permissions:compileDebugLibraryResources
> Task :react-native-splash-screen:compileDebugLibraryResources
> Task :react-native-svg:compileDebugLibraryResources
> Task :react-native-geolocation-service:parseDebugLocalResources
> Task :react-native-permissions:parseDebugLocalResources
> Task :react-native-svg:parseDebugLocalResources
> Task :react-native-geolocation-service:generateDebugBuildConfig
> Task :react-native-splash-screen:parseDebugLocalResources
> Task :app:processDebugManifestForPackage
> Task :react-native-geolocation-service:javaPreCompileDebug
> Task :react-native-permissions:generateDebugBuildConfig
> Task :react-native-permissions:javaPreCompileDebug
> Task :react-native-splash-screen:generateDebugBuildConfig
> Task :react-native-splash-screen:javaPreCompileDebug
> Task :react-native-svg:generateDebugBuildConfig
> Task :react-native-svg:javaPreCompileDebug
> Task :react-native-permissions:generateDebugRFile
> Task :app:mergeDebugShaders
> Task :react-native-svg:generateDebugRFile
> Task :react-native-geolocation-service:generateDebugRFile
> Task :react-native-splash-screen:generateDebugRFile

> Task :react-native-permissions:compileDebugJavaWithJavac
Note: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :app:processDebugResources

> Task :react-native-geolocation-service:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-permissions:bundleLibCompileToJarDebug
> Task :react-native-geolocation-service:bundleLibCompileToJarDebug
> Task :react-native-splash-screen:compileDebugJavaWithJavac
> Task :react-native-splash-screen:bundleLibCompileToJarDebug

> Task :react-native-svg:compileDebugJavaWithJavac
Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :react-native-geolocation-service:mergeDebugShaders
> Task :react-native-geolocation-service:compileDebugShaders NO-SOURCE
> Task :react-native-geolocation-service:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:bundleLibCompileToJarDebug
> Task :react-native-geolocation-service:packageDebugAssets
> Task :app:compileDebugJavaWithJavac
> Task :react-native-permissions:mergeDebugShaders
> Task :react-native-permissions:compileDebugShaders NO-SOURCE
> Task :react-native-permissions:generateDebugAssets UP-TO-DATE
> Task :react-native-permissions:packageDebugAssets
> Task :react-native-splash-screen:mergeDebugShaders
> Task :react-native-splash-screen:compileDebugShaders NO-SOURCE
> Task :react-native-splash-screen:generateDebugAssets UP-TO-DATE
> Task :react-native-splash-screen:packageDebugAssets
> Task :react-native-svg:mergeDebugShaders
> Task :react-native-svg:compileDebugShaders NO-SOURCE
> Task :react-native-svg:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:packageDebugAssets
> Task :app:mergeDebugAssets
> Task :app:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:bundleLibResDebug NO-SOURCE
> Task :react-native-permissions:processDebugJavaRes NO-SOURCE
> Task :react-native-permissions:bundleLibResDebug NO-SOURCE
> Task :react-native-splash-screen:processDebugJavaRes NO-SOURCE
> Task :react-native-splash-screen:bundleLibResDebug NO-SOURCE
> Task :react-native-svg:processDebugJavaRes NO-SOURCE
> Task :react-native-svg:bundleLibResDebug NO-SOURCE
> Task :app:compressDebugAssets
> Task :app:checkDebugDuplicateClasses
> Task :app:mergeDebugJavaResource
> Task :app:desugarDebugFileDependencies
> Task :app:mergeExtDexDebug
> Task :react-native-geolocation-service:bundleLibRuntimeToJarDebug
> Task :react-native-permissions:bundleLibRuntimeToJarDebug
> Task :react-native-splash-screen:bundleLibRuntimeToJarDebug
> Task :app:mergeDebugJniLibFolders
> Task :react-native-svg:bundleLibRuntimeToJarDebug
> Task :react-native-geolocation-service:mergeDebugJniLibFolders
> Task :app:dexBuilderDebug
> Task :react-native-geolocation-service:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectOnly
> Task :react-native-permissions:mergeDebugJniLibFolders
> Task :react-native-permissions:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-permissions:copyDebugJniLibsProjectOnly
> Task :react-native-splash-screen:mergeDebugJniLibFolders
> Task :react-native-splash-screen:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-splash-screen:copyDebugJniLibsProjectOnly
> Task :react-native-svg:mergeDebugJniLibFolders
> Task :react-native-svg:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-svg:copyDebugJniLibsProjectOnly
> Task :app:validateSigningDebug
> Task :app:mergeProjectDexDebug
> Task :app:writeDebugAppMetadata
> Task :app:writeDebugSigningConfigVersions
> Task :react-native-geolocation-service:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectAndLocalJars
> Task :app:mergeDebugNativeLibs
> Task :react-native-geolocation-service:extractDebugAnnotations
> Task :react-native-geolocation-service:extractDeepLinksForAarDebug
> Task :react-native-geolocation-service:mergeDebugGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeDebugConsumerProguardFiles
> Task :react-native-geolocation-service:prepareDebugArtProfile
> Task :react-native-permissions:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-permissions:extractDebugAnnotations
> Task :react-native-permissions:extractDeepLinksForAarDebug
> Task :react-native-permissions:mergeDebugGeneratedProguardFiles
> Task :react-native-permissions:mergeDebugConsumerProguardFiles
> Task :react-native-permissions:prepareDebugArtProfile
> Task :react-native-splash-screen:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-permissions:copyDebugJniLibsProjectAndLocalJars
> Task :app:mergeLibDexDebug
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :react-native-splash-screen:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-permissions:mergeDebugJavaResource
> Task :react-native-geolocation-service:mergeDebugJavaResource
> Task :react-native-splash-screen:extractDebugAnnotations
> Task :react-native-geolocation-service:syncDebugLibJars
> Task :react-native-geolocation-service:bundleDebugAar
> Task :react-native-geolocation-service:assembleDebug
> Task :react-native-permissions:syncDebugLibJars
> Task :react-native-permissions:bundleDebugAar
> Task :react-native-permissions:assembleDebug
> Task :react-native-splash-screen:extractDeepLinksForAarDebug
> Task :react-native-splash-screen:mergeDebugGeneratedProguardFiles
> Task :react-native-splash-screen:mergeDebugConsumerProguardFiles
> Task :react-native-splash-screen:prepareDebugArtProfile
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-svg:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-splash-screen:mergeDebugJavaResource
> Task :react-native-svg:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:syncDebugLibJars
> Task :react-native-splash-screen:bundleDebugAar
> Task :react-native-splash-screen:assembleDebug
> Task :react-native-svg:extractDebugAnnotations
> Task :react-native-svg:extractDeepLinksForAarDebug
> Task :react-native-svg:mergeDebugGeneratedProguardFiles
> Task :react-native-svg:mergeDebugConsumerProguardFiles
> Task :react-native-svg:prepareDebugArtProfile
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:mergeDebugJavaResource
> Task :react-native-svg:syncDebugLibJars

> Task :app:stripDebugDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcrypto.so, libcxxcomponents.so, libevent-2.1.so, libevent_core-2.1.so, libevent_extra-2.1.so, libfabricjni.so, libfb.so, libfbjni.so, libflipper.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libssl.so, libturbomodulejsijni.so, libyoga.so.

> Task :react-native-svg:bundleDebugAar
> Task :react-native-svg:assembleDebug
> Task :app:packageDebug
> Task :app:createDebugApkListingFileRedirect
> Task :app:assembleDebug

BUILD SUCCESSFUL in 2m 47s
145 actionable tasks: 140 executed, 5 up-to-date

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:18-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing parent package.json (monorepo metro configs) ----
                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && 
                # ---- patch toReversed (Node <20 compat) ----
                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i 's/\.toReversed()/.slice().reverse()/g' {} \; 2>/dev/null || true && 
                # ---- patch missing expo/AppEntry ----
                if grep -q '"main".*expo/AppEntry' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require('fs'); const p=JSON.parse(fs.readFileSync('package.json','utf8')); if(fs.existsSync('index.js')){p.main='index.js'; fs.writeFileSync('package.json',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && 
                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----
                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry
                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for
                # packages like @react-native-masked-view/masked-view to resolve.
                if grep -q 'react-native-monorepo-config' metro.config.js 2>/dev/null ||                    ! node -e "const c=require('./metro.config.js'); if(!c||typeof c!=='object') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf 'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");
module.exports = mergeConfig(getDefaultConfig(__dirname), {});
' > metro.config.js;                     else                         printf 'const {getDefaultConfig} = require("metro-config");
module.exports = getDefaultConfig(__dirname);
' > metro.config.js;                     fi;                 fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----
                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow
                # projects — patching before prebuild would be overwritten by the generated file.
                # Fix 1: remove customSerializer that returns JS string instead of JSON
                #   ("var __BUND..." → "Serializer did not return expected format").
                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel
                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).
                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q 'expo/metro-config\|@expo/metro-config' metro.config.js 2>/dev/null ||                      ! grep -q 'transformIgnorePatterns' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf 'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\n' > metro.config.js;                 fi && 
                # ---- stub missing metro watchFolders paths ----
                mkdir -p /src 2>/dev/null || true && 
                # ---- fix babel configs that use react-native-builder-bob ----
                # builder-bob is a library-dev tool; its getConfig() throws "Couldn't determine the source
                # directory" when built outside the library's own workspace. Replace with a standard preset.
                if grep -ql 'react-native-builder-bob' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf 'module.exports={presets:["module:@react-native/babel-preset"]};' > babel.config.js;                     else                         printf 'module.exports={presets:["module:metro-react-native-babel-preset"]};' > babel.config.js;                     fi;                 fi && 
                # ---- ensure TypeScript babel support (fixes 'interface' SyntaxError in metro bundling) ----
                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                 fi && 
                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----
                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.
                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".
                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf 'module.exports=require("@react-native/assets-registry/registry");' > node_modules/missing-asset-registry-path/index.js;                     else                         printf 'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && 
                # ---- stub @react-native-masked-view/masked-view if missing ----
                # Required by @react-navigation/elements but often not installed as a direct dependency.
                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf '{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf 'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- disable Sentry source map upload (no credentials in CI) ----
                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- enable R8 ----
                sed -i 's/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/' app/build.gradle || true && 
                # ---- sign release with debug key ----
                sed -i '/buildTypes/,/}/s/release {/release {
            signingConfig signingConfigs.debug/' app/build.gradle || true && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- build release apk ----
                ./gradlew assembleRelease --no-daemon || exit 1 &&                     
                APK_PATH="app/build/outputs/apk/release"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi

                # ---- copy output ----
                cp app/build/outputs/apk/release/*.apk /output/r8/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/r8/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                mkdir -p /output/r8/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 37.84s.
sed: -e expression #1, char 37: unterminated `s' command
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preReleaseBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:mergeReleaseJniLibFolders
> Task :react-native-geolocation-service:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:compileReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-geolocation-service:generateReleaseResValues
> Task :react-native-geolocation-service:extractDeepLinksForAarRelease
> Task :react-native-geolocation-service:generateReleaseBuildConfig
> Task :react-native-geolocation-service:generateReleaseResources
> Task :react-native-geolocation-service:packageReleaseResources
> Task :react-native-geolocation-service:mergeReleaseShaders
> Task :react-native-geolocation-service:javaPreCompileRelease
> Task :react-native-geolocation-service:compileReleaseShaders NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseAssets UP-TO-DATE
> Task :react-native-geolocation-service:packageReleaseAssets
> Task :react-native-geolocation-service:packageReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :react-native-geolocation-service:prepareReleaseArtProfile
> Task :react-native-geolocation-service:parseReleaseLocalResources
> Task :react-native-geolocation-service:processReleaseJavaRes NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:writeReleaseAarMetadata
> Task :react-native-permissions:mergeReleaseJniLibFolders
> Task :react-native-permissions:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-permissions:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-permissions:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-permissions:compileReleaseRenderscript NO-SOURCE

> Task :react-native-geolocation-service:processReleaseManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:generateReleaseResValues
> Task :react-native-geolocation-service:mergeReleaseJavaResource
> Task :react-native-permissions:extractDeepLinksForAarRelease
> Task :react-native-permissions:generateReleaseBuildConfig
> Task :react-native-permissions:generateReleaseResources
> Task :react-native-permissions:packageReleaseResources
> Task :react-native-permissions:parseReleaseLocalResources
> Task :react-native-permissions:javaPreCompileRelease

> Task :react-native-permissions:processReleaseManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:mergeReleaseShaders
> Task :react-native-permissions:compileReleaseShaders NO-SOURCE
> Task :react-native-permissions:generateReleaseAssets UP-TO-DATE
> Task :react-native-permissions:packageReleaseAssets
> Task :react-native-permissions:packageReleaseRenderscript NO-SOURCE
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-permissions:prepareReleaseArtProfile
> Task :react-native-permissions:processReleaseJavaRes NO-SOURCE
> Task :react-native-permissions:mergeReleaseJavaResource
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-splash-screen:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:writeReleaseAarMetadata
> Task :react-native-splash-screen:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseRFile
> Task :react-native-permissions:generateReleaseRFile
> Task :react-native-splash-screen:mergeReleaseJniLibFolders
> Task :react-native-geolocation-service:extractReleaseAnnotations
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-geolocation-service:compileReleaseJavaWithJavac

> Task :react-native-geolocation-service:mergeReleaseGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeReleaseConsumerProguardFiles
> Task :react-native-geolocation-service:syncReleaseLibJars
> Task :react-native-geolocation-service:bundleReleaseLocalLintAar
> Task :react-native-permissions:extractReleaseAnnotations

> Task :react-native-permissions:compileReleaseJavaWithJavac
Note: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-permissions:mergeReleaseGeneratedProguardFiles
> Task :react-native-permissions:mergeReleaseConsumerProguardFiles
> Task :react-native-permissions:syncReleaseLibJars
> Task :react-native-permissions:bundleReleaseLocalLintAar
> Task :react-native-splash-screen:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-splash-screen:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-splash-screen:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:compileReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateReleaseResValues
> Task :react-native-splash-screen:extractDeepLinksForAarRelease
> Task :react-native-splash-screen:generateReleaseBuildConfig
> Task :react-native-splash-screen:generateReleaseResources
> Task :react-native-splash-screen:packageReleaseResources
> Task :react-native-splash-screen:parseReleaseLocalResources
> Task :react-native-splash-screen:javaPreCompileRelease

> Task :react-native-splash-screen:processReleaseManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:mergeReleaseShaders
> Task :react-native-splash-screen:compileReleaseShaders NO-SOURCE
> Task :react-native-splash-screen:generateReleaseAssets UP-TO-DATE
> Task :react-native-splash-screen:packageReleaseAssets
> Task :react-native-splash-screen:packageReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-splash-screen:prepareReleaseArtProfile
> Task :react-native-splash-screen:processReleaseJavaRes NO-SOURCE
> Task :react-native-splash-screen:generateReleaseRFile
> Task :react-native-splash-screen:mergeReleaseJavaResource
> Task :react-native-splash-screen:writeReleaseAarMetadata
> Task :react-native-splash-screen:extractReleaseAnnotations
> Task :react-native-splash-screen:compileReleaseJavaWithJavac
> Task :react-native-splash-screen:mergeReleaseGeneratedProguardFiles
> Task :react-native-splash-screen:mergeReleaseConsumerProguardFiles
> Task :react-native-splash-screen:syncReleaseLibJars
> Task :react-native-splash-screen:bundleReleaseLocalLintAar
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-svg:preReleaseBuild UP-TO-DATE
> Task :react-native-svg:compileReleaseAidl NO-SOURCE
> Task :react-native-svg:mergeReleaseJniLibFolders
> Task :react-native-svg:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-svg:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-svg:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-svg:compileReleaseRenderscript NO-SOURCE
> Task :react-native-svg:generateReleaseResValues
> Task :react-native-svg:extractDeepLinksForAarRelease
> Task :react-native-svg:generateReleaseBuildConfig
> Task :react-native-svg:generateReleaseResources
> Task :react-native-svg:packageReleaseResources
> Task :react-native-svg:parseReleaseLocalResources
> Task :react-native-svg:javaPreCompileRelease

> Task :react-native-svg:processReleaseManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-svg:mergeReleaseShaders
> Task :react-native-svg:compileReleaseShaders NO-SOURCE
> Task :react-native-svg:generateReleaseAssets UP-TO-DATE
> Task :react-native-svg:packageReleaseAssets
> Task :react-native-svg:packageReleaseRenderscript NO-SOURCE
> Task :react-native-svg:generateReleaseRFile
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:extractReleaseAnnotations

> Task :react-native-svg:compileReleaseJavaWithJavac
Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-svg:mergeReleaseGeneratedProguardFiles
> Task :react-native-svg:mergeReleaseConsumerProguardFiles
> Task :react-native-svg:prepareReleaseArtProfile
> Task :react-native-svg:processReleaseJavaRes NO-SOURCE
> Task :react-native-svg:mergeReleaseJavaResource
> Task :app:buildCodegenCLI SKIPPED
> Task :react-native-svg:writeReleaseAarMetadata
> Task :react-native-svg:syncReleaseLibJars
> Task :react-native-svg:bundleReleaseLocalLintAar
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :app:generatePackageList
> Task :app:preBuild
> Task :app:preReleaseBuild
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:javaPreCompileRelease
> Task :app:generateReleaseResValues
> Task :app:checkReleaseAarMetadata
> Task :app:mapReleaseSourceSetPaths

> Task :app:createBundleReleaseJsAndAssets
warning: the transform cache was reset.
                Welcome to Metro v0.73.8
              Fast - Scalable - Integrated


info Writing bundle output to:, /app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle
info Writing sourcemap output to:, /app/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
info Done writing bundle output
info Done writing sourcemap output
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:1713:23: warning: the variable "DebuggerInternal" was not declared in function "__shouldPauseOnThrow"
        return typeof DebuggerInternal !== 'undefined' && DebuggerInternal.shouldPauseOnThrow === true;
                      ^~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:4933:7: warning: the variable "setTimeout" was not declared in function "logCapturedError"
      setTimeout(function () {
      ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:2907:108: warning: the variable "nativeFabricUIManager" was not declared in function "onChange"
      (fromOrTo = fromOrTo && fromOrTo.stateNode) && fromOrTo.canonical._internalInstanceHandle ? (from && nativeFabricUIManager.setIsJSResponder(from.stateNode.node, false, blockNativeResponder || false), to && nativeFabricUIManager.setIsJSResponder(to.stateNode.node, true, blockNativeResponder || false)) : null !== to ? _$$_REQUIRE(_dependencyMap[2]).UIManager.setJSResponder(to.stateNode.canonical._nativeTag, blockNativeResponder) : _$$_REQUIRE(_dependencyMap[2]).UIManager.clearJSResponder();
                                                                                                           ^~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:3514:21: warning: the variable "clearTimeout" was not declared in anonymous function " 98#"
    cancelTimeout = clearTimeout;
                    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:7264:30: warning: the variable "__REACT_DEVTOOLS_GLOBAL_HOOK__" was not declared in anonymous function " 98#"
  if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8033:5: warning: the variable "setImmediate" was not declared in function "handleResolved"
    setImmediate(function () {
    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8244:16: warning: the variable "AggregateError" was not declared in function "getAggregateError"
    if (typeof AggregateError === 'function') {
               ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10992:12: warning: the variable "fetch" was not declared in anonymous function " 301#"
    fetch: fetch,
           ^~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10993:14: warning: the variable "Headers" was not declared in anonymous function " 301#"
    Headers: Headers,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10994:14: warning: the variable "Request" was not declared in anonymous function " 301#"
    Request: Request,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10995:15: warning: the variable "Response" was not declared in anonymous function " 301#"
    Response: Response
              ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11143:24: warning: the variable "FileReader" was not declared in function "readBlobAsArrayBuffer"
      var reader = new FileReader();
                       ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11180:36: warning: the variable "Blob" was not declared in anonymous function " 312#"
        } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
                                   ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11182:40: warning: the variable "FormData" was not declared in anonymous function " 312#"
        } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
                                       ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11184:44: warning: the variable "URLSearchParams" was not declared in anonymous function " 312#"
        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
                                           ^~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11411:23: warning: the variable "XMLHttpRequest" was not declared in anonymous function " 321#"
        var xhr = new XMLHttpRequest();
                      ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11004:76: warning: the variable "self" was not declared in anonymous function " 304#"
    var global = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global;
                                                                           ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16643:27: warning: the variable "performance" was not declared in anonymous function " 560#"
  if ("object" === typeof performance && "function" === typeof performance.now) {
                          ^~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16666:26: warning: the variable "navigator" was not declared in anonymous function " 560#"
  "undefined" !== typeof navigator && undefined !== navigator.scheduling && undefined !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);
                         ^~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16733:37: warning: the variable "MessageChannel" was not declared in anonymous function " 560#"
  };else if ("undefined" !== typeof MessageChannel) {
                                    ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:24932:34: warning: the variable "requestAnimationFrame" was not declared in function "start 9#"
          this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));
                                 ^~~~~~~~~~~~~~~~~~~~~

> Task :app:generateReleaseResources
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease
> Task :react-native-geolocation-service:extractDeepLinksRelease
> Task :react-native-permissions:extractDeepLinksRelease
> Task :react-native-splash-screen:extractDeepLinksRelease
> Task :react-native-svg:extractDeepLinksRelease
> Task :app:mergeReleaseResources
> Task :app:processReleaseMainManifest
> Task :app:processReleaseManifest
> Task :react-native-geolocation-service:compileReleaseLibraryResources
> Task :react-native-permissions:compileReleaseLibraryResources
> Task :react-native-splash-screen:compileReleaseLibraryResources
> Task :react-native-svg:compileReleaseLibraryResources
> Task :react-native-permissions:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:bundleLibCompileToJarRelease
> Task :react-native-splash-screen:bundleLibCompileToJarRelease
> Task :app:extractProguardFiles
> Task :react-native-svg:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:bundleLibResRelease NO-SOURCE
> Task :react-native-geolocation-service:bundleLibRuntimeToJarRelease
> Task :react-native-geolocation-service:writeReleaseLintModelMetadata
> Task :react-native-geolocation-service:createFullJarRelease
> Task :react-native-permissions:bundleLibResRelease NO-SOURCE
> Task :react-native-permissions:bundleLibRuntimeToJarRelease
> Task :react-native-permissions:writeReleaseLintModelMetadata
> Task :react-native-permissions:createFullJarRelease
> Task :react-native-splash-screen:bundleLibResRelease NO-SOURCE
> Task :react-native-splash-screen:bundleLibRuntimeToJarRelease
> Task :react-native-splash-screen:writeReleaseLintModelMetadata
> Task :react-native-splash-screen:createFullJarRelease
> Task :react-native-svg:bundleLibResRelease NO-SOURCE
> Task :react-native-svg:writeReleaseLintModelMetadata
> Task :app:mergeReleaseJniLibFolders
> Task :react-native-svg:bundleLibRuntimeToJarRelease
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectOnly
> Task :react-native-permissions:copyReleaseJniLibsProjectOnly
> Task :app:processReleaseManifestForPackage
> Task :react-native-svg:createFullJarRelease
> Task :react-native-splash-screen:copyReleaseJniLibsProjectOnly
> Task :react-native-svg:copyReleaseJniLibsProjectOnly
> Task :app:processReleaseResources
> Task :app:mergeReleaseNativeLibs
> Task :app:compileReleaseJavaWithJavac

> Task :app:stripReleaseDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcxxcomponents.so, libfabricjni.so, libfb.so, libfbjni.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libturbomodulejsijni.so, libyoga.so.

> Task :app:checkReleaseDuplicateClasses
> Task :react-native-geolocation-service:exportReleaseConsumerProguardFiles
> Task :react-native-permissions:exportReleaseConsumerProguardFiles
> Task :react-native-splash-screen:exportReleaseConsumerProguardFiles
> Task :app:extractReleaseNativeSymbolTables
> Task :react-native-svg:exportReleaseConsumerProguardFiles
> Task :app:mergeReleaseArtProfile
> Task :app:mergeReleaseGeneratedProguardFiles
> Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :app:mergeReleaseJavaResource
> Task :app:compressReleaseAssets
> Task :app:collectReleaseDependencies
> Task :app:sdkReleaseDependencyData
> Task :app:writeReleaseAppMetadata
> Task :app:writeReleaseSigningConfigVersions
> Task :react-native-geolocation-service:bundleReleaseAar
> Task :react-native-geolocation-service:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:mergeReleaseResources
> Task :react-native-permissions:bundleReleaseAar
> Task :react-native-permissions:mapReleaseSourceSetPaths
> Task :react-native-permissions:mergeReleaseResources
> Task :react-native-splash-screen:bundleReleaseAar
> Task :react-native-splash-screen:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:verifyReleaseResources
> Task :react-native-permissions:verifyReleaseResources
> Task :react-native-splash-screen:mergeReleaseResources
> Task :react-native-geolocation-service:assembleRelease
> Task :react-native-permissions:assembleRelease
> Task :react-native-svg:bundleReleaseAar
> Task :react-native-svg:mapReleaseSourceSetPaths
> Task :app:lintVitalAnalyzeRelease
> Task :react-native-splash-screen:verifyReleaseResources
> Task :react-native-svg:mergeReleaseResources
> Task :react-native-splash-screen:assembleRelease
> Task :app:optimizeReleaseResources
> Task :app:lintVitalReportRelease
> Task :app:lintVitalRelease
> Task :react-native-svg:verifyReleaseResources
> Task :react-native-svg:assembleRelease
> Task :app:minifyReleaseWithR8
> Task :app:compileReleaseArtProfile
> Task :app:packageRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > SigningConfig "release" is missing required property "storeFile".

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 46s
179 actionable tasks: 174 executed, 5 up-to-date

> echo Build failed with Node 18 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:18-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.
Build failed with Node 18 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:18-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.

> echo Attempting build for agaxe-nalssieottae_app with Node 20 and jdk 17
Attempting build for agaxe-nalssieottae_app with Node 20 and jdk 17

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:20-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- clean gradle ----
                (./gradlew clean || true) && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration debugCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- build debug apk ----
                ./gradlew assembleDebug --no-daemon || exit 1 && 
                APK_PATH="app/build/outputs/apk/debug"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi
                # ---- copy output ----
                cp app/build/outputs/apk/debug/*.apk /output/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                mkdir -p /output/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 36.60s.
Downloading https://services.gradle.org/distributions/gradle-7.5.1-all.zip
...............10%................20%................30%................40%................50%................60%...............70%................80%................90%................100%

Welcome to Gradle 7.5.1!

Here are the highlights of this release:
 - Support for Java 18
 - Support for building with Groovy 4
 - Much more responsive continuous builds
 - Improved diagnostics for dependency resolution

For more details see https://docs.gradle.org/7.5.1/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors
> Task :react-native-gradle-plugin:processResources
> Task :react-native-gradle-plugin:classes
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC
> Task :react-native-gradle-plugin:jar
> Task :app:clean UP-TO-DATE
> Task :react-native-geolocation-service:clean UP-TO-DATE
> Task :react-native-permissions:clean UP-TO-DATE
> Task :react-native-splash-screen:clean UP-TO-DATE
> Task :react-native-svg:clean UP-TO-DATE

BUILD SUCCESSFUL in 2m 32s
10 actionable tasks: 5 executed, 5 up-to-date
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :app:buildCodegenCLI SKIPPED
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :app:generatePackageList
> Task :app:preBuild
> Task :app:preDebugBuild
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preDebugBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileDebugAidl NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preDebugBuild UP-TO-DATE
> Task :react-native-permissions:compileDebugAidl NO-SOURCE
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-splash-screen:preDebugBuild UP-TO-DATE
> Task :react-native-splash-screen:compileDebugAidl NO-SOURCE
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-svg:preDebugBuild UP-TO-DATE
> Task :react-native-svg:compileDebugAidl NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :react-native-geolocation-service:packageDebugRenderscript NO-SOURCE
> Task :react-native-permissions:packageDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:packageDebugRenderscript NO-SOURCE
> Task :react-native-svg:packageDebugRenderscript NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE
> Task :app:generateDebugBuildConfig
> Task :app:javaPreCompileDebug
> Task :react-native-geolocation-service:writeDebugAarMetadata
> Task :react-native-permissions:writeDebugAarMetadata
> Task :react-native-splash-screen:writeDebugAarMetadata
> Task :react-native-svg:writeDebugAarMetadata
> Task :app:generateDebugResValues
> Task :react-native-geolocation-service:compileDebugRenderscript NO-SOURCE
> Task :react-native-geolocation-service:generateDebugResValues
> Task :react-native-geolocation-service:generateDebugResources
> Task :app:checkDebugAarMetadata
> Task :react-native-geolocation-service:packageDebugResources
> Task :react-native-permissions:compileDebugRenderscript NO-SOURCE
> Task :react-native-permissions:generateDebugResValues
> Task :react-native-permissions:generateDebugResources
> Task :react-native-permissions:packageDebugResources
> Task :react-native-splash-screen:compileDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateDebugResValues
> Task :react-native-splash-screen:generateDebugResources
> Task :react-native-splash-screen:packageDebugResources
> Task :react-native-svg:compileDebugRenderscript NO-SOURCE
> Task :react-native-svg:generateDebugResValues
> Task :react-native-svg:generateDebugResources
> Task :react-native-svg:packageDebugResources
> Task :app:mapDebugSourceSetPaths
> Task :app:generateDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :react-native-geolocation-service:extractDeepLinksDebug
> Task :react-native-permissions:extractDeepLinksDebug
> Task :react-native-splash-screen:extractDeepLinksDebug
> Task :react-native-svg:extractDeepLinksDebug

> Task :react-native-geolocation-service:processDebugManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:processDebugManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-svg:processDebugManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:processDebugManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :app:mergeDebugResources
> Task :react-native-geolocation-service:compileDebugLibraryResources
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :react-native-permissions:compileDebugLibraryResources
> Task :react-native-splash-screen:compileDebugLibraryResources
> Task :react-native-svg:compileDebugLibraryResources
> Task :react-native-geolocation-service:generateDebugBuildConfig
> Task :react-native-geolocation-service:javaPreCompileDebug
> Task :react-native-permissions:parseDebugLocalResources
> Task :react-native-geolocation-service:parseDebugLocalResources
> Task :react-native-svg:parseDebugLocalResources
> Task :react-native-permissions:generateDebugBuildConfig
> Task :react-native-splash-screen:parseDebugLocalResources
> Task :app:processDebugManifestForPackage
> Task :react-native-splash-screen:generateDebugBuildConfig
> Task :react-native-permissions:javaPreCompileDebug
> Task :react-native-splash-screen:javaPreCompileDebug
> Task :react-native-svg:generateDebugBuildConfig
> Task :react-native-splash-screen:generateDebugRFile
> Task :react-native-permissions:generateDebugRFile
> Task :react-native-geolocation-service:generateDebugRFile
> Task :react-native-svg:generateDebugRFile
> Task :react-native-splash-screen:compileDebugJavaWithJavac
> Task :app:processDebugResources

> Task :react-native-geolocation-service:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-geolocation-service:bundleLibCompileToJarDebug

> Task :react-native-permissions:compileDebugJavaWithJavac

> Task :react-native-permissions:bundleLibCompileToJarDebug
> Task :react-native-splash-screen:bundleLibCompileToJarDebug
Note: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
> Task :react-native-svg:javaPreCompileDebug
> Task :app:mergeDebugShaders

> Task :react-native-svg:compileDebugJavaWithJavac
Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :react-native-geolocation-service:mergeDebugShaders
> Task :react-native-geolocation-service:compileDebugShaders NO-SOURCE
> Task :react-native-geolocation-service:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:bundleLibCompileToJarDebug
> Task :react-native-geolocation-service:packageDebugAssets
> Task :app:compileDebugJavaWithJavac
> Task :react-native-permissions:mergeDebugShaders
> Task :react-native-permissions:compileDebugShaders NO-SOURCE
> Task :react-native-permissions:generateDebugAssets UP-TO-DATE
> Task :react-native-permissions:packageDebugAssets
> Task :react-native-splash-screen:mergeDebugShaders
> Task :react-native-splash-screen:compileDebugShaders NO-SOURCE
> Task :react-native-splash-screen:generateDebugAssets UP-TO-DATE
> Task :react-native-splash-screen:packageDebugAssets
> Task :react-native-svg:mergeDebugShaders
> Task :react-native-svg:compileDebugShaders NO-SOURCE
> Task :react-native-svg:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:packageDebugAssets
> Task :app:mergeDebugAssets
> Task :app:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:bundleLibResDebug NO-SOURCE
> Task :react-native-permissions:processDebugJavaRes NO-SOURCE
> Task :react-native-permissions:bundleLibResDebug NO-SOURCE
> Task :react-native-splash-screen:processDebugJavaRes NO-SOURCE
> Task :react-native-splash-screen:bundleLibResDebug NO-SOURCE
> Task :react-native-svg:processDebugJavaRes NO-SOURCE
> Task :react-native-svg:bundleLibResDebug NO-SOURCE
> Task :app:compressDebugAssets
> Task :app:checkDebugDuplicateClasses
> Task :app:desugarDebugFileDependencies
> Task :app:mergeDebugJavaResource
> Task :app:mergeExtDexDebug
> Task :react-native-geolocation-service:bundleLibRuntimeToJarDebug
> Task :react-native-permissions:bundleLibRuntimeToJarDebug
> Task :react-native-splash-screen:bundleLibRuntimeToJarDebug
> Task :app:mergeDebugJniLibFolders
> Task :react-native-svg:bundleLibRuntimeToJarDebug
> Task :react-native-geolocation-service:mergeDebugJniLibFolders
> Task :app:dexBuilderDebug
> Task :react-native-geolocation-service:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectOnly
> Task :react-native-permissions:mergeDebugJniLibFolders
> Task :react-native-permissions:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-permissions:copyDebugJniLibsProjectOnly
> Task :react-native-splash-screen:mergeDebugJniLibFolders
> Task :react-native-splash-screen:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-splash-screen:copyDebugJniLibsProjectOnly
> Task :react-native-svg:mergeDebugJniLibFolders
> Task :react-native-svg:mergeDebugNativeLibs NO-SOURCE
> Task :app:validateSigningDebug
> Task :react-native-svg:copyDebugJniLibsProjectOnly
> Task :app:writeDebugAppMetadata
> Task :app:mergeProjectDexDebug
> Task :app:writeDebugSigningConfigVersions
> Task :react-native-geolocation-service:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectAndLocalJars
> Task :app:mergeDebugNativeLibs
> Task :react-native-geolocation-service:extractDebugAnnotations
> Task :react-native-geolocation-service:extractDeepLinksForAarDebug
> Task :react-native-geolocation-service:mergeDebugGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeDebugConsumerProguardFiles
> Task :react-native-geolocation-service:prepareDebugArtProfile
> Task :react-native-permissions:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-permissions:extractDebugAnnotations
> Task :react-native-permissions:extractDeepLinksForAarDebug
> Task :react-native-permissions:mergeDebugGeneratedProguardFiles
> Task :react-native-permissions:mergeDebugConsumerProguardFiles
> Task :react-native-permissions:prepareDebugArtProfile
> Task :react-native-splash-screen:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :react-native-splash-screen:extractDebugAnnotations
> Task :react-native-splash-screen:extractDeepLinksForAarDebug
> Task :react-native-splash-screen:mergeDebugGeneratedProguardFiles
> Task :react-native-splash-screen:mergeDebugConsumerProguardFiles
> Task :react-native-splash-screen:prepareDebugArtProfile
> Task :react-native-permissions:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-splash-screen:copyDebugJniLibsProjectAndLocalJars
> Task :app:mergeLibDexDebug
> Task :react-native-geolocation-service:mergeDebugJavaResource
> Task :react-native-permissions:mergeDebugJavaResource
> Task :react-native-splash-screen:mergeDebugJavaResource
> Task :react-native-svg:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:syncDebugLibJars
> Task :react-native-geolocation-service:bundleDebugAar
> Task :react-native-geolocation-service:assembleDebug
> Task :react-native-permissions:syncDebugLibJars
> Task :react-native-permissions:bundleDebugAar
> Task :react-native-permissions:assembleDebug
> Task :react-native-splash-screen:syncDebugLibJars
> Task :react-native-splash-screen:bundleDebugAar
> Task :react-native-splash-screen:assembleDebug
> Task :react-native-svg:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-svg:extractDebugAnnotations
> Task :react-native-svg:extractDeepLinksForAarDebug
> Task :react-native-svg:mergeDebugGeneratedProguardFiles
> Task :react-native-svg:mergeDebugConsumerProguardFiles
> Task :react-native-svg:prepareDebugArtProfile
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:mergeDebugJavaResource
> Task :react-native-svg:syncDebugLibJars

> Task :app:stripDebugDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcrypto.so, libcxxcomponents.so, libevent-2.1.so, libevent_core-2.1.so, libevent_extra-2.1.so, libfabricjni.so, libfb.so, libfbjni.so, libflipper.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libssl.so, libturbomodulejsijni.so, libyoga.so.

> Task :react-native-svg:bundleDebugAar
> Task :react-native-svg:assembleDebug
> Task :app:packageDebug
> Task :app:createDebugApkListingFileRedirect
> Task :app:assembleDebug

BUILD SUCCESSFUL in 3m 17s
145 actionable tasks: 140 executed, 5 up-to-date

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:20-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing parent package.json (monorepo metro configs) ----
                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && 
                # ---- patch toReversed (Node <20 compat) ----
                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i 's/\.toReversed()/.slice().reverse()/g' {} \; 2>/dev/null || true && 
                # ---- patch missing expo/AppEntry ----
                if grep -q '"main".*expo/AppEntry' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require('fs'); const p=JSON.parse(fs.readFileSync('package.json','utf8')); if(fs.existsSync('index.js')){p.main='index.js'; fs.writeFileSync('package.json',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && 
                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----
                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry
                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for
                # packages like @react-native-masked-view/masked-view to resolve.
                if grep -q 'react-native-monorepo-config' metro.config.js 2>/dev/null ||                    ! node -e "const c=require('./metro.config.js'); if(!c||typeof c!=='object') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf 'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");
module.exports = mergeConfig(getDefaultConfig(__dirname), {});
' > metro.config.js;                     else                         printf 'const {getDefaultConfig} = require("metro-config");
module.exports = getDefaultConfig(__dirname);
' > metro.config.js;                     fi;                 fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----
                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow
                # projects — patching before prebuild would be overwritten by the generated file.
                # Fix 1: remove customSerializer that returns JS string instead of JSON
                #   ("var __BUND..." → "Serializer did not return expected format").
                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel
                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).
                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q 'expo/metro-config\|@expo/metro-config' metro.config.js 2>/dev/null ||                      ! grep -q 'transformIgnorePatterns' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf 'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\n' > metro.config.js;                 fi && 
                # ---- stub missing metro watchFolders paths ----
                mkdir -p /src 2>/dev/null || true && 
                # ---- fix babel configs that use react-native-builder-bob ----
                # builder-bob is a library-dev tool; its getConfig() throws "Couldn't determine the source
                # directory" when built outside the library's own workspace. Replace with a standard preset.
                if grep -ql 'react-native-builder-bob' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf 'module.exports={presets:["module:@react-native/babel-preset"]};' > babel.config.js;                     else                         printf 'module.exports={presets:["module:metro-react-native-babel-preset"]};' > babel.config.js;                     fi;                 fi && 
                # ---- ensure TypeScript babel support (fixes 'interface' SyntaxError in metro bundling) ----
                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                 fi && 
                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----
                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.
                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".
                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf 'module.exports=require("@react-native/assets-registry/registry");' > node_modules/missing-asset-registry-path/index.js;                     else                         printf 'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && 
                # ---- stub @react-native-masked-view/masked-view if missing ----
                # Required by @react-navigation/elements but often not installed as a direct dependency.
                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf '{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf 'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- disable Sentry source map upload (no credentials in CI) ----
                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- enable R8 ----
                sed -i 's/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/' app/build.gradle || true && 
                # ---- sign release with debug key ----
                sed -i '/buildTypes/,/}/s/release {/release {
            signingConfig signingConfigs.debug/' app/build.gradle || true && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- build release apk ----
                ./gradlew assembleRelease --no-daemon || exit 1 &&                     
                APK_PATH="app/build/outputs/apk/release"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi

                # ---- copy output ----
                cp app/build/outputs/apk/release/*.apk /output/r8/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/r8/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                mkdir -p /output/r8/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 38.52s.
sed: -e expression #1, char 37: unterminated `s' command
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preReleaseBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:mergeReleaseJniLibFolders
> Task :react-native-geolocation-service:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:compileReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-geolocation-service:generateReleaseResValues
> Task :react-native-geolocation-service:extractDeepLinksForAarRelease
> Task :react-native-geolocation-service:generateReleaseBuildConfig
> Task :react-native-geolocation-service:generateReleaseResources
> Task :react-native-geolocation-service:packageReleaseResources
> Task :react-native-geolocation-service:javaPreCompileRelease
> Task :react-native-geolocation-service:mergeReleaseShaders
> Task :react-native-geolocation-service:compileReleaseShaders NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseAssets UP-TO-DATE
> Task :react-native-geolocation-service:packageReleaseAssets
> Task :react-native-geolocation-service:packageReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :react-native-geolocation-service:parseReleaseLocalResources
> Task :react-native-geolocation-service:prepareReleaseArtProfile
> Task :react-native-geolocation-service:processReleaseJavaRes NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:writeReleaseAarMetadata
> Task :react-native-permissions:mergeReleaseJniLibFolders
> Task :react-native-permissions:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-permissions:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-permissions:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-permissions:compileReleaseRenderscript NO-SOURCE
> Task :react-native-permissions:generateReleaseResValues

> Task :react-native-geolocation-service:processReleaseManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:extractDeepLinksForAarRelease
> Task :react-native-geolocation-service:mergeReleaseJavaResource
> Task :react-native-permissions:generateReleaseBuildConfig
> Task :react-native-permissions:generateReleaseResources
> Task :react-native-permissions:packageReleaseResources
> Task :react-native-permissions:parseReleaseLocalResources

> Task :react-native-permissions:processReleaseManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:javaPreCompileRelease
> Task :react-native-permissions:mergeReleaseShaders
> Task :react-native-permissions:compileReleaseShaders NO-SOURCE
> Task :react-native-permissions:generateReleaseAssets UP-TO-DATE
> Task :react-native-permissions:packageReleaseAssets
> Task :react-native-permissions:packageReleaseRenderscript NO-SOURCE
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-permissions:prepareReleaseArtProfile
> Task :react-native-permissions:processReleaseJavaRes NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseRFile
> Task :react-native-permissions:mergeReleaseJavaResource
> Task :react-native-permissions:generateReleaseRFile
> Task :react-native-geolocation-service:extractReleaseAnnotations
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-geolocation-service:compileReleaseJavaWithJavac

> Task :react-native-geolocation-service:mergeReleaseGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeReleaseConsumerProguardFiles
> Task :react-native-geolocation-service:syncReleaseLibJars
> Task :react-native-geolocation-service:bundleReleaseLocalLintAar
> Task :react-native-permissions:extractReleaseAnnotations

> Task :react-native-permissions:compileReleaseJavaWithJavac

> Task :react-native-permissions:mergeReleaseGeneratedProguardFilesNote: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-permissions:mergeReleaseConsumerProguardFiles
> Task :react-native-permissions:syncReleaseLibJars
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-splash-screen:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:writeReleaseAarMetadata
> Task :react-native-splash-screen:compileReleaseAidl NO-SOURCE
> Task :react-native-permissions:bundleReleaseLocalLintAar
> Task :react-native-splash-screen:mergeReleaseJniLibFolders
> Task :react-native-splash-screen:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-splash-screen:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-splash-screen:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:compileReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateReleaseResValues
> Task :react-native-splash-screen:extractDeepLinksForAarRelease
> Task :react-native-splash-screen:generateReleaseBuildConfig
> Task :react-native-splash-screen:generateReleaseResources
> Task :react-native-splash-screen:packageReleaseResources
> Task :react-native-splash-screen:javaPreCompileRelease
> Task :react-native-splash-screen:parseReleaseLocalResources

> Task :react-native-splash-screen:processReleaseManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:mergeReleaseShaders
> Task :react-native-splash-screen:compileReleaseShaders NO-SOURCE
> Task :react-native-splash-screen:generateReleaseAssets UP-TO-DATE
> Task :react-native-splash-screen:packageReleaseAssets
> Task :react-native-splash-screen:packageReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateReleaseRFile
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-splash-screen:extractReleaseAnnotations
> Task :react-native-splash-screen:compileReleaseJavaWithJavac
> Task :react-native-splash-screen:mergeReleaseGeneratedProguardFiles
> Task :react-native-splash-screen:mergeReleaseConsumerProguardFiles
> Task :react-native-splash-screen:prepareReleaseArtProfile
> Task :react-native-splash-screen:processReleaseJavaRes NO-SOURCE
> Task :react-native-splash-screen:mergeReleaseJavaResource
> Task :react-native-splash-screen:syncReleaseLibJars
> Task :react-native-splash-screen:writeReleaseAarMetadata
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-splash-screen:bundleReleaseLocalLintAar
> Task :react-native-svg:preReleaseBuild UP-TO-DATE
> Task :react-native-svg:compileReleaseAidl NO-SOURCE
> Task :react-native-svg:mergeReleaseJniLibFolders
> Task :react-native-svg:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-svg:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-svg:compileReleaseRenderscript NO-SOURCE
> Task :react-native-svg:generateReleaseResValues
> Task :react-native-svg:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-svg:extractDeepLinksForAarRelease
> Task :react-native-svg:generateReleaseBuildConfig
> Task :react-native-svg:generateReleaseResources
> Task :react-native-svg:packageReleaseResources
> Task :react-native-svg:parseReleaseLocalResources
> Task :react-native-svg:javaPreCompileRelease

> Task :react-native-svg:processReleaseManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-svg:mergeReleaseShaders
> Task :react-native-svg:compileReleaseShaders NO-SOURCE
> Task :react-native-svg:generateReleaseAssets UP-TO-DATE
> Task :react-native-svg:packageReleaseAssets
> Task :react-native-svg:packageReleaseRenderscript NO-SOURCE
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:generateReleaseRFile
> Task :react-native-svg:prepareReleaseArtProfile
> Task :react-native-svg:extractReleaseAnnotations

Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
> Task :react-native-svg:compileReleaseJavaWithJavac
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-svg:mergeReleaseGeneratedProguardFiles
> Task :react-native-svg:mergeReleaseConsumerProguardFiles
> Task :react-native-svg:processReleaseJavaRes NO-SOURCE
> Task :react-native-svg:mergeReleaseJavaResource
> Task :react-native-svg:writeReleaseAarMetadata
> Task :react-native-svg:syncReleaseLibJars
> Task :react-native-svg:bundleReleaseLocalLintAar
> Task :app:buildCodegenCLI SKIPPED
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :app:generatePackageList
> Task :app:preBuild
> Task :app:preReleaseBuild
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:javaPreCompileRelease
> Task :app:checkReleaseAarMetadata
> Task :app:generateReleaseResValues
> Task :app:mapReleaseSourceSetPaths

> Task :app:createBundleReleaseJsAndAssets
warning: the transform cache was reset.
                Welcome to Metro v0.73.8
              Fast - Scalable - Integrated


info Writing bundle output to:, /app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle
info Writing sourcemap output to:, /app/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
info Done writing bundle output
info Done writing sourcemap output
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:1713:23: warning: the variable "DebuggerInternal" was not declared in function "__shouldPauseOnThrow"
        return typeof DebuggerInternal !== 'undefined' && DebuggerInternal.shouldPauseOnThrow === true;
                      ^~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:4933:7: warning: the variable "setTimeout" was not declared in function "logCapturedError"
      setTimeout(function () {
      ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:2907:108: warning: the variable "nativeFabricUIManager" was not declared in function "onChange"
      (fromOrTo = fromOrTo && fromOrTo.stateNode) && fromOrTo.canonical._internalInstanceHandle ? (from && nativeFabricUIManager.setIsJSResponder(from.stateNode.node, false, blockNativeResponder || false), to && nativeFabricUIManager.setIsJSResponder(to.stateNode.node, true, blockNativeResponder || false)) : null !== to ? _$$_REQUIRE(_dependencyMap[2]).UIManager.setJSResponder(to.stateNode.canonical._nativeTag, blockNativeResponder) : _$$_REQUIRE(_dependencyMap[2]).UIManager.clearJSResponder();
                                                                                                           ^~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:3514:21: warning: the variable "clearTimeout" was not declared in anonymous function " 98#"
    cancelTimeout = clearTimeout;
                    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:7264:30: warning: the variable "__REACT_DEVTOOLS_GLOBAL_HOOK__" was not declared in anonymous function " 98#"
  if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8033:5: warning: the variable "setImmediate" was not declared in function "handleResolved"
    setImmediate(function () {
    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8244:16: warning: the variable "AggregateError" was not declared in function "getAggregateError"
    if (typeof AggregateError === 'function') {
               ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10992:12: warning: the variable "fetch" was not declared in anonymous function " 301#"
    fetch: fetch,
           ^~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10993:14: warning: the variable "Headers" was not declared in anonymous function " 301#"
    Headers: Headers,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10994:14: warning: the variable "Request" was not declared in anonymous function " 301#"
    Request: Request,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10995:15: warning: the variable "Response" was not declared in anonymous function " 301#"
    Response: Response
              ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11143:24: warning: the variable "FileReader" was not declared in function "readBlobAsArrayBuffer"
      var reader = new FileReader();
                       ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11180:36: warning: the variable "Blob" was not declared in anonymous function " 312#"
        } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
                                   ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11182:40: warning: the variable "FormData" was not declared in anonymous function " 312#"
        } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
                                       ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11184:44: warning: the variable "URLSearchParams" was not declared in anonymous function " 312#"
        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
                                           ^~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11411:23: warning: the variable "XMLHttpRequest" was not declared in anonymous function " 321#"
        var xhr = new XMLHttpRequest();
                      ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11004:76: warning: the variable "self" was not declared in anonymous function " 304#"
    var global = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global;
                                                                           ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16643:27: warning: the variable "performance" was not declared in anonymous function " 560#"
  if ("object" === typeof performance && "function" === typeof performance.now) {
                          ^~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16666:26: warning: the variable "navigator" was not declared in anonymous function " 560#"
  "undefined" !== typeof navigator && undefined !== navigator.scheduling && undefined !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);
                         ^~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16733:37: warning: the variable "MessageChannel" was not declared in anonymous function " 560#"
  };else if ("undefined" !== typeof MessageChannel) {
                                    ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:24932:34: warning: the variable "requestAnimationFrame" was not declared in function "start 9#"
          this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));
                                 ^~~~~~~~~~~~~~~~~~~~~

> Task :app:generateReleaseResources
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease
> Task :react-native-geolocation-service:extractDeepLinksRelease
> Task :react-native-permissions:extractDeepLinksRelease
> Task :react-native-splash-screen:extractDeepLinksRelease
> Task :react-native-svg:extractDeepLinksRelease
> Task :app:mergeReleaseResources
> Task :app:processReleaseMainManifest
> Task :app:processReleaseManifest
> Task :react-native-geolocation-service:compileReleaseLibraryResources
> Task :react-native-permissions:compileReleaseLibraryResources
> Task :react-native-splash-screen:compileReleaseLibraryResources
> Task :react-native-svg:compileReleaseLibraryResources
> Task :react-native-permissions:bundleLibCompileToJarRelease
> Task :react-native-splash-screen:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:bundleLibCompileToJarRelease
> Task :app:extractProguardFiles
> Task :react-native-geolocation-service:bundleLibResRelease NO-SOURCE
> Task :react-native-svg:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:writeReleaseLintModelMetadata
> Task :react-native-geolocation-service:bundleLibRuntimeToJarRelease
> Task :react-native-permissions:bundleLibResRelease NO-SOURCE
> Task :react-native-geolocation-service:createFullJarRelease
> Task :react-native-permissions:bundleLibRuntimeToJarRelease
> Task :react-native-permissions:createFullJarRelease
> Task :react-native-permissions:writeReleaseLintModelMetadata
> Task :react-native-splash-screen:bundleLibResRelease NO-SOURCE
> Task :react-native-splash-screen:bundleLibRuntimeToJarRelease
> Task :react-native-splash-screen:writeReleaseLintModelMetadata
> Task :react-native-splash-screen:createFullJarRelease
> Task :react-native-svg:bundleLibResRelease NO-SOURCE
> Task :react-native-svg:writeReleaseLintModelMetadata
> Task :app:mergeReleaseJniLibFolders
> Task :react-native-svg:bundleLibRuntimeToJarRelease
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectOnly
> Task :react-native-svg:createFullJarRelease
> Task :react-native-permissions:copyReleaseJniLibsProjectOnly
> Task :react-native-splash-screen:copyReleaseJniLibsProjectOnly
> Task :react-native-svg:copyReleaseJniLibsProjectOnly
> Task :app:mergeReleaseArtProfile
> Task :app:mergeReleaseNativeLibs
> Task :app:checkReleaseDuplicateClasses
> Task :app:processReleaseManifestForPackage
> Task :react-native-geolocation-service:exportReleaseConsumerProguardFiles
> Task :react-native-permissions:exportReleaseConsumerProguardFiles
> Task :react-native-splash-screen:exportReleaseConsumerProguardFiles

> Task :app:stripReleaseDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcxxcomponents.so, libfabricjni.so, libfb.so, libfbjni.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libturbomodulejsijni.so, libyoga.so.

> Task :app:processReleaseJavaRes NO-SOURCE
> Task :react-native-svg:exportReleaseConsumerProguardFiles
> Task :app:extractReleaseNativeSymbolTables
> Task :app:processReleaseResources
> Task :app:compileReleaseJavaWithJavac
> Task :app:mergeReleaseJavaResource
> Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :app:mergeReleaseGeneratedProguardFiles
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :app:compressReleaseAssets
> Task :app:collectReleaseDependencies
> Task :app:sdkReleaseDependencyData
> Task :app:writeReleaseAppMetadata
> Task :app:writeReleaseSigningConfigVersions
> Task :react-native-geolocation-service:bundleReleaseAar
> Task :react-native-geolocation-service:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:mergeReleaseResources
> Task :react-native-permissions:bundleReleaseAar
> Task :react-native-permissions:mapReleaseSourceSetPaths
> Task :react-native-permissions:mergeReleaseResources
> Task :react-native-splash-screen:bundleReleaseAar
> Task :react-native-splash-screen:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:verifyReleaseResources
> Task :react-native-splash-screen:mergeReleaseResources
> Task :react-native-geolocation-service:assembleRelease
> Task :react-native-svg:bundleReleaseAar
> Task :react-native-svg:mapReleaseSourceSetPaths
> Task :react-native-permissions:verifyReleaseResources
> Task :react-native-svg:mergeReleaseResources
> Task :react-native-permissions:assembleRelease
> Task :react-native-splash-screen:verifyReleaseResources
> Task :react-native-splash-screen:assembleRelease
> Task :app:optimizeReleaseResources
> Task :react-native-svg:verifyReleaseResources
> Task :react-native-svg:assembleRelease
> Task :app:lintVitalAnalyzeRelease
> Task :app:lintVitalReportRelease
> Task :app:lintVitalRelease
> Task :app:minifyReleaseWithR8
> Task :app:compileReleaseArtProfile
> Task :app:packageRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > SigningConfig "release" is missing required property "storeFile".

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 44s
179 actionable tasks: 174 executed, 5 up-to-date

> echo Build failed with Node 20 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:20-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.
Build failed with Node 20 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:20-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.

> echo Attempting build for agaxe-nalssieottae_app with Node 22 and jdk 17
Attempting build for agaxe-nalssieottae_app with Node 22 and jdk 17

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:22-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- clean gradle ----
                (./gradlew clean || true) && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration debugCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- build debug apk ----
                ./gradlew assembleDebug --no-daemon || exit 1 && 
                APK_PATH="app/build/outputs/apk/debug"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi
                # ---- copy output ----
                cp app/build/outputs/apk/debug/*.apk /output/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/ 2>/dev/null; done || true
                mkdir -p /output/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 37.30s.
Downloading https://services.gradle.org/distributions/gradle-7.5.1-all.zip
...............10%................20%................30%................40%................50%................60%...............70%................80%................90%................100%

Welcome to Gradle 7.5.1!

Here are the highlights of this release:
 - Support for Java 18
 - Support for building with Groovy 4
 - Much more responsive continuous builds
 - Improved diagnostics for dependency resolution

For more details see https://docs.gradle.org/7.5.1/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors
> Task :react-native-gradle-plugin:processResources
> Task :react-native-gradle-plugin:classes
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC
> Task :react-native-gradle-plugin:jar
> Task :app:clean UP-TO-DATE
> Task :react-native-geolocation-service:clean UP-TO-DATE
> Task :react-native-permissions:clean UP-TO-DATE
> Task :react-native-splash-screen:clean UP-TO-DATE
> Task :react-native-svg:clean UP-TO-DATE

BUILD SUCCESSFUL in 2m 27s
10 actionable tasks: 5 executed, 5 up-to-date
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :app:buildCodegenCLI SKIPPED
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :app:generatePackageList
> Task :app:preBuild
> Task :app:preDebugBuild
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preDebugBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileDebugAidl NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preDebugBuild UP-TO-DATE
> Task :react-native-permissions:compileDebugAidl NO-SOURCE
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-splash-screen:preDebugBuild UP-TO-DATE
> Task :react-native-splash-screen:compileDebugAidl NO-SOURCE
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-svg:preDebugBuild UP-TO-DATE
> Task :react-native-svg:compileDebugAidl NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :react-native-geolocation-service:packageDebugRenderscript NO-SOURCE
> Task :react-native-permissions:packageDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:packageDebugRenderscript NO-SOURCE
> Task :react-native-svg:packageDebugRenderscript NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE
> Task :app:generateDebugBuildConfig
> Task :app:javaPreCompileDebug
> Task :react-native-geolocation-service:writeDebugAarMetadata
> Task :react-native-permissions:writeDebugAarMetadata
> Task :react-native-splash-screen:writeDebugAarMetadata
> Task :react-native-svg:writeDebugAarMetadata
> Task :app:checkDebugAarMetadata
> Task :app:generateDebugResValues
> Task :react-native-geolocation-service:compileDebugRenderscript NO-SOURCE
> Task :react-native-geolocation-service:generateDebugResValues
> Task :react-native-geolocation-service:generateDebugResources
> Task :react-native-geolocation-service:packageDebugResources
> Task :react-native-permissions:compileDebugRenderscript NO-SOURCE
> Task :react-native-permissions:generateDebugResValues
> Task :react-native-permissions:generateDebugResources
> Task :react-native-permissions:packageDebugResources
> Task :react-native-splash-screen:compileDebugRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateDebugResValues
> Task :react-native-splash-screen:generateDebugResources
> Task :react-native-splash-screen:packageDebugResources
> Task :react-native-svg:compileDebugRenderscript NO-SOURCE
> Task :react-native-svg:generateDebugResValues
> Task :react-native-svg:generateDebugResources
> Task :react-native-svg:packageDebugResources
> Task :app:mapDebugSourceSetPaths
> Task :app:generateDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :react-native-geolocation-service:extractDeepLinksDebug
> Task :react-native-permissions:extractDeepLinksDebug
> Task :react-native-splash-screen:extractDeepLinksDebug
> Task :react-native-svg:extractDeepLinksDebug

> Task :react-native-permissions:processDebugManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-geolocation-service:processDebugManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-svg:processDebugManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:processDebugManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :app:mergeDebugResources
> Task :react-native-geolocation-service:compileDebugLibraryResources
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :app:processDebugManifestForPackage
> Task :react-native-permissions:compileDebugLibraryResources
> Task :react-native-splash-screen:compileDebugLibraryResources
> Task :react-native-svg:compileDebugLibraryResources
> Task :react-native-permissions:parseDebugLocalResources
> Task :react-native-geolocation-service:generateDebugBuildConfig
> Task :react-native-geolocation-service:parseDebugLocalResources
> Task :react-native-svg:parseDebugLocalResources
> Task :react-native-splash-screen:parseDebugLocalResources
> Task :react-native-geolocation-service:javaPreCompileDebug
> Task :react-native-permissions:generateDebugBuildConfig
> Task :react-native-permissions:javaPreCompileDebug
> Task :react-native-splash-screen:generateDebugBuildConfig
> Task :react-native-splash-screen:javaPreCompileDebug
> Task :react-native-svg:generateDebugBuildConfig
> Task :react-native-svg:javaPreCompileDebug
> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :react-native-geolocation-service:mergeDebugShaders
> Task :react-native-geolocation-service:compileDebugShaders NO-SOURCE
> Task :react-native-geolocation-service:generateDebugAssets UP-TO-DATE
> Task :react-native-geolocation-service:packageDebugAssets
> Task :react-native-permissions:mergeDebugShaders
> Task :react-native-permissions:compileDebugShaders NO-SOURCE
> Task :react-native-permissions:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:generateDebugRFile
> Task :react-native-geolocation-service:generateDebugRFile
> Task :react-native-permissions:generateDebugRFile
> Task :react-native-splash-screen:generateDebugRFile
> Task :react-native-permissions:packageDebugAssets
> Task :app:processDebugResources
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-geolocation-service:compileDebugJavaWithJavac

> Task :react-native-geolocation-service:bundleLibCompileToJarDebug

> Task :react-native-permissions:compileDebugJavaWithJavac
Note: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.
> Task :react-native-permissions:bundleLibCompileToJarDebug
> Task :react-native-splash-screen:compileDebugJavaWithJavac
> Task :react-native-splash-screen:bundleLibCompileToJarDebug

> Task :react-native-svg:compileDebugJavaWithJavac
Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-splash-screen:mergeDebugShaders
> Task :react-native-splash-screen:compileDebugShaders NO-SOURCE
> Task :react-native-splash-screen:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:bundleLibCompileToJarDebug
> Task :react-native-splash-screen:packageDebugAssets
> Task :app:compileDebugJavaWithJavac
> Task :react-native-svg:mergeDebugShaders
> Task :react-native-svg:compileDebugShaders NO-SOURCE
> Task :react-native-svg:generateDebugAssets UP-TO-DATE
> Task :react-native-svg:packageDebugAssets
> Task :app:mergeDebugAssets
> Task :app:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:processDebugJavaRes NO-SOURCE
> Task :react-native-geolocation-service:bundleLibResDebug NO-SOURCE
> Task :react-native-permissions:processDebugJavaRes NO-SOURCE
> Task :react-native-permissions:bundleLibResDebug NO-SOURCE
> Task :react-native-splash-screen:processDebugJavaRes NO-SOURCE
> Task :react-native-splash-screen:bundleLibResDebug NO-SOURCE
> Task :react-native-svg:processDebugJavaRes NO-SOURCE
> Task :react-native-svg:bundleLibResDebug NO-SOURCE
> Task :app:compressDebugAssets
> Task :app:checkDebugDuplicateClasses
> Task :app:desugarDebugFileDependencies
> Task :app:mergeDebugJavaResource
> Task :react-native-geolocation-service:bundleLibRuntimeToJarDebug
> Task :react-native-splash-screen:bundleLibRuntimeToJarDebug
> Task :react-native-permissions:bundleLibRuntimeToJarDebug
> Task :app:mergeDebugJniLibFolders
> Task :react-native-svg:bundleLibRuntimeToJarDebug
> Task :react-native-geolocation-service:mergeDebugJniLibFolders
> Task :app:dexBuilderDebug
> Task :react-native-geolocation-service:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectOnly
> Task :react-native-permissions:mergeDebugJniLibFolders
> Task :react-native-permissions:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-permissions:copyDebugJniLibsProjectOnly
> Task :react-native-splash-screen:mergeDebugJniLibFolders
> Task :react-native-splash-screen:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-splash-screen:copyDebugJniLibsProjectOnly
> Task :react-native-svg:mergeDebugJniLibFolders
> Task :react-native-svg:mergeDebugNativeLibs NO-SOURCE
> Task :react-native-svg:copyDebugJniLibsProjectOnly
> Task :app:validateSigningDebug
> Task :app:mergeProjectDexDebug
> Task :app:writeDebugAppMetadata
> Task :app:writeDebugSigningConfigVersions
> Task :react-native-geolocation-service:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:copyDebugJniLibsProjectAndLocalJars
> Task :app:mergeDebugNativeLibs
> Task :app:mergeExtDexDebug
> Task :react-native-geolocation-service:extractDebugAnnotations
> Task :react-native-geolocation-service:extractDeepLinksForAarDebug
> Task :react-native-geolocation-service:mergeDebugGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeDebugConsumerProguardFiles
> Task :react-native-geolocation-service:prepareDebugArtProfile
> Task :react-native-permissions:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-permissions:extractDebugAnnotations
> Task :react-native-permissions:extractDeepLinksForAarDebug
> Task :react-native-permissions:mergeDebugGeneratedProguardFiles
> Task :react-native-permissions:mergeDebugConsumerProguardFiles
> Task :react-native-permissions:prepareDebugArtProfile
> Task :react-native-permissions:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :app:mergeLibDexDebug
> Task :react-native-geolocation-service:mergeDebugJavaResource
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-permissions:mergeDebugJavaResource
> Task :react-native-geolocation-service:syncDebugLibJars
> Task :react-native-geolocation-service:bundleDebugAar
> Task :react-native-geolocation-service:assembleDebug
> Task :react-native-permissions:syncDebugLibJars
> Task :react-native-permissions:bundleDebugAar
> Task :react-native-permissions:assembleDebug
> Task :react-native-splash-screen:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-splash-screen:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:extractDebugAnnotations
> Task :react-native-splash-screen:extractDeepLinksForAarDebug
> Task :react-native-splash-screen:mergeDebugGeneratedProguardFiles
> Task :react-native-splash-screen:mergeDebugConsumerProguardFiles
> Task :react-native-splash-screen:prepareDebugArtProfile
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-svg:stripDebugDebugSymbols NO-SOURCE
> Task :react-native-svg:copyDebugJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:mergeDebugJavaResource
> Task :react-native-svg:extractDebugAnnotations
> Task :react-native-splash-screen:syncDebugLibJars
> Task :react-native-splash-screen:bundleDebugAar
> Task :react-native-splash-screen:assembleDebug
> Task :react-native-svg:extractDeepLinksForAarDebug
> Task :react-native-svg:mergeDebugGeneratedProguardFiles
> Task :react-native-svg:mergeDebugConsumerProguardFiles
> Task :react-native-svg:prepareDebugArtProfile
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:mergeDebugJavaResource
> Task :react-native-svg:syncDebugLibJars

> Task :app:stripDebugDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcrypto.so, libcxxcomponents.so, libevent-2.1.so, libevent_core-2.1.so, libevent_extra-2.1.so, libfabricjni.so, libfb.so, libfbjni.so, libflipper.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libssl.so, libturbomodulejsijni.so, libyoga.so.

> Task :react-native-svg:bundleDebugAar
> Task :react-native-svg:assembleDebug
> Task :app:packageDebug
> Task :app:createDebugApkListingFileRedirect
> Task :app:assembleDebug

BUILD SUCCESSFUL in 2m 24s
145 actionable tasks: 140 executed, 5 up-to-date

> docker run --rm -v /home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output -v /home/ubuntu/.npm:/root/.npm react-android:22-jdk17 bash -c 
                set -e

                cp -r /source/. /app &&                 cd /app && 
                # ---- install deps (yarn or npm) ----
                if [ -f yarn.lock ]; then
                    yarn install;
                else
                    npm install --ignore-scripts;
                fi && 
                # ---- stub missing parent package.json (monorepo metro configs) ----
                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && 
                # ---- patch toReversed (Node <20 compat) ----
                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i 's/\.toReversed()/.slice().reverse()/g' {} \; 2>/dev/null || true && 
                # ---- patch missing expo/AppEntry ----
                if grep -q '"main".*expo/AppEntry' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require('fs'); const p=JSON.parse(fs.readFileSync('package.json','utf8')); if(fs.existsSync('index.js')){p.main='index.js'; fs.writeFileSync('package.json',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && 
                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----
                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry
                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for
                # packages like @react-native-masked-view/masked-view to resolve.
                if grep -q 'react-native-monorepo-config' metro.config.js 2>/dev/null ||                    ! node -e "const c=require('./metro.config.js'); if(!c||typeof c!=='object') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf 'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");
module.exports = mergeConfig(getDefaultConfig(__dirname), {});
' > metro.config.js;                     else                         printf 'const {getDefaultConfig} = require("metro-config");
module.exports = getDefaultConfig(__dirname);
' > metro.config.js;                     fi;                 fi && 
                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----
                if [ ! -f google-services.json ]; then                     python3 -c "import json; open('google-services.json','w').write(json.dumps({'project_info':{'project_number':'000000000000','project_id':'stub','storage_bucket':'stub.appspot.com'},'client':[{'client_info':{'mobilesdk_app_id':'1:000000000000:android:0000000000000000','android_client_info':{'package_name':'com.stub'}},'oauth_client':[],'api_key':[{'current_key':'stub'}],'services':{'appinvite_service':{'other_platform_oauth_client':[]}}}],'configuration_version':'1'}))" 2>/dev/null || true;                 fi && 
                # ---- detect expo ----
                if grep -q '"expo"' package.json && [ ! -d android ]; then
                    echo "Expo project detected";
                    CI=1 npx --yes expo prebuild --platform android
                fi && 
                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----
                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow
                # projects — patching before prebuild would be overwritten by the generated file.
                # Fix 1: remove customSerializer that returns JS string instead of JSON
                #   ("var __BUND..." → "Serializer did not return expected format").
                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel
                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).
                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q 'expo/metro-config\|@expo/metro-config' metro.config.js 2>/dev/null ||                      ! grep -q 'transformIgnorePatterns' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf 'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\n' > metro.config.js;                 fi && 
                # ---- stub missing metro watchFolders paths ----
                mkdir -p /src 2>/dev/null || true && 
                # ---- fix babel configs that use react-native-builder-bob ----
                # builder-bob is a library-dev tool; its getConfig() throws "Couldn't determine the source
                # directory" when built outside the library's own workspace. Replace with a standard preset.
                if grep -ql 'react-native-builder-bob' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf 'module.exports={presets:["module:@react-native/babel-preset"]};' > babel.config.js;                     else                         printf 'module.exports={presets:["module:metro-react-native-babel-preset"]};' > babel.config.js;                     fi;                 fi && 
                # ---- ensure TypeScript babel support (fixes 'interface' SyntaxError in metro bundling) ----
                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf 'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};
' > babel.config.js;                 fi && 
                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----
                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.
                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".
                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf 'module.exports=require("@react-native/assets-registry/registry");' > node_modules/missing-asset-registry-path/index.js;                     else                         printf 'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && 
                # ---- stub @react-native-masked-view/masked-view if missing ----
                # Required by @react-navigation/elements but often not installed as a direct dependency.
                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf '{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf 'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && 
                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && 
                chmod +x gradlew && 
                # ---- inject fallback repositories via Gradle init script ----
                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo 'gradle.beforeProject {project ->' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.buildscript.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  project.repositories {' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://maven.google.com"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://repo1.maven.org/maven2"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://plugins.gradle.org/m2/"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '    maven {url "https://jitpack.io"}' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '  }' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo '}' >> $GRADLE_USER_HOME/init.d/repos.gradle && 
                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----
                sed -i 's/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\/.bin\/react-native config")/' settings.gradle 2>/dev/null || true && 
                # ---- disable Sentry source map upload (no credentials in CI) ----
                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && 
                # ---- enable ABI splits ----
                if grep -q 'splits' app/build.gradle 2>/dev/null; then                     sed -i 's/enable false/enable true/' app/build.gradle || true;                 else                     sed -i '/^android[[:space:]]*{/a\    splits {\n        abi {\n            reset()\n            enable true\n            universalApk false\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\n        }\n    }' app/build.gradle || true;                 fi && 
                # ---- enable R8 ----
                sed -i 's/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/' app/build.gradle || true && 
                # ---- sign release with debug key ----
                sed -i '/buildTypes/,/}/s/release {/release {
            signingConfig signingConfigs.debug/' app/build.gradle || true && 
                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----
                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && 
                # ---- build release apk ----
                ./gradlew assembleRelease --no-daemon || exit 1 &&                     
                APK_PATH="app/build/outputs/apk/release"

                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then
                    echo "ERROR: APK not generated"
                    exit 1
                fi

                # ---- copy output ----
                cp app/build/outputs/apk/release/*.apk /output/r8/

                # ---- copy TPL metadata ----
                [ -f ../package.json ] && cp ../package.json /output/r8/ || true
                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true
                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true
                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true
                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true
                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true
                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true
                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true
                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true
                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true
                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true
                mkdir -p /output/r8/libs
                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true
                    
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 28.01s.
sed: -e expression #1, char 37: unterminated `s' command
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.5.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 
> Task :react-native-gradle-plugin:compileKotlin UP-TO-DATE
> Task :react-native-gradle-plugin:compileJava NO-SOURCE
> Task :react-native-gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :react-native-gradle-plugin:processResources UP-TO-DATE
> Task :react-native-gradle-plugin:classes UP-TO-DATE
> Task :react-native-gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE
> Task :react-native-gradle-plugin:jar UP-TO-DATE
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 33 in /opt/android/licenses
License for package Android SDK Platform 33 accepted.
Preparing "Install Android SDK Platform 33 (revision: 3)".
"Install Android SDK Platform 33 (revision: 3)" ready.
Installing Android SDK Platform 33 in /opt/android/platforms/android-33
"Install Android SDK Platform 33 (revision: 3)" complete.
"Install Android SDK Platform 33 (revision: 3)" finished.
Checking the license for package Android SDK Build-Tools 33 in /opt/android/licenses
License for package Android SDK Build-Tools 33 accepted.
Preparing "Install Android SDK Build-Tools 33 (revision: 33.0.0)".
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" ready.
Installing Android SDK Build-Tools 33 in /opt/android/build-tools/33.0.0
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" complete.
"Install Android SDK Build-Tools 33 (revision: 33.0.0)" finished.
> Task :react-native-geolocation-service:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:preReleaseBuild UP-TO-DATE
> Task :react-native-geolocation-service:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:mergeReleaseJniLibFolders
> Task :react-native-geolocation-service:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-geolocation-service:compileReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseResValues
> Task :react-native-geolocation-service:extractDeepLinksForAarRelease
> Task :react-native-geolocation-service:generateReleaseBuildConfig
> Task :react-native-geolocation-service:generateReleaseResources
> Task :react-native-geolocation-service:packageReleaseResources
> Task :react-native-geolocation-service:parseReleaseLocalResources
> Task :react-native-geolocation-service:javaPreCompileRelease
> Task :react-native-geolocation-service:mergeReleaseShaders
> Task :react-native-geolocation-service:compileReleaseShaders NO-SOURCE
> Task :react-native-geolocation-service:generateReleaseAssets UP-TO-DATE
> Task :react-native-geolocation-service:packageReleaseAssets
> Task :react-native-geolocation-service:packageReleaseRenderscript NO-SOURCE
> Task :react-native-geolocation-service:prepareLintJarForPublish
> Task :react-native-geolocation-service:prepareReleaseArtProfile
> Task :react-native-geolocation-service:processReleaseJavaRes NO-SOURCE
> Task :react-native-permissions:preBuild UP-TO-DATE
> Task :react-native-permissions:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:compileReleaseAidl NO-SOURCE
> Task :react-native-geolocation-service:writeReleaseAarMetadata
> Task :react-native-permissions:mergeReleaseJniLibFolders

> Task :react-native-geolocation-service:processReleaseManifest
package="com.agontuk.RNFusedLocation" found in source AndroidManifest.xml: /app/node_modules/react-native-geolocation-service/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-geolocation-service:mergeReleaseJavaResource
> Task :react-native-permissions:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-permissions:compileReleaseRenderscript NO-SOURCE
> Task :react-native-permissions:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-permissions:generateReleaseResValues
> Task :react-native-permissions:extractDeepLinksForAarRelease
> Task :react-native-permissions:generateReleaseBuildConfig
> Task :react-native-permissions:generateReleaseResources
> Task :react-native-permissions:packageReleaseResources
> Task :react-native-permissions:parseReleaseLocalResources
> Task :react-native-permissions:javaPreCompileRelease

> Task :react-native-permissions:processReleaseManifest
package="com.zoontek.rnpermissions" found in source AndroidManifest.xml: /app/node_modules/react-native-permissions/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-permissions:mergeReleaseShaders
> Task :react-native-permissions:compileReleaseShaders NO-SOURCE
> Task :react-native-permissions:generateReleaseAssets UP-TO-DATE
> Task :react-native-permissions:packageReleaseAssets
> Task :react-native-permissions:packageReleaseRenderscript NO-SOURCE
> Task :react-native-permissions:prepareLintJarForPublish
> Task :react-native-permissions:prepareReleaseArtProfile
> Task :react-native-permissions:processReleaseJavaRes NO-SOURCE
> Task :react-native-splash-screen:preBuild UP-TO-DATE
> Task :react-native-geolocation-service:generateReleaseRFile
> Task :react-native-permissions:mergeReleaseJavaResource
> Task :react-native-splash-screen:preReleaseBuild UP-TO-DATE
> Task :react-native-permissions:generateReleaseRFile
> Task :react-native-permissions:writeReleaseAarMetadata
> Task :react-native-geolocation-service:extractReleaseAnnotations

> Task :react-native-geolocation-service:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :react-native-geolocation-service:mergeReleaseGeneratedProguardFiles
> Task :react-native-geolocation-service:mergeReleaseConsumerProguardFiles
> Task :react-native-geolocation-service:syncReleaseLibJars
> Task :react-native-geolocation-service:bundleReleaseLocalLintAar
> Task :react-native-permissions:extractReleaseAnnotations

> Task :react-native-permissions:compileReleaseJavaWithJavac

Note: /app/node_modules/react-native-permissions/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsPackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
> Task :react-native-permissions:mergeReleaseGeneratedProguardFiles
> Task :react-native-permissions:mergeReleaseConsumerProguardFiles
> Task :react-native-permissions:syncReleaseLibJars
> Task :react-native-permissions:bundleReleaseLocalLintAar
> Task :react-native-splash-screen:compileReleaseAidl NO-SOURCE
> Task :react-native-splash-screen:mergeReleaseJniLibFolders
> Task :react-native-splash-screen:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-splash-screen:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-splash-screen:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-splash-screen:compileReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:generateReleaseResValues
> Task :react-native-splash-screen:extractDeepLinksForAarRelease
> Task :react-native-splash-screen:generateReleaseBuildConfig
> Task :react-native-splash-screen:generateReleaseResources
> Task :react-native-splash-screen:packageReleaseResources
> Task :react-native-splash-screen:parseReleaseLocalResources
> Task :react-native-splash-screen:javaPreCompileRelease

> Task :react-native-splash-screen:processReleaseManifest
package="org.devio.rn.splashscreen" found in source AndroidManifest.xml: /app/node_modules/react-native-splash-screen/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-splash-screen:mergeReleaseShaders
> Task :react-native-splash-screen:compileReleaseShaders NO-SOURCE
> Task :react-native-splash-screen:generateReleaseAssets UP-TO-DATE
> Task :react-native-splash-screen:packageReleaseAssets
> Task :react-native-splash-screen:generateReleaseRFile
> Task :react-native-splash-screen:extractReleaseAnnotations
> Task :react-native-splash-screen:compileReleaseJavaWithJavac
> Task :react-native-splash-screen:mergeReleaseGeneratedProguardFiles
> Task :react-native-splash-screen:mergeReleaseConsumerProguardFiles
> Task :react-native-splash-screen:packageReleaseRenderscript NO-SOURCE
> Task :react-native-splash-screen:prepareLintJarForPublish
> Task :react-native-splash-screen:prepareReleaseArtProfile
> Task :react-native-splash-screen:processReleaseJavaRes NO-SOURCE
> Task :react-native-splash-screen:mergeReleaseJavaResource
> Task :react-native-splash-screen:writeReleaseAarMetadata
> Task :react-native-splash-screen:syncReleaseLibJars
> Task :react-native-splash-screen:bundleReleaseLocalLintAar
> Task :react-native-svg:preBuild UP-TO-DATE
> Task :react-native-svg:preReleaseBuild UP-TO-DATE
> Task :react-native-svg:compileReleaseAidl NO-SOURCE
> Task :react-native-svg:mergeReleaseJniLibFolders
> Task :react-native-svg:mergeReleaseNativeLibs NO-SOURCE
> Task :react-native-svg:stripReleaseDebugSymbols NO-SOURCE
> Task :react-native-svg:copyReleaseJniLibsProjectAndLocalJars
> Task :react-native-svg:compileReleaseRenderscript NO-SOURCE
> Task :react-native-svg:generateReleaseResValues
> Task :react-native-svg:extractDeepLinksForAarRelease
> Task :react-native-svg:generateReleaseBuildConfig
> Task :react-native-svg:generateReleaseResources
> Task :react-native-svg:packageReleaseResources
> Task :react-native-svg:parseReleaseLocalResources
> Task :react-native-svg:javaPreCompileRelease
> Task :react-native-svg:mergeReleaseShaders
> Task :react-native-svg:compileReleaseShaders NO-SOURCE
> Task :react-native-svg:generateReleaseAssets UP-TO-DATE

> Task :react-native-svg:processReleaseManifest
package="com.horcrux.svg" found in source AndroidManifest.xml: /app/node_modules/react-native-svg/android/src/main/AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

> Task :react-native-svg:packageReleaseAssets
> Task :react-native-svg:packageReleaseRenderscript NO-SOURCE
> Task :react-native-svg:prepareLintJarForPublish
> Task :react-native-svg:prepareReleaseArtProfile
> Task :react-native-svg:processReleaseJavaRes NO-SOURCE
> Task :app:buildCodegenCLI SKIPPED
> Task :react-native-svg:mergeReleaseJavaResource
> Task :app:generateCodegenSchemaFromJavaScript SKIPPED
> Task :app:generateCodegenArtifactsFromSchema SKIPPED
> Task :react-native-svg:writeReleaseAarMetadata
> Task :react-native-svg:generateReleaseRFile
> Task :app:generatePackageList
> Task :react-native-svg:extractReleaseAnnotations

> Task :react-native-svg:compileReleaseJavaWithJavac
Note: /app/node_modules/react-native-svg/android/src/main/java/com/horcrux/svg/VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :react-native-svg:mergeReleaseGeneratedProguardFiles
> Task :react-native-svg:mergeReleaseConsumerProguardFiles
> Task :react-native-svg:syncReleaseLibJars
> Task :react-native-svg:bundleReleaseLocalLintAar
> Task :app:preBuild
> Task :app:preReleaseBuild
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:javaPreCompileRelease
> Task :app:checkReleaseAarMetadata
> Task :app:generateReleaseResValues
> Task :app:mapReleaseSourceSetPaths

> Task :app:createBundleReleaseJsAndAssets
warning: the transform cache was reset.
                Welcome to Metro v0.73.8
              Fast - Scalable - Integrated


info Writing bundle output to:, /app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle
info Writing sourcemap output to:, /app/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
info Done writing bundle output
info Done writing sourcemap output
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:1713:23: warning: the variable "DebuggerInternal" was not declared in function "__shouldPauseOnThrow"
        return typeof DebuggerInternal !== 'undefined' && DebuggerInternal.shouldPauseOnThrow === true;
                      ^~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:4933:7: warning: the variable "setTimeout" was not declared in function "logCapturedError"
      setTimeout(function () {
      ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:2907:108: warning: the variable "nativeFabricUIManager" was not declared in function "onChange"
      (fromOrTo = fromOrTo && fromOrTo.stateNode) && fromOrTo.canonical._internalInstanceHandle ? (from && nativeFabricUIManager.setIsJSResponder(from.stateNode.node, false, blockNativeResponder || false), to && nativeFabricUIManager.setIsJSResponder(to.stateNode.node, true, blockNativeResponder || false)) : null !== to ? _$$_REQUIRE(_dependencyMap[2]).UIManager.setJSResponder(to.stateNode.canonical._nativeTag, blockNativeResponder) : _$$_REQUIRE(_dependencyMap[2]).UIManager.clearJSResponder();
                                                                                                           ^~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:3514:21: warning: the variable "clearTimeout" was not declared in anonymous function " 98#"
    cancelTimeout = clearTimeout;
                    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:7264:30: warning: the variable "__REACT_DEVTOOLS_GLOBAL_HOOK__" was not declared in anonymous function " 98#"
  if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8033:5: warning: the variable "setImmediate" was not declared in function "handleResolved"
    setImmediate(function () {
    ^~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:8244:16: warning: the variable "AggregateError" was not declared in function "getAggregateError"
    if (typeof AggregateError === 'function') {
               ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10992:12: warning: the variable "fetch" was not declared in anonymous function " 301#"
    fetch: fetch,
           ^~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10993:14: warning: the variable "Headers" was not declared in anonymous function " 301#"
    Headers: Headers,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10994:14: warning: the variable "Request" was not declared in anonymous function " 301#"
    Request: Request,
             ^~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:10995:15: warning: the variable "Response" was not declared in anonymous function " 301#"
    Response: Response
              ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11143:24: warning: the variable "FileReader" was not declared in function "readBlobAsArrayBuffer"
      var reader = new FileReader();
                       ^~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11180:36: warning: the variable "Blob" was not declared in anonymous function " 312#"
        } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
                                   ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11182:40: warning: the variable "FormData" was not declared in anonymous function " 312#"
        } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
                                       ^~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11184:44: warning: the variable "URLSearchParams" was not declared in anonymous function " 312#"
        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
                                           ^~~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11411:23: warning: the variable "XMLHttpRequest" was not declared in anonymous function " 321#"
        var xhr = new XMLHttpRequest();
                      ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:11004:76: warning: the variable "self" was not declared in anonymous function " 304#"
    var global = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global;
                                                                           ^~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16643:27: warning: the variable "performance" was not declared in anonymous function " 560#"
  if ("object" === typeof performance && "function" === typeof performance.now) {
                          ^~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16666:26: warning: the variable "navigator" was not declared in anonymous function " 560#"
  "undefined" !== typeof navigator && undefined !== navigator.scheduling && undefined !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);
                         ^~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:16733:37: warning: the variable "MessageChannel" was not declared in anonymous function " 560#"
  };else if ("undefined" !== typeof MessageChannel) {
                                    ^~~~~~~~~~~~~~
/app/android/app/build/ASSETS/createBundleReleaseJsAndAssets/index.android.bundle:24932:34: warning: the variable "requestAnimationFrame" was not declared in function "start 9#"
          this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));
                                 ^~~~~~~~~~~~~~~~~~~~~

> Task :app:generateReleaseResources
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease
> Task :react-native-geolocation-service:extractDeepLinksRelease
> Task :react-native-permissions:extractDeepLinksRelease
> Task :react-native-splash-screen:extractDeepLinksRelease
> Task :react-native-svg:extractDeepLinksRelease
> Task :app:mergeReleaseResources
> Task :app:processReleaseMainManifest
> Task :app:processReleaseManifest
> Task :react-native-geolocation-service:compileReleaseLibraryResources
> Task :react-native-permissions:compileReleaseLibraryResources
> Task :react-native-splash-screen:compileReleaseLibraryResources
> Task :react-native-svg:compileReleaseLibraryResources
> Task :react-native-permissions:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:bundleLibCompileToJarRelease
> Task :react-native-splash-screen:bundleLibCompileToJarRelease
> Task :app:extractProguardFiles
> Task :react-native-geolocation-service:bundleLibResRelease NO-SOURCE
> Task :react-native-svg:bundleLibCompileToJarRelease
> Task :react-native-geolocation-service:bundleLibRuntimeToJarRelease
> Task :react-native-geolocation-service:writeReleaseLintModelMetadata
> Task :react-native-geolocation-service:createFullJarRelease
> Task :react-native-permissions:bundleLibResRelease NO-SOURCE
> Task :react-native-permissions:bundleLibRuntimeToJarRelease
> Task :react-native-permissions:writeReleaseLintModelMetadata
> Task :react-native-permissions:createFullJarRelease
> Task :react-native-splash-screen:bundleLibResRelease NO-SOURCE
> Task :react-native-splash-screen:bundleLibRuntimeToJarRelease
> Task :react-native-splash-screen:writeReleaseLintModelMetadata
> Task :react-native-splash-screen:createFullJarRelease
> Task :react-native-svg:bundleLibResRelease NO-SOURCE
> Task :react-native-svg:writeReleaseLintModelMetadata
> Task :app:mergeReleaseJniLibFolders
> Task :react-native-geolocation-service:copyReleaseJniLibsProjectOnly
> Task :react-native-permissions:copyReleaseJniLibsProjectOnly
> Task :app:processReleaseManifestForPackage
> Task :react-native-splash-screen:copyReleaseJniLibsProjectOnly
> Task :react-native-svg:bundleLibRuntimeToJarRelease
> Task :react-native-svg:createFullJarRelease
> Task :react-native-svg:copyReleaseJniLibsProjectOnly
> Task :app:processReleaseResources
> Task :app:mergeReleaseNativeLibs
> Task :app:compileReleaseJavaWithJavac

> Task :app:stripReleaseDebugSymbols
Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libcxxcomponents.so, libfabricjni.so, libfb.so, libfbjni.so, libfolly_runtime.so, libglog.so, libglog_init.so, libhermes.so, libhermes_executor.so, libimagepipeline.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, liblogger.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_config.so, libreact_debug.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_animations.so, libreact_render_attributedstring.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_leakchecker.so, libreact_render_mapbuffer.so, libreact_render_mounting.so, libreact_render_runtimescheduler.so, libreact_render_scheduler.so, libreact_render_telemetry.so, libreact_render_templateprocessor.so, libreact_render_textlayoutmanager.so, libreact_render_uimanager.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librrc_image.so, librrc_root.so, librrc_scrollview.so, librrc_text.so, librrc_textinput.so, librrc_unimplementedview.so, librrc_view.so, libruntimeexecutor.so, libturbomodulejsijni.so, libyoga.so.

> Task :app:checkReleaseDuplicateClasses
> Task :react-native-geolocation-service:exportReleaseConsumerProguardFiles
> Task :react-native-permissions:exportReleaseConsumerProguardFiles
> Task :app:mergeReleaseArtProfile
> Task :react-native-splash-screen:exportReleaseConsumerProguardFiles
> Task :app:mergeReleaseGeneratedProguardFiles
> Task :app:extractReleaseNativeSymbolTables
> Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :react-native-svg:exportReleaseConsumerProguardFiles
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :app:mergeReleaseJavaResource
> Task :app:compressReleaseAssets
> Task :app:collectReleaseDependencies
> Task :app:sdkReleaseDependencyData
> Task :app:writeReleaseAppMetadata
> Task :app:writeReleaseSigningConfigVersions
> Task :react-native-geolocation-service:bundleReleaseAar
> Task :react-native-geolocation-service:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:mergeReleaseResources
> Task :react-native-permissions:bundleReleaseAar
> Task :react-native-permissions:mapReleaseSourceSetPaths
> Task :react-native-permissions:mergeReleaseResources
> Task :react-native-splash-screen:bundleReleaseAar
> Task :react-native-splash-screen:mapReleaseSourceSetPaths
> Task :react-native-geolocation-service:verifyReleaseResources
> Task :app:lintVitalAnalyzeRelease
> Task :react-native-splash-screen:mergeReleaseResources
> Task :react-native-geolocation-service:assembleRelease
> Task :react-native-svg:bundleReleaseAar
> Task :react-native-permissions:verifyReleaseResources
> Task :app:lintVitalReportRelease
> Task :react-native-svg:mapReleaseSourceSetPaths
> Task :app:lintVitalRelease
> Task :react-native-permissions:assembleRelease
> Task :react-native-svg:mergeReleaseResources
> Task :app:optimizeReleaseResources
> Task :react-native-splash-screen:verifyReleaseResources
> Task :react-native-splash-screen:assembleRelease
> Task :react-native-svg:verifyReleaseResources
> Task :react-native-svg:assembleRelease
> Task :app:minifyReleaseWithR8
> Task :app:compileReleaseArtProfile
> Task :app:packageRelease FAILED
179 actionable tasks: 174 executed, 5 up-to-date

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > SigningConfig "release" is missing required property "storeFile".

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 37s

> echo Build failed with Node 22 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:22-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.
Build failed with Node 22 and jdk version 17 with the following error: Command '['docker', 'run', '--rm', '-v', '/home/ubuntu/storage/extracted/agaxe-nalssieottae_app/nalssieottae_app-cf1574416194120fabcb3da79147f83ad137e18b:/source:ro', '-v', '/home/ubuntu/BachelorsThesis/scripts/RN/output/agaxe-nalssieottae_app:/output', '-v', '/home/ubuntu/.npm:/root/.npm', 'react-android:22-jdk17', 'bash', '-c', '\n                set -e\n\n                cp -r /source/. /app &&                 cd /app && \n                # ---- install deps (yarn or npm) ----\n                if [ -f yarn.lock ]; then\n                    yarn install;\n                else\n                    npm install --ignore-scripts;\n                fi && \n                # ---- stub missing parent package.json (monorepo metro configs) ----\n                [ ! -f ../package.json ] && cp package.json ../package.json 2>/dev/null || true && \n                # ---- patch toReversed (Node <20 compat) ----\n                find node_modules -name "loadConfig.js" -path "*/metro-config/*" -exec sed -i \'s/\\.toReversed()/.slice().reverse()/g\' {} \\; 2>/dev/null || true && \n                # ---- patch missing expo/AppEntry ----\n                if grep -q \'"main".*expo/AppEntry\' package.json 2>/dev/null &&                    [ ! -f node_modules/expo/AppEntry.js ] && [ ! -f node_modules/expo/AppEntry.ts ]; then                     node -e "const fs=require(\'fs\'); const p=JSON.parse(fs.readFileSync(\'package.json\',\'utf8\')); if(fs.existsSync(\'index.js\')){p.main=\'index.js\'; fs.writeFileSync(\'package.json\',JSON.stringify(p,null,2));}" 2>/dev/null || true;                 fi && \n                # ---- patch broken metro config (ESM-only, null-returning, or monorepo-only) ----\n                # NOTE: do NOT replace configs that merely use expo/metro-config — those carry\n                # Expo-specific resolver paths (watchFolders, extraNodeModules) needed for\n                # packages like @react-native-masked-view/masked-view to resolve.\n                if grep -q \'react-native-monorepo-config\' metro.config.js 2>/dev/null ||                    ! node -e "const c=require(\'./metro.config.js\'); if(!c||typeof c!==\'object\') process.exit(1);" 2>/dev/null; then                     if [ -d node_modules/@react-native/metro-config ]; then                         printf \'const {getDefaultConfig, mergeConfig} = require("@react-native/metro-config");\nmodule.exports = mergeConfig(getDefaultConfig(__dirname), {});\n\' > metro.config.js;                     else                         printf \'const {getDefaultConfig} = require("metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n\' > metro.config.js;                     fi;                 fi && \n                # ---- stub missing google-services.json (Firebase/Expo prebuild) ----\n                if [ ! -f google-services.json ]; then                     python3 -c "import json; open(\'google-services.json\',\'w\').write(json.dumps({\'project_info\':{\'project_number\':\'000000000000\',\'project_id\':\'stub\',\'storage_bucket\':\'stub.appspot.com\'},\'client\':[{\'client_info\':{\'mobilesdk_app_id\':\'1:000000000000:android:0000000000000000\',\'android_client_info\':{\'package_name\':\'com.stub\'}},\'oauth_client\':[],\'api_key\':[{\'current_key\':\'stub\'}],\'services\':{\'appinvite_service\':{\'other_platform_oauth_client\':[]}}}],\'configuration_version\':\'1\'}))" 2>/dev/null || true;                 fi && \n                # ---- detect expo ----\n                if grep -q \'"expo"\' package.json && [ ! -d android ]; then\n                    echo "Expo project detected";\n                    CI=1 npx --yes expo prebuild --platform android\n                fi && \n                # ---- fix expo/metro-config: serializer + Flow transformIgnorePatterns ----\n                # Runs AFTER prebuild because prebuild generates metro.config.js for managed-workflow\n                # projects — patching before prebuild would be overwritten by the generated file.\n                # Fix 1: remove customSerializer that returns JS string instead of JSON\n                #   ("var __BUND..." → "Serializer did not return expected format").\n                # Fix 2: add transformIgnorePatterns so expo/src/Expo.ts goes through Babel\n                #   (default pattern excludes all node_modules → raw Flow types → SyntaxError).\n                if [ -f metro.config.js ] && [ -d node_modules/expo ] &&                    ( grep -q \'expo/metro-config\\|@expo/metro-config\' metro.config.js 2>/dev/null ||                      ! grep -q \'transformIgnorePatterns\' metro.config.js 2>/dev/null ); then                     cp metro.config.js metro.config.orig.js &&                     printf \'const c=require("./metro.config.orig.js");const r=Object.assign({},c);if(r.serializer){r.serializer=Object.assign({},r.serializer);delete r.serializer.customSerializer;}r.transformer=Object.assign({},r.transformer||{});if(!r.transformer.transformIgnorePatterns){r.transformer.transformIgnorePatterns=["node_modules/(?!(react-native|@react-native|expo|@expo|@unimodules|react-clone-referenced-element|@react-navigation|native-base)/)"];}module.exports=r;\\n\' > metro.config.js;                 fi && \n                # ---- stub missing metro watchFolders paths ----\n                mkdir -p /src 2>/dev/null || true && \n                # ---- fix babel configs that use react-native-builder-bob ----\n                # builder-bob is a library-dev tool; its getConfig() throws "Couldn\'t determine the source\n                # directory" when built outside the library\'s own workspace. Replace with a standard preset.\n                if grep -ql \'react-native-builder-bob\' babel.config.js babel.config.json .babelrc .babelrc.js 2>/dev/null; then                     if [ -d node_modules/babel-preset-expo ]; then                         printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                     elif [ -d node_modules/@react-native/babel-preset ]; then                         printf \'module.exports={presets:["module:@react-native/babel-preset"]};\' > babel.config.js;                     else                         printf \'module.exports={presets:["module:metro-react-native-babel-preset"]};\' > babel.config.js;                     fi;                 fi && \n                # ---- ensure TypeScript babel support (fixes \'interface\' SyntaxError in metro bundling) ----\n                if [ -d node_modules/babel-preset-expo ]; then                     grep -ql "expo\\|typescript" babel.config.js .babelrc .babelrc.js babel.config.json 2>/dev/null ||                     printf \'module.exports=function(api){api.cache(true);return{presets:["babel-preset-expo"]};};\n\' > babel.config.js;                 fi && \n                # ---- stub missing-asset-registry-path (Metro virtual module not resolved in release) ----\n                # Metro normally aliases this to @react-native/assets-registry/registry at bundle time.\n                # When that alias is missing, any PNG asset in node_modules triggers "Unable to resolve module".\n                if [ ! -d node_modules/missing-asset-registry-path ]; then                     mkdir -p node_modules/missing-asset-registry-path &&                     if [ -f node_modules/@react-native/assets-registry/registry.js ]; then                         printf \'module.exports=require("@react-native/assets-registry/registry");\' > node_modules/missing-asset-registry-path/index.js;                     else                         printf \'module.exports={registerAsset:function(){return 0;},getAssetByID:function(){return null;}};\' > node_modules/missing-asset-registry-path/index.js;                     fi;                 fi && \n                # ---- stub @react-native-masked-view/masked-view if missing ----\n                # Required by @react-navigation/elements but often not installed as a direct dependency.\n                if [ ! -d node_modules/@react-native-masked-view/masked-view ]; then                     mkdir -p node_modules/@react-native-masked-view/masked-view &&                     printf \'{"name":"@react-native-masked-view/masked-view","version":"0.1.11","main":"index.js"}\' > node_modules/@react-native-masked-view/masked-view/package.json &&                     printf \'const React=require("react");const {View}=require("react-native");function MaskedView(p){return React.createElement(View,p.style?{style:p.style}:{},p.children);}module.exports=MaskedView;module.exports.default=MaskedView;\' > node_modules/@react-native-masked-view/masked-view/index.js;                 fi && \n                export PATH="/app/node_modules/.bin:$PATH" &&                 cd android && \n                chmod +x gradlew && \n                # ---- inject fallback repositories via Gradle init script ----\n                mkdir -p $GRADLE_USER_HOME/init.d &&                 echo \'gradle.beforeProject {project ->\' > $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.buildscript.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  project.repositories {\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://maven.google.com"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://repo1.maven.org/maven2"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://plugins.gradle.org/m2/"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'    maven {url "https://jitpack.io"}\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'  }\' >> $GRADLE_USER_HOME/init.d/repos.gradle &&                 echo \'}\' >> $GRADLE_USER_HOME/init.d/repos.gradle && \n                # ---- patch settings.gradle to use local react-native CLI (avoids npx failures) ----\n                sed -i \'s/autolinkLibrariesWithCommand()/autolinkLibrariesWithCommand("node node_modules\\/.bin\\/react-native config")/\' settings.gradle 2>/dev/null || true && \n                # ---- disable Sentry source map upload (no credentials in CI) ----\n                export SENTRY_DISABLE_AUTO_UPLOAD=true &&                 echo "sentryUploadEnabled=false" >> gradle.properties 2>/dev/null || true && \n                # ---- enable ABI splits ----\n                if grep -q \'splits\' app/build.gradle 2>/dev/null; then                     sed -i \'s/enable false/enable true/\' app/build.gradle || true;                 else                     sed -i \'/^android[[:space:]]*{/a\\    splits {\\n        abi {\\n            reset()\\n            enable true\\n            universalApk false\\n            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"\\n        }\\n    }\' app/build.gradle || true;                 fi && \n                # ---- enable R8 ----\n                sed -i \'s/enableProguardInReleaseBuilds = false/enableProguardInReleaseBuilds = true/\' app/build.gradle || true && \n                # ---- sign release with debug key ----\n                sed -i \'/buildTypes/,/}/s/release {/release {\n            signingConfig signingConfigs.debug/\' app/build.gradle || true && \n                # ---- pre-resolve AAR transforms so CMake finds prefab paths ----\n                ./gradlew :app:dependencies --configuration releaseCompileClasspath --no-daemon > /dev/null 2>&1 || true && \n                # ---- build release apk ----\n                ./gradlew assembleRelease --no-daemon || exit 1 &&                     \n                APK_PATH="app/build/outputs/apk/release"\n\n                if ! ls $APK_PATH/*.apk 1> /dev/null 2>&1; then\n                    echo "ERROR: APK not generated"\n                    exit 1\n                fi\n\n                # ---- copy output ----\n                cp app/build/outputs/apk/release/*.apk /output/r8/\n\n                # ---- copy TPL metadata ----\n                [ -f ../package.json ] && cp ../package.json /output/r8/ || true\n                [ -f ../package-lock.json ] && cp ../package-lock.json /output/r8/ || true\n                [ -f ../yarn.lock ] && cp ../yarn.lock /output/r8/ || true\n                [ -f ../pnpm-lock.yaml ] && cp ../pnpm-lock.yaml /output/r8/ || true\n                [ -f app/build.gradle ] && cp app/build.gradle /output/r8/android-build.gradle || true\n                [ -f build.gradle ] && cp build.gradle /output/r8/root-build.gradle || true\n                [ -f build.gradle.kts ] && cp build.gradle.kts /output/r8/root-build.gradle.kts || true\n                [ -f settings.gradle ] && cp settings.gradle /output/r8/ || true\n                [ -f settings.gradle.kts ] && cp settings.gradle.kts /output/r8/ || true\n                [ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml /output/r8/ || true\n                find . -name "*.gradle" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                find . -name "*.gradle.kts" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/ 2>/dev/null; done || true\n                mkdir -p /output/r8/libs\n                find . -name "*.jar" -not -name "gradle-wrapper.jar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.aar" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                find . -name "*.so" 2>/dev/null | grep -v "/build/" | grep -v "/.gradle/" | grep -v "/node_modules/" | while read f; do cp "$f" /output/r8/libs/ 2>/dev/null; done || true\n                    ']' returned non-zero exit status 1.
