Защищенные идентификаторы Android в R.java

Для тех, кто потратил какое-то время в исходном коде Android, это не новость, что идентификаторы, сгенерированные в классе android.R , не отображают 1: 1 фактические ресурсы, найденные в res/ directories поставляемого JAR. Многие из чертежей / стилей / макетов не являются «общедоступными» и доступны для приложений, ссылаясь на android.R.xxx .

Мой вопрос: кто-нибудь знает механизм, с помощью которого Android может генерировать класс R.java, который отличается от фактического графика ресурсов? Во-вторых, это механизм (с использованием правил сборки и т. Д.), Который мы, как разработчики, могли бы использовать для частичной защиты идентификаторов, которые становятся общедоступными в приложениях, используемых в качестве библиотек?

Заранее спасибо!

Android-пакеты с помощью aapt и генерирует R-файл с помощью этого инструмента во время процесса сборки. На этом этапе файлы XML скомпилированы в двоичные и другие ресурсы просто упакованы, как есть. Вы можете открыть файл .apk в виде zip-архива и получить доступ ко всем файлам ресурсов как есть. Библиотечные проекты просто содержат исходные файлы и ресурсы, которые добавляются в проект во время компиляции, поэтому они как-то будут существовать в файле .apk. Вероятно, макеты не 1: 1, потому что XML уже скомпилирован для проекта библиотеки. Вероятно, вы можете использовать aapt для удаления файлов из проекта библиотеки из времени включения, но тогда они не будут доступны в вашем проекте. Также может быть способ обфускации имен ваших ресурсов во время компиляции с помощью aapt и ant, но это не мешает им получить к ним доступ.

Я не уверен, почему вы хотели бы, чтобы класс R.java отличался от фактического графика ресурсов. Либо не включайте эти ресурсы во время сборки, либо они будут в apk. Ваши макеты сжимаются как двоичные файлы на выходе, поэтому я не уверен, как легко они декомпилируются или повторно используются в другом проекте.

Что такое эндшпиль здесь? Если это необходимо для защиты ваших ресурсов, это будет сложно. Android крайне небезопасен, если кто-то имеет возможность запускать свой телефон. Если вы хотите защитить свой IP-адрес, который я предполагаю, это эндшпиль здесь, я бы попытался скомпилировать мой проект в apk и посмотреть, могу ли я декомпилировать или извлечь критические ресурсы из apk. Может быть, попробуйте обфускацию, но опять же, я не знаю достаточно о скомпилированных XML-файлах, чтобы узнать, достаточно ли они запутаны, чтобы их не легко декомпилировать.

Кто-то может исправить меня, если я ошибаюсь, но это всего лишь мои 2 цента.

Intereting Posts
Android: Можно ли обновить только один элемент в списке? Правильный способ создания кросс-платформенного RTMP-потокового / игрового приложения. Телефонный плагин livu? Курсор начинается с начала edittext Android Studio: Как исключить модуль google-services в качестве продукта? Как / когда собирается мусор Handler? Android: использование AUTO-CANCEL при уведомлении, когда ваше приложение работает в фоновом режиме Простой XML-сериализатор не может удовлетворить элемент Как узнать, работает ли устройство в режиме высокой точности Как я могу сохранить фрагмент? Когда я поворачиваю экран Android EditText: потеря фокуса после ввода Android Things – Как подключиться к моей малине Pi, когда я не знаю IP-адрес Что делает Intent.putExtra Com.android.camera.action.CROP устанавливает обои на Motorola Defy Проблема с настройкой яркости на некоторых устройствах Android Обрезать изображение непосредственно из массива байтов