Я создаю пользовательское ПЗУ для устройства (Sony), которое больше не получает обновления. В этом процессе требуется несколько проприетарных «блобов», которые взяты из официальной прошивки и включены (в основном) без изменений в результирующее ПЗУ. Одним из них является файл APK камеры.
Теперь проблема: при запуске этого приложения оно будет работать с * 1000 (* адресом доступа 0x10), если приложение не скомпилировано по скорости (cmd package compile -f -m speed name.space.of.app
) I ' мы пытались это понять, но потерпели неудачу, трассировка стека составляет только 1 кадр, и это указывает на строку в файле ассемблера, которая не может обработать sh (sub x0, x0, x5
, следовательно, только регистр доступа)
Так что единственный «исправить» / обходной путь - это скомпилировать приложение при первой загрузке.
Есть ли способ Android скомпилировать один APK с фильтром скорости (или профиля скорости) при первой загрузке?
Единственное, что я нашел, это pm.dexopt.boot=speed-profile
, но это скомпилировало бы все (системные) приложения, включая те, которые не используются, тратя время и пространство.
Я хочу избежать разветвления репозитория core-framework и взломать его в PackageManagerService , Последнее средство, с которым я мог бы go использовать, - это применить патч, если это было бы возможно только во время компиляции и из репо device
(device/<vendor>/<codename>
) без фактического изменения репозитория core-framework (чтобы избежать проблем с repo sync
)