Приложение Ludei для Android требует ненужных разрешений

Я использую конструкцию 2 для создания своих приложений, а затем экспортирую их в CocoonJS, который затем компилирует их как собственное приложение. Я загружаю неподписанный файл .apk, подписываю его и загружаю в Google Play. Приложения работают отлично, как будто они были изначально написаны.

Когда я компилирую свое приложение с помощью CocoonJS, ему требуются все эти разрешения, которые не нужны моему приложению. Как я могу удалить ненужные разрешения?


person jabelone    schedule 03.03.2014    source источник


Ответы (2)


Пока Ludei не реализует необязательные разрешения для своего облачного компилятора, нам придется немного «взломать», чтобы решить проблему самостоятельно.

Получите прикрепленный apktool.zip, распакуйте его в папку C:\Android (чтобы потом было проще). https://static3.scirra.net/uploads/articles/1071/apktool.zip

Скопируйте скомпилированный CJS файл game.apk (здесь этот файл APK называется game.apk) в C:\Android, чтобы он находился в той же папке, что и извлеченные файлы apktool.

Откройте командную строку в C:\Android, щелкнув правой кнопкой мыши где-нибудь в этой папке, удерживая клавишу SHIFT.

Во-первых, нам нужно установить фреймворк нашего скомпилированного CJS game.apk, введите его:

apktool, если игра.apk

Это мгновенно, с обратной связью, что он установлен в месте 127 или около того. Теперь нам нужно декомпилировать APK, введите это:

apktool d game.apk игра

Это займет некоторое время в зависимости от размера вашей игры и скорости вашего ПК, но все содержимое вашего game.apk будет декомпилировано и сохранено в подпапке с тем же именем, что и у вашего game.apk, т.е. игра. Обратите внимание: если вы используете разные версии apktool, вам может потребоваться изменить флаг на: apktool d game.apk -o game, чтобы он правильно декомпилировался.

Просмотрите подпапку с новой игрой, вы увидите все содержимое. Нам нужен файл AndroidManifest.xml, откройте его с помощью Notepad++.

Версия в высоком разрешении: halfgeekstudios.files.wordpress.com/2014/07/androidmanifest.jpg Удалите разрешения, удалив строки, выделенные серым цветом!

Требуются разрешения ACCESS_NETWORK_STATE & INTERNET, если вы удалите их, ваша игра, скорее всего, вылетит при запуске. Это верно, даже если у вас нет рекламы, IAP или социальных плагинов. CJS нуждается в них, поскольку у него есть встроенная аналитика, которая требует этого. BILLING также требуется, если вы внедряете IAP. Интересно, что Google решил, что эти три вышеупомянутых разрешения теперь будут считаться нормальными, и они не предупреждают пользователей, когда в играх есть только эти три, только если они содержат другие разрешения!

Здесь я хотел бы указать на эту строку:

Вы можете отредактировать свою игру для телефонов или планшетов, установив для них значение false. Если вы установите smallScreens & normalScreens = "false", игра будет совместима только с планшетами или наоборот (я проверял это со своими играми). Это удобно, если вы разрабатываете свою цель для планшетов и не хотите вручную фильтровать более 6400 устройств по одному. :D

После внесения изменений сохраните его. Вернитесь в командную строку, введите это, чтобы перекомпилировать его в новый APK:

apktool b игра game_new.apk

Это займет некоторое время, но вы получите измененный файл game_new.apk. Теперь вам нужно выполнить обычную подпись и выравнивание zip перед загрузкой в ​​Google Play.

https://www.scirra.com/tutorials/1071/удаление-разрешений-из-cocoonjs-compiled-apk

person Scdev    schedule 23.12.2014
comment
Спасибо, я попробовал это (надо было упомянуть) и даже создал кучу командных файлов, чтобы все делать автоматически. Единственная проблема в том, что это неудобно и иногда не работает. Спасибо за предложение. - person jabelone; 24.12.2014

Вы не можете удалить его. Попробуйте другие инструменты, такие как Phonegap. разговор по телефону

person tk26    schedule 08.03.2014