Можно ли переупаковать .apk для установки в несовместимую версию Android? («возникла проблема с разбором пакета»/имеется 4.0.4 — требуется 4.1)

Речь идет об .apk ( Inbox от Gmail ), для которого требуется Android 4.1 и выше.
Пытаясь установить его на свой телефон с Android 4.0.4
, он показывает, что " there is a problem parsing the package".
Я разрешил установку .apk из источников, отличных от Play Store, на моем телефоне.

Как я читал, это вызвано тем, что для .apk требуется другой уровень API устройства, чем у телефона.

Есть ли способ преобразовать/перепаковать .apk, чтобы его можно было установить на мой телефон?

Было бы проще прошить новую версию андроида, чем заставить что-то работать на старой ОС.

Ответы (1)

Краткий ответ: Нет.

Простая перепаковка не может решить проблему совместимости. Если приложению требуется «по крайней мере Android XX», это обычно означает, что ему нужны некоторые условия, которые не были выполнены до этого. С каждой версией Android вводятся новые функции ОС, библиотеки получают дополнительные API/функции и т. д. — ничего из этого нельзя решить «перепаковкой» установочного пакета. Если (требуемая) функциональность не может быть обеспечена версией Android, на которой работает ваше устройство, приложение не может работать (правильно), даже если вы смогли его установить.

Хотя это может быть верно для многих приложений, флаг «минимальной версии» — это параметр, для которого разработчик может установить любое значение. Многие профессиональные приложения будут пытаться ориентироваться на широкую аудиторию и поддерживать как можно больше версий Android. Но часто поддержка старой версии приводит к дополнительным затратам на поддержку и тестирование на этих платформах, поэтому они просто устанавливают флаг на «4.0», даже если приложение отлично работает под 3.X, поэтому изменение флага является жизнеспособным вариантом!
Это также верно, @Falco (разработчик может свободно устанавливать минимальный и максимальный уровень API в зависимости от того, что он хочет). Но даже в этом случае простая переупаковка не поможет. Обратите внимание на ошибку, включенную в OP: there is a problem parsing the package– определенно указывает на «обращающуюся новую функцию», о которой не знает используемая в настоящее время версия Android (или, конечно, сломанный пакет – в этом случае «простая переупаковка» не может либо решить проблему).
Хорошо, я не знаком с точными сообщениями об ошибках установщика Android. Я думал, что ошибка синтаксического анализа - это общее сообщение о том, что «что-то не так». - Но даже эти функции иногда могут иметь отношение только к определенным частям приложения, которые OP, возможно, даже не хочет использовать, поэтому может быть достаточно извлечения APK, изменения файлов манифеста/конфигурации и его переупаковки, что, конечно, не тривиально и требует знания приложения и его функций.
@Falco Я могу с этим согласиться, да. Но таким образом вы всегда рискуете иметь «частично работающее приложение» — вы никогда не можете сказать, что будет работать, а что нет. Вы рискуете принудительным закрытием и потерей данных. Это не то, что я бы рекомендовал «стандартному пользователю» или даже «новичку», хотя это может быть допустимым вариантом для «опытного пользователя», чтобы поиграть с ним и, если это сработает, предложить «переработанный пакет» вместе с подсказки и предупреждения (что иногда делается на XDA). Очевидно, что такой «опытный пользователь» не стал бы задавать этот вопрос, поэтому я не включил его в свой ответ :)
Также обратите внимание, что «переупаковка» приведет к аннулированию подписи пакета (вам придется подписать его своим собственным ключом) и, следовательно, не будет «совместима» с ранее установленным .apk(он откажется от обновления — вам придется сначала удалить ) или с более поздним «официальным обновлением», которое может быть доступно для вашей версии Android (правда, маловероятное обновление — но всякое бывает). Опять же, «новичок» не мог бы легко справиться (по крайней мере, если данные должны быть сохранены).
Просто для справки, я просто использовал apktool для декодирования apk, затем отредактировал в файле apktool.yml строку minSdkVersion: '16'(Android 4.1) в minSdkVersion: '15'(Android 4.0.3/4.0.4) и перестроил ее с помощью apktool. Потом скопировал обратно на телефон и попытался установить: Нет больше there is a problem parsing the package". Он начинает установку, но через несколько секунд показывает «Входящие — Приложение X не установлено».
Подтверждает мои подозрения :)