> echo Attempting build for pr4x9s-ReactNative with Node 18 and jdk 17 Attempting build for pr4x9s-ReactNative with Node 18 and jdk 17 > docker run --rm -v /home/ubuntu/storage/extracted/pr4x9s-ReactNative/ReactNative-8e84f1f2b4b96934a9fc937af8b69efb40d3e0b9/ReactNativeApp03:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/pr4x9s-ReactNative:/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 npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated @babel/plugin-proposal-optional-catch-binding@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. npm warn deprecated @babel/plugin-proposal-nullish-coalescing-operator@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. npm warn deprecated @babel/plugin-proposal-numeric-separator@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. npm warn deprecated @babel/plugin-proposal-class-properties@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. npm warn deprecated @babel/plugin-proposal-logical-assignment-operators@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. npm warn deprecated rimraf@2.6.3: Rimraf versions prior to v4 are no longer supported npm warn deprecated @humanwhocodes/config-array@0.11.14: Use @eslint/config-array instead npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm warn deprecated @babel/plugin-proposal-optional-chaining@7.21.0: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. npm warn deprecated @babel/plugin-proposal-async-generator-functions@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead npm warn deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. npm warn deprecated @babel/plugin-proposal-object-rest-spread@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. added 1140 packages, and audited 1141 packages in 19s 151 packages are looking for funding run `npm fund` for details 32 vulnerabilities (5 low, 13 moderate, 12 high, 2 critical) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. Downloading https://services.gradle.org/distributions/gradle-8.6-all.zip ....................10%.....................20%.....................30%.....................40%.....................50%.....................60%.....................70%.....................80%.....................90%.....................100% Welcome to Gradle 8.6! Here are the highlights of this release: - Configurable encryption key for configuration cache - Build init improvements - Build authoring improvements For more details see https://docs.gradle.org/8.6/release-notes.html To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.6/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :gradle-plugin:checkKotlinGradlePluginConfigurationErrors > Task :gradle-plugin:pluginDescriptors > Task :gradle-plugin:processResources > Task :gradle-plugin:compileKotlin > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:classes > Task :gradle-plugin:jar > Task :app:clean UP-TO-DATE BUILD SUCCESSFUL in 2m 10s 6 actionable tasks: 5 executed, 1 up-to-date To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.6/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :gradle-plugin:checkKotlinGradlePluginConfigurationErrors > Task :gradle-plugin:compileKotlin UP-TO-DATE > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:pluginDescriptors UP-TO-DATE > Task :gradle-plugin:processResources UP-TO-DATE > Task :gradle-plugin:classes UP-TO-DATE > Task :gradle-plugin:jar UP-TO-DATE Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :app:generateCodegenSchemaFromJavaScript SKIPPED > Task :app:generateCodegenArtifactsFromSchema SKIPPED > Task :app:generatePackageList > Task :app:preBuild > Task :app:preDebugBuild > Task :app:mergeDebugNativeDebugMetadata NO-SOURCE > Task :app:checkKotlinGradlePluginConfigurationErrors > Task :app:generateDebugBuildConfig > Task :app:checkDebugAarMetadata > Task :app:generateDebugResValues > Task :app:mapDebugSourceSetPaths > Task :app:generateDebugResources > Task :app:packageDebugResources > Task :app:mergeDebugResources > Task :app:createDebugCompatibleScreenManifests > Task :app:extractDeepLinksDebug > Task :app:parseDebugLocalResources > Task :app:processDebugMainManifest > Task :app:processDebugManifest > Task :app:javaPreCompileDebug > Task :app:mergeDebugShaders > Task :app:compileDebugShaders NO-SOURCE > Task :app:generateDebugAssets UP-TO-DATE > Task :app:mergeDebugAssets > Task :app:compressDebugAssets > Task :app:desugarDebugFileDependencies > Task :app:processDebugManifestForPackage > Task :app:checkDebugDuplicateClasses > Task :app:processDebugResources > Task :app:mergeExtDexDebug > Task :app:mergeLibDexDebug > Task :app:mergeDebugJniLibFolders > Task :app:validateSigningDebug > Task :app:writeDebugAppMetadata > Task :app:writeDebugSigningConfigVersions > Task :app:mergeDebugNativeLibs > Task :app:stripDebugDebugSymbols Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libfabricjni.so, libfbjni.so, libfolly_runtime.so, libglog.so, libhermes.so, libhermes_executor.so, libhermesinstancejni.so, libimagepipeline.so, libjscinstance.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_cxxreactpackage.so, libreact_debug.so, libreact_devsupportjni.so, libreact_featureflags.so, libreact_featureflagsjni.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_element.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_mapbuffer.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librninstance.so, librrc_image.so, librrc_legacyviewmanagerinterop.so, librrc_view.so, libruntimeexecutor.so, libturbomodulejsijni.so, libuimanagerjni.so, libyoga.so. > Task :app:compileDebugKotlin > Task :app:compileDebugJavaWithJavac > Task :app:dexBuilderDebug > Task :app:mergeDebugGlobalSynthetics > Task :app:processDebugJavaRes > Task :app:mergeProjectDexDebug > Task :app:mergeDebugJavaResource > Task :app:packageDebug > Task :app:createDebugApkListingFileRedirect > Task :app:assembleDebug BUILD SUCCESSFUL in 2m 8s 43 actionable tasks: 39 executed, 4 up-to-date > docker run --rm -v /home/ubuntu/storage/extracted/pr4x9s-ReactNative/ReactNative-8e84f1f2b4b96934a9fc937af8b69efb40d3e0b9/ReactNativeApp03:/source:ro -v /home/ubuntu/BachelorsThesis/scripts/RN/output/pr4x9s-ReactNative:/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 npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated @babel/plugin-proposal-optional-catch-binding@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. npm warn deprecated @babel/plugin-proposal-nullish-coalescing-operator@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. npm warn deprecated @babel/plugin-proposal-class-properties@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. npm warn deprecated @babel/plugin-proposal-numeric-separator@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. npm warn deprecated @babel/plugin-proposal-logical-assignment-operators@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. npm warn deprecated rimraf@2.6.3: Rimraf versions prior to v4 are no longer supported npm warn deprecated @humanwhocodes/config-array@0.11.14: Use @eslint/config-array instead npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm warn deprecated @babel/plugin-proposal-optional-chaining@7.21.0: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. npm warn deprecated @babel/plugin-proposal-async-generator-functions@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead npm warn deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. npm warn deprecated @babel/plugin-proposal-object-rest-spread@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. added 1140 packages, and audited 1141 packages in 16s 151 packages are looking for funding run `npm fund` for details 32 vulnerabilities (5 low, 13 moderate, 12 high, 2 critical) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. 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. For more on this, please refer to https://docs.gradle.org/8.6/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :gradle-plugin:checkKotlinGradlePluginConfigurationErrors > Task :gradle-plugin:compileKotlin UP-TO-DATE > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:pluginDescriptors UP-TO-DATE > Task :gradle-plugin:processResources UP-TO-DATE > Task :gradle-plugin:classes UP-TO-DATE > Task :gradle-plugin:jar UP-TO-DATE Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :app:buildKotlinToolingMetadata > Task :app:checkKotlinGradlePluginConfigurationErrors > Task :app:generateCodegenSchemaFromJavaScript SKIPPED > Task :app:generateCodegenArtifactsFromSchema SKIPPED > Task :app:generatePackageList > Task :app:preBuild > Task :app:preReleaseBuild > Task :app:generateReleaseBuildConfig > Task :app:checkReleaseAarMetadata > Task :app:createBundleReleaseJsAndAssets debug Reading Metro config from /app/metro.config.js warning: the transform cache was reset. Welcome to Metro v0.80.9 Fast - Scalable - Integrated info Writing bundle output to:, /app/android/app/build/generated/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/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:1322:18: warning: the variable "DebuggerInternal" was not declared in function "__shouldPauseOnThrow" typeof DebuggerInternal !== 'undefined' && ^~~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:6550:7: warning: the variable "setTimeout" was not declared in function "logCapturedError" setTimeout(function () { ^~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:4660:31: warning: the variable "nativeFabricUIManager" was not declared in anonymous function " 133#" var _nativeFabricUIManage = nativeFabricUIManager, ^~~~~~~~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:4688:21: warning: the variable "clearTimeout" was not declared in anonymous function " 133#" cancelTimeout = clearTimeout; ^~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:9318:30: warning: the variable "__REACT_DEVTOOLS_GLOBAL_HOOK__" was not declared in anonymous function " 133#" if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:11730:5: warning: the variable "setImmediate" was not declared in function "handleResolved" setImmediate(function () { ^~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16001:12: warning: the variable "fetch" was not declared in anonymous function " 369#" fetch: fetch, ^~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16002:14: warning: the variable "Headers" was not declared in anonymous function " 369#" Headers: Headers, ^~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16003:14: warning: the variable "Request" was not declared in anonymous function " 369#" Request: Request, ^~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16004:15: warning: the variable "Response" was not declared in anonymous function " 369#" Response: Response ^~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16161:24: warning: the variable "FileReader" was not declared in function "readBlobAsArrayBuffer" var reader = new FileReader(); ^~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16212:36: warning: the variable "Blob" was not declared in anonymous function " 380#" } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { ^~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16214:40: warning: the variable "FormData" was not declared in anonymous function " 380#" } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { ^~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16216:44: warning: the variable "URLSearchParams" was not declared in anonymous function " 380#" ...e if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body... ^~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16335:26: warning: the variable "AbortController" was not declared in anonymous function " 386#" var ctrl = new AbortController(); ^~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16469:23: warning: the variable "XMLHttpRequest" was not declared in anonymous function " 390#" var xhr = new XMLHttpRequest(); ^~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:16014:71: warning: the variable "self" was not declared in anonymous function " 372#" ...undefined' && globalThis || typeof self !== 'undefined' && self || ^~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:26274:27: warning: the variable "performance" was not declared in anonymous function " 685#" if ("object" === typeof performance && "function" === typeof performance.no... ^~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:26297:26: warning: the variable "navigator" was not declared in anonymous function " 685#" "undefined" !== typeof navigator && undefined !== navigator.scheduling && u... ^~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:26407:37: warning: the variable "MessageChannel" was not declared in anonymous function " 685#" };else if ("undefined" !== typeof MessageChannel) { ^~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:26422:34: warning: the variable "nativeRuntimeScheduler" was not declared in anonymous function " 685#" ... = "undefined" !== typeof nativeRuntimeScheduler ? nativeRuntimeScheduler.... ^~~~~~~~~~~~~~~~~~~~~~ /app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:35520:34: warning: the variable "requestAnimationFrame" was not declared in function "start 9#" ... this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this)); ^~~~~~~~~~~~~~~~~~~~~ > Task :app:generateReleaseResValues > Task :app:mapReleaseSourceSetPaths > Task :app:generateReleaseResources > Task :app:packageReleaseResources > Task :app:mergeReleaseResources > Task :app:createReleaseCompatibleScreenManifests > Task :app:extractDeepLinksRelease > Task :app:parseReleaseLocalResources > Task :app:processReleaseMainManifest > Task :app:processReleaseManifest > Task :app:javaPreCompileRelease > Task :app:extractProguardFiles > Task :app:mergeReleaseJniLibFolders > Task :app:mergeReleaseNativeLibs > Task :app:checkReleaseDuplicateClasses > Task :app:mergeReleaseArtProfile > Task :app:mergeReleaseShaders > Task :app:compileReleaseShaders NO-SOURCE > Task :app:generateReleaseAssets UP-TO-DATE > Task :app:stripReleaseDebugSymbols Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libfabricjni.so, libfbjni.so, libfolly_runtime.so, libglog.so, libhermes.so, libhermes_executor.so, libhermesinstancejni.so, libimagepipeline.so, libjscinstance.so, libjsi.so, libjsijniprofiler.so, libjsinspector.so, libmapbufferjni.so, libnative-filters.so, libnative-imagetranscoder.so, libreact_codegen_rncore.so, libreact_cxxreactpackage.so, libreact_debug.so, libreact_devsupportjni.so, libreact_featureflags.so, libreact_featureflagsjni.so, libreact_nativemodule_core.so, libreact_newarchdefaults.so, libreact_render_componentregistry.so, libreact_render_core.so, libreact_render_debug.so, libreact_render_graphics.so, libreact_render_imagemanager.so, libreact_render_mapbuffer.so, libreact_utils.so, libreactnativeblob.so, libreactnativejni.so, libreactperfloggerjni.so, librninstance.so, librrc_image.so, librrc_legacyviewmanagerinterop.so, librrc_view.so, libruntimeexecutor.so, libturbomodulejsijni.so, libuimanagerjni.so, libyoga.so. > Task :app:mergeReleaseAssets > Task :app:extractReleaseNativeSymbolTables > Task :app:compressReleaseAssets > Task :app:collectReleaseDependencies > Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE > Task :app:sdkReleaseDependencyData > Task :app:validateSigningRelease > Task :app:writeReleaseAppMetadata > Task :app:writeReleaseSigningConfigVersions > Task :app:processReleaseManifestForPackage > Task :app:processReleaseResources > Task :app:optimizeReleaseResources > Task :app:compileReleaseKotlin > Task :app:compileReleaseJavaWithJavac > Task :app:generateReleaseLintVitalReportModel > Task :app:mergeReleaseGeneratedProguardFiles > Task :app:processReleaseJavaRes > Task :app:expandReleaseArtProfileWildcards > Task :app:mergeReleaseJavaResource > Task :app:lintVitalAnalyzeRelease > Task :app:lintVitalReportRelease > Task :app:lintVitalRelease > Task :app:minifyReleaseWithR8 > Task :app:compileReleaseArtProfile > Task :app:packageRelease > Task :app:createReleaseApkListingFileRedirect > Task :app:assembleRelease BUILD SUCCESSFUL in 2m 29s 53 actionable tasks: 49 executed, 4 up-to-date > echo Build succeeded with Node 18 Build succeeded with Node 18