Наконец, с помощью людей из моей темы , я смог создать рабочий скрипт-обертку для android 27 + . Я почти уверен, что сейчас вы не можете найти какой-либо другой работающий скрипт-обертку в Интернете, и это единственный работающий .
Вот полный скрипт:
#!/system/bin/sh
processname=$1
shift
sdkversion=$(getprop ro.build.version.sdk)
if [ "$sdkversion" -gt "28" ]; then
fullpath="$processname -XjdwpProvider:adbconnection $@"
elif [ "$sdkversion" -eq "28" ]; then
fullpath="$processname -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y -Xcompiler-option --debuggable $@"
elif [ "$sdkversion" -eq "27" ]; then
fullpath="$processname -Xrunjdwp:transport=dt_android_adb,suspend=n,server=y -Xcompiler-option --debuggable -Xcompiler-option --generate-mini-debug-info $@"
else
log -p e -t "WRAPPER" "Wrapper script only works starting API level 27!"
exit 1
fi
$fullpath
Для использования с ASAN просто добавьте необходимые конфигурации ASAN (например, LD_PRELOAD
) при запуске сценария оболочки.Так что он станет примерно таким:
#!/system/bin/sh
HERE="$(cd "$(dirname "$0")" && pwd)"
export ASAN_OPTIONS=log_to_syslog=false,allow_user_segv_handler=1
export LD_PRELOAD=$HERE/libclang_rt.asan-${arch}-android.so
processname=$1
shift
sdkversion=$(getprop ro.build.version.sdk)
if [ "$sdkversion" -gt "28" ]; then
fullpath="$processname -XjdwpProvider:adbconnection $@"
elif [ "$sdkversion" -eq "28" ]; then
fullpath="$processname -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y -Xcompiler-option --debuggable $@"
elif [ "$sdkversion" -eq "27" ]; then
fullpath="$processname -Xrunjdwp:transport=dt_android_adb,suspend=n,server=y -Xcompiler-option --debuggable -Xcompiler-option --generate-mini-debug-info $@"
else
log -p e -t "WRAPPER" "Wrapper script only works starting API level 27!"
exit 1
fi
$fullpath
Хотелось бы, чтобы этот скрипт был полезен для всех.
Обновление: Google обновлено wrap.sh страница в NDK на основе этой темы.Там же вы можете увидеть финальный скрипт-обертку.
С наилучшими пожеланиями