LINUX.ORG.RU
ФорумMobile

как зафорсить андроид использовать выборочные 32 битные soundfx либы или вообще переключить все либы на 32 bit?

 , , ,


1

1

задача очень простая
запутить сотф

https://4pda.to/forum/index.php?showtopic=405989

софт использует только 32 битные аудиолибы

купил я плеер fiio jr21
там 64 битный проц
как и во всех современных телефонах
в build.prop следушее

ro.system.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
ro.system.product.cpu.abilist32=armeabi-v7a,armeabi
ro.system.product.cpu.abilist64=arm64-v8a


вайпера там не работают

идея #1 - удалить строки про 64 бита оставить только 32?
но тогда скорее всего будет просто бутлуп

далее есть у меня тв приставка

Tanix W2

на которой работает софт который юзает только 32 битные либы
в build.prop следушее

ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.cpu.abilist=armeabi-v7a,armeabi
ro.product.cpu.abilist32=armeabi-v7a,armeabi


#идея 2 - найти способ выборочно грузить 32 либы на 64 устройсвте - но как?

что ещё?
что я упускаю?
любые идеи

★★★★★

Последнее исправление: smilessss (всего исправлений: 1)

Некоторые производители запускают 32битный андройд на 64битных ядрах. Но я сильно сомневаюсь, что это заработает на изначально 64битной системе, тут нужен специально собранный андройд и 32битный раздел вендора.
Если тебе нужно установить какой-то конкретный apk в 32битном режиме, то pm install можно указать, какой именно abi ставить

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

Если тебе нужно установить какой-то конкретный apk в 32битном режиме, то pm install можно указать, какой именно abi ставить

да но даже если указать ставить 32 бит - он не будет пытаться грузить 32 битные либы всё равно (

smilessss ★★★★★
() автор топика
Ответ на: комментарий от smilessss

если бы оно в 32 битах не грузило 32битные либы, оно бы не запускалось. Так что ищи где реально проблема зарыта. Я вообще понятия не имею, как эта штука работает. Приложение, которое должно грузить 32битные либы (в данном случае это плеер?) тоже установлено как 32 бита или нет?

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

там всё несколько сложнее

само приложение работает
но приложение это просто gui для управления

а сам драйвера там - 32 битный .so файл
который нужно как-то загрузить
я посмотрел и пока не наресерчил ничего
как вручную загрузить его

оно вообще расчитано так что при уставке
оно добавляет себя в автозапуск в audio_effects.conf и audio_effects.xml

это soundfx эффекты там

так вот если туда прописать 32 битный so файл - он будет игнорироваться

как зафорсить audioserver использовать только 32bit библиотеки из /vendor/lib/soundfx/ вместо /vendor/lib64/soundfx/

я пытался тут найти ответы
но похоже это просто невозможно
и мне нужно просто найти самый мощный 32 битный проц с 32 битным андроидом да просто юзать его

какую-нить андроид tv приставку на 32 битном проце с оптическим выходом для звука и коаксиальным выходом

smilessss ★★★★★
() автор топика
Ответ на: комментарий от mittorn

если вы знаете какой способ загрузить 32 битную либу без исходных кодов просто блоб то я буду очень признателе если вы им прделитесь

исходников этой либы нет
всё что есть это apk его исходники есть
и 32 битная либа просто .so файл - его сорцов нет

так вот при запуске этот apk уже ожидает что .so файл будет загружен

причём этот .so файл - это либа soundfx андроида

smilessss ★★★★★
() автор топика
Ответ на: комментарий от smilessss

загрузить 32битную либу в 64битный процесс на армах категорически невозможно. Это не x86, где прокатывают фокусы вроде wow64 для wine. Да и даже для этого случая рабочей реализации для линуксового, а не виндового кода (кроме моего экспериментального PoC без libc) нет.
У aarch64 есть уровни aarch64_el0 и aarch32_el0 и они ничего общего не имеют между собой, это 2 разных набора инструкций, наверняка ещё и с разными декодерами в процессоре.
есть ещё aarch64_ilp32 (для него у меня есть тоже PoC без libc), но он с твоей библиотекой будет несовместим по инструкциям.
Так что в твоём случае разве что пытаться audioserver притащить от 32битной прошивки с той же версией андройда. Попробуй - а вдруг сработает.

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 2)
Ответ на: комментарий от mittorn

как зафорсить audioserver использовать только 32bit библиотеки из /vendor/lib/soundfx/ вместо /vendor/lib64/soundfx/ (комментарий)

