#android #security #apk
Вопрос:
Я хочу включить загрузку и установку пакета приложений для Android (APK) с моего собственного сервера через загрузку в браузере. Похоже, что это заблокировано в последних версиях Android с загадочным сообщением «Возникла проблема с анализом пакета». В прошлом (я забыл, какая версия Android) это работало просто отлично. Нужна помощь, чтобы заставить его работать в Android 11.
Вот содержимое заголовка, используемое для обслуживания файла:
header('Content-Description: File Transfer'); header('Content-Type: application/vnd.android.package-archive'); header("Content-Disposition: attachment; filename="".$filename.'"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($androidPackage));
Кроме того, MIME для файлов APK на сервере установлен в application/vnd.android.package-архив
Ошибка синтаксического анализа возникает в следующей конфигурации телефона: Samsung Galaxy S10 в сети Verizon Android версии 11 (API 30) Цель сборки APK 28, мин. 21
Я включил специальный доступ:устанавливайте неизвестные приложения для браузеров.
Приложение по-прежнему не будет устанавливаться из браузера (указывая на веб-сайт моего сервера).
Я смог загрузить файл apk на Google диск и установить его оттуда (после разрешения Google диску устанавливать неизвестные приложения), поэтому, похоже, проблема не в файле APK, а в разрешениях браузера.
Я также могу установить его на свое локальное устройство с помощью отладки разработчика.
Комментарии:
1. Неясно, когда у вас возникает ошибка синтаксического анализа. Я бы предположил, что вы сначала загрузите файл в хранилище устройства, а затем попытаетесь открыть его из хранилища устройства. Довольно непонятно, чем вы занимаетесь. Даже неясно, используете ли вы свое собственное приложение для загрузки файла или используете какой-либо браузер.
2. Можете ли вы устанавливать APK из своих тестовых браузеров, когда ссылки находятся непосредственно на APK, а не с помощью
Content-Disposition: attachment;
?3. Уточнил, что проблема связана с загрузкой из браузера, а не из моего собственного приложения. Кроме того, файл APK можно загрузить с сервера, но также не открывать из локального хранилища телефона.
Ответ №1:
Предложение по общему программному обеспечению сработало.
Если я направлю браузер непосредственно к файлу, он установится, предварительно предупредив пользователя об установке неизвестных приложений.
lt;a href="MyApp.apk"gt;Direct Downloadlt;/agt;