Für die Zwecke meines Projekts ist es unbedingt erforderlich, die SO-Datei einer bestimmten Anwendung überschreiben zu können die bereits auf dem Gerät installiert wurde.
Datei wie /data/app/~~hU4TMUlqGWmn_lDTOca2fQ==/com.rockstargames.gtasa_x-jYaHvUmlwiQpOdGiFYR-9Q==/lib/arm/libGTASA.so
Ich nicht Ich möchte das APK nicht neu kompilieren und erneut installieren. Brauchen Sie eine schnelle Möglichkeit, die SO-Datei zu ändern.
Ich habe so ein Batch-Skript:
Code: Select all
"adb.exe" shell "su -c 'rm %NATIVE_LIB_DIR%/libGTASA.so'"
"adb.exe" shell "su -c 'rm /data/local/tmp/update.so'"
"adb.exe" push -p "R:\Android plugin deployment solution\Android plugin deployment solution\bin\Release\deployment\GTA San Andreas\2.00\ANDROID_ARMEABI_V7A\modified_lib\libGTASA.so" "/data/local/tmp/update.so"
"adb.exe" shell "su -c 'chmod 555 /data/local/tmp/update.so'"
"adb.exe" shell "su -c 'chown system /data/local/tmp/update.so'"
"adb.exe" shell "su -c 'chown :system /data/local/tmp/update.so'"
"adb.exe" shell "su -c 'cp -p /data/local/tmp/update.so %NATIVE_LIB_DIR%/libGTASA.so'"
Mit Android 13 wird jetzt eine Berechtigung verweigert, wenn die Datei nach „lib“ kopiert wird. Verzeichnis einer Anwendung.
Zu meiner Überraschung funktioniert es in einem Fall immer noch – wenn eine Anwendung bereits vor langer Zeit mit einer älteren Android-Version auf meinem Gerät installiert war. Nachdem mein System aktualisiert wurde (jetzt Android 13-Version), werden Anwendungen installiert, ohne dass die Möglichkeit besteht, ihre Dateien in /data/app/ zu ändern.
Getestet auf zwei Xiaomi-Telefonen, beide haben es Android 13, das gleiche Problem.
Code: Select all
R:\>for /F "delims=" %a in ('""adb.exe" ""shell dumpsys package com.rockstargames.gtasa_x ^| grep legacyNativeLibraryDir ^| cut -d'=' -f2-"') do @set NATIVE_LIB_DIR=%a/arm
R:\>"adb.exe" shell "su -c 'rm /data/app/~~hU4TMUlqGWmn_lDTOca2fQ==/com.rockstargames.gtasa_x-jYaHvUmlwiQpOdGiFYR-9Q==/lib/arm/libGTASA.so'"
rm: /data/app/~~hU4TMUlqGWmn_lDTOca2fQ==/com.rockstargames.gtasa_x-jYaHvUmlwiQpOdGiFYR-9Q==/lib/arm/libGTASA.so: No such file or directory
R:\>"adb.exe" shell "su -c 'rm /data/local/tmp/update.so'"
R:\>"adb.exe" push -p "R:\Android plugin deployment solution\Android plugin deployment solution\bin\Release\deployment\GTA San Andreas\2.00\ANDROID_ARMEABI_V7A\modified_lib\libGTASA.so" "/data/local/tmp/update.so"
R:\And...libGTASA.so pushed, 0 skipped. 118.3 MB/s (11707712 bytes in 0.094s)
R:\>"adb.exe" shell "su -c 'chmod 555 /data/local/tmp/update.so'"
R:\>"adb.exe" shell "su -c 'chown system /data/local/tmp/update.so'"
R:\>"adb.exe" shell "su -c 'chown :system /data/local/tmp/update.so'"
R:\>"adb.exe" shell "su -c 'cp -p /data/local/tmp/update.so /data/app/~~hU4TMUlqGWmn_lDTOca2fQ==/com.rockstargames.gtasa_x-jYaHvUmlwiQpOdGiFYR-9Q==/lib/arm/libGTASA.so'"
cp: /data/app/~~hU4TMUlqGWmn_lDTOca2fQ==/com.rockstargames.gtasa_x-jYaHvUmlwiQpOdGiFYR-9Q==/lib/arm/libGTASA.so: Permission denied
Ich habe SELinux deaktiviert (setenforce 0). , aber es löst das Problem nicht.
Weiß jemand, was genau der Grund für diese „Berechtigung verweigert“ ist?