что интересно
начал копать
проверил бинарник на LG G8 где всё работает - там вроде 64 bit аудиосерер


file  /system/bin/audioserver                                                                                                         
/system/bin/audioserver: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 32, BuildID=a75e25039f46f9f70ccb0d20d50ff1ca, stripped



а это с нерабочего устройства - он такой же самый

zeus:/ # file  /system/bin/audioserver 
/system/bin/audioserver: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 31, BuildID=8f0fffcdbb3f31b5ff48d36ddebd1c71, stripped


в обшем и целом
я так и не понял
по каким критериям аудиосервер определяет
поддерживать ли 32 бит либы или нет

на lg g8 - снапдрегон 855 т.е. 64 битный проц
и там спокойно работают 32 bit либы - там 64 битный аудиосервер почему-то может грузить 32битные либы

там в build.prop
ro.vendor.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
ro.vendor.product.cpu.abilist32=armeabi-v7a,armeabi
ro.vendor.product.cpu.abilist64=arm64-v8a


и там аудиосервер смотрит в
/vendor/lib/
а не в
/vendor/lib64


вот это ключевое отличие
как заставить аудиосервер смотреть в /vendor/lib т.е. в 32 бита - загадка

это по идее вся система аудио должна быть в прошивке быть 32 битной только

dumpsys media.audio_flinger | grep sound                                                                                    
  path: /vendor/lib/soundfx/libv4a_fx.so
  path: /vendor/lib/soundfx/libv4a_xhifi_ics.so
  path: /vendor/lib/soundfx/libjamesdsp.so
  path: /vendor/lib/soundfx/libv4a_re.so
alphalm:/ # 


я вообще не понимаю по каким критериям мне теперь выбирать себе железо для запуска этого софта

smilessss ★★★★★
() автор топика
Последнее исправление: smilessss (всего исправлений: 3)
Ответ на: комментарий от smilessss

вот это например с телефона mi 11

venus:/ $ dumpsys media.audio_flinger | grep soundfx                                                                                    
  path: /vendor/lib/soundfx/libozoprocessing.so
 Library misoundfx
  path: /vendor/lib/soundfx/libmisoundfx.so
  path: /vendor/lib/soundfx/libshoebox.so
  path: /vendor/lib/soundfx/libasphere.so
  path: /vendor/lib/soundfx/libvolumelistener.so
  path: /vendor/lib/soundfx/libqcomvoiceprocessing.so
  path: /vendor/lib/soundfx/libqcompostprocbundle.so
  path: /vendor/lib/soundfx/libeffectproxy.so
  path: /vendor/lib/soundfx/libdynproc.so
  path: /vendor/lib/soundfx/libldnhncr.so
  path: /vendor/lib/soundfx/libdownmix.so
  path: /vendor/lib/soundfx/libqcomvisualizer.so
  path: /vendor/lib/soundfx/libvisualizer.so
  path: /vendor/lib/soundfx/libreverbwrapper.so
  path: /vendor/lib/soundfx/libbundlewrapper.so


здесь уже snapdragon 888 - мощный старый проц
и тоже аудиосервер смотрит на 32 битные аудиолибы

smilessss ★★★★★
() автор топика
Ответ на: комментарий от smilessss
venus:/ # file  /system/bin/audioserver
/system/bin/audioserver: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 31, BuildID=8f0fffcdbb3f31b5ff48d36ddebd1c71, stripped



а это аудиосервер с mi 11
как бы узнать по какому приниципу он использует 32 бит либы или 64

smilessss ★★★★★
() автор топика
Ответ на: комментарий от smilessss

что интересно - там где всё работает, там есть некая иструкция поддерживаемая в проце

"neon"

там где не работает - её нет.
1) Hardware	: Qualcomm SM8150
Features	: half thumb fastmult vfp edsp neon vfpv3 tls 


2) Hardware	: Venus SM8350
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp

3) arm cortex A35 32 bit cpu 
Features	: half thumb fastmult vfp edsp neon vfpv3 tls 

smilessss ★★★★★
() автор топика
Последнее исправление: smilessss (всего исправлений: 1)
Ответ на: комментарий от smilessss

что интересно

там где работает там

Linux ........armv8l GNU/Linux

или 
Linux ..........armv8l Android


а там где не работаем там
Linux  aarch64 Toybox

smilessss ★★★★★
() автор топика
Последнее исправление: smilessss (всего исправлений: 1)