22:32 12 фев 2012 UsernokiamenSun, 12 Feb 2012 22:32:10 +0400
Sun, 12 Feb 2012 22:32:10 +0400
Что такое APK? APK — формат архивных исполняемых файлов-приложений для Android (wiki). От себя скажу вот так apk – это формат устанавливаемых приложений для ОС Android, также как Для Windows – name_program.exe (photoshop.exe) Для Symbian – name_program.sis (operamobile.sis) Для Linux - name_program.deb или name_program.rpm (chrome.deb & chrome.rpm) Для Android - name_program.apk (angry_birds.apk) Я думаю все ясно и понятно… Способы установки ~.APK показать текст
Установка приложений для Android возможна через: Официальный источник приложений - Android Market (необходима учетка на Google или его продуктов – youtube, gmail, picasa). Неофициальные источники –ОС Android предусмотрено установка приложений не с официального Ресурса , необходимо включить параметр «Неизвестные источники» .
Просмотреть, что находится внутри APK очень легко, для этого нам понадобится программа Winrar. Выбираем наше приложения APK и нажимаем открыть и при вопросе чем - выбираем Winrar
Теперь, что может лежать внутри APK при открытии его как архива
______________________________ Файл AndroidManifest.xml – чтобы сразу стало ясно - это «Паспорт», внутри него описывается что находится в приложение 1. Требования к приложению 2. Структура приложения 3. Версия приложения _____________________________ Папка META-INF –содержит MANIFEST.MF(открывается текстовым редактором "блокнот"), открыв его можно увидеть контрольные суммы SHA-1 и пути к данным, версию стандарта Manifest-Version, файлы сертификата RSA или DSA, файл SF содержит пути к ресурсам и их контрольные суммы. META-INF – это файлы метаданных - данные о данных. _____________________________ Папка res - В этой папке все ресурсы программы «Начинка», которые разнесены по разным поддиректориям. Например папки ~ drawable~ находятся графические элементы приложения (иконки, статусы и другие картинки), layout – XML-файлы о размещении элементов графического интерфейса (GUI) _____________________________ classes.dex - программный код, который выполняется в Dalvik VM. Для тех кто не в курсе Android это смесь Linux ядра с виртуальной машиной Java. _____________________________ resources.arsc - скомпилированный XML-файл, содержит данные о ресурсах, которые использует программа. ______________________________ Папка assets – может и не быть в apk приложение, также содержат ресурсы ______________________________ Папка lib – может и не быть в apk приложение. Приложение написано с использованием NDK, а в папке располагаются нативные библиотеки, к примеру можно писать приложения на c++ ______________________________ Папка com – может и не быть в apk приложение ______________________________ Папка org – может и не быть в apk приложение ______________________________ Папка udk – может и не быть в apk приложение ______________________________
Детальная разборка (декомпиляция) APK с помощью Apktool показать текст
Вам понадобится программа Apktool и Java Файл, который будете разбирать (в моем случае (smart.apk) Установка Apktool на ПК Скачиваем и Устанавливаем Java Скачиваем ApkTool (apktool1.4.3.tar.bz2 и apktool-install-windows-r04-brut1.tar.bz2) и распаковываем в директорию С:Windows (не обязательно НО! читайте дальше)
Для запуска Apktool нужно нажать сочетание клавиш Win+R
Пишем cmd - переходим в командную строку и пишем apktool Весь процесс происходит в командной строке…
Но я очень ленивый, поэтому решил эту проблему по-другому, есть графический интерфейс ApkTool называется он Smartapktool Скачиваем приложение Smartapktool (прикрепленный файл) распаковываем его в папку. Очень важно, чтобы файлы apktool лежали в папке Windows, не путать с Smartapktool. Запускаем интерфейс SmartApkTool.exe и переходим в меню Распаковать! Запаковать Выбирайте Ваше приложение ~name .apk (Важно! Отсутствие пробелов, кириллицы, знаков препинания)
После распаковки приложения вы обнаружите рядом папку с таким же названием
Перед тем как начать, скачайте приложение Notepad++ и настройте его вот так - (Настройки - Конфигурация – Новый документ)
Теперь Переходим в распакованное приложение (декомпилированое) Папка res - папка values
В основном все локализации (во всех приложениях) находятся в strings.xml, но могут быть случаи, что часть будет в arrays.xml Копируем эти два файла strings.xml и arrays.xml и создаем в папке res папку values-ru и вставляем их туда.
Открываем файл strings.xml с помощью Notepad++ выполняем перевод и сохраняемся.
Упаковка приложения и подпись (компиляция и подпись) показать текст
Открываем Smartapktool – переходим в Распаковать! Запаковать, выбираем запаковать и ставим галочку на подписать приложение, нажимаем обзор переходим к папке с распакованным приложением и выбираем файл apktool.yml, нажимаем «Запаковать и подписать»
после подписи Ваше приложение будет находиться В папке sign рядом с программой Smartapktool.exe и иметь название sign_name.apk . или просто «Запаковать» тогда в (декомпилированном приложение) папке разобранного приложения будут созданы папки build и dist, в папке dist будет собранный apk (то что нам нужно), в папке build содержимо этого apk.
Если Вы сразу не подписали а решили позже то нужно забросить приложение в папку sign и подписать программой SmartApkTool.exe на вкладке Подписать.
Выбор места установки приложения APK Применимо к OS Android 2.2 и выше показать текст
Открываем папку от декомпилированного приложения и нам нужен файл AndroidManifest.xml и вскрываем его с помощью Notepad++, но перед этим немного теории Значение - "internalOnly" – означает, что файл будет сохраняться только в памяти смартфона (внутренняя память) Значение - "auto" - – означает, что файл будет сохраняться либо в память смартфона или внешую память (SDcard) Значение - "preferExternal" – означает, что файл будет сохраняться на внешней памяти (SDcard) Что нельзя устанавливать со значением "preferExternal" (установить можно, но работать не будут или работать некорректно) Services - Сервисы Alarm Services – Сервисы использующие время Input Method Engines – «Приложения ввода» (Go keyboard) Live Wallpapers – Живые Обои Live Folders - .......... App Widgets - Виджеты Account Managers – «Аськи, Вконтакте итп» Sync Adapters – Приложения, которые постоянно синхронизируются Device Administrators - Приложения, админитсрирования Broadcast Receivers listening for "boot completed" - …………… Copy Protection - с Защитой от копирования Вобщем как-то так…. Теперь открываем нуженый файл AndroidManifest.xml и вскрываем его с помощью Notepad++ и находим там вот такое
android:installLocation="~~~~~~ " и меняем на android:installLocation="preferExternal" – если нужно поставить приложение на карту памяти (что многим и нужно) android:installLocation="auto" – ставиться на выбор android:installLocation=" internalOnly " – ставиться только на память смартфона
Редактирование и замена иконок и других графических элементов в APK показать текст
В декомпилированном приложение в (папка разобранного apk приложения) папке res на ходим такие папки как drawable-hdpi drawable-ldpi drawable-mdpi
Здесь находятся все графические файлы приложения Где буква перед ~dpi означает размер графических элементов Hdpi - High density (высокая плотность) Ldpi - Low density (низкая плотность) Mdpi - Medium density (средняя плотность) Их размеры должны быть такими (не факт): Low density – ldpi – 36×36 px Medium density – mdpi – 48×48 px High density – hdpi – 72×72 px Если вы хотите поменять иконку вашего приложения то открываем файл AndroidManifest.xml c помощью Notepad++, находим строчку отвечающую за иконку и смотрим название, в моем случае у нее название – icon (обратите внимание что расширение не прописывается, то есть прописывать так android:icon="@drawable/icon.png"не правильно)
Открываем папку drawable-~dpi и вставляем свою иконку учитывая исходное название 1. В AndroidManifest.xml строка - android:icon="@drawable/icon" 2. Расширение файла только .png 3. Плотность (размер) исходного файла (например 72х72рх)
Если вы хотите поменять название иконки на свое название (например dimonvideo.png), забрасываем в папку drawable-~dpi свою иконку учитывая 1. Расширение файла только .png 2. Плотность (размер) исходного файла И меняем в файле AndroidManifest.xml, строку android:icon="@drawable/~~~" на название иконки в папке drawable-~dpi Пример: android:icon="@drawable/icon" на android:icon="@drawable/dimonvideo" Если вы хотите поменять другие графические файлы в приложение то забрасываем их папку drawable-~dpi 1. Учитывая исходное название (Если название было vova.png то и должно таким остаться) 2. Расширение файла только .png 3. Плотность (размер) исходного файла (72х72рх)
Если Вы скачали приложение с неизвестного какого сайта и хотите узнать что будет делать это приложение когда Вы его установите. Не поняли о чем я? Например я нашел в сети приложение фонарик (к примеру) и в правах этого приложения есть возможность отправки SMS(SEND_SMS) на номер ХХХХ которое стоит 200$ (предположим) и чтобы не обеднеть читаем дальше как проверить что за права у приложения. Декомпилируем и открываем файл AndroidManifest.xml с помощью Notepad++ и находим строки и смотрим какие права
Чтобы узнать что за что отвечает читаем Мой перевод - Прав для приложения показать текст
Строка ACCESS_CHECKIN_PROPERTIES Позволяет чтение / запись доступ к "Свойства" в таблице приезда базу данных, чтобы изменить значения, которые получают загружен. Строка ACCESS_COARSE_LOCATION позволяет приложению получать доступ к грубым (например, Cell-ID, WiFi) место Строка ACCESS_FINE_LOCATION Позволяет приложению получить доступ к тонкой (например, GPS) место Строка ACCESS_LOCATION_EXTRA_COMMANDS Позволяет приложению доступ к дополнительным командам поставщик место Строка ACCESS_MOCK_LOCATION Позволяет приложение для создания макетов поставщикам место для тестирования Строка ACCESS_NETWORK_STATE Позволяет приложениям получать доступ к информации о сети Строка ACCESS_SURFACE_FLINGER Строка ACCESS_WIFI_STATE Позволяет приложениям получать доступ к информации о Wi-Fi сети Строка ACCOUNT_MANAGER Позволяет приложениям вызывать в AccountAuthenticators. Строка ADD_VOICEMAIL Позволяет приложению добавлять голосовые сообщения в систему. Строка AUTHENTICATE_ACCOUNTS позволяет применение в качестве AccountAuthenticator для AccountManager Строка BATTERY_STATS Позволяет приложению собирать статистику батареи Строка BIND_APPWIDGET позволяет приложению сообщить сервису AppWidget, кокое приложение может получить доступ к данным в AppWidget. Строка BIND_DEVICE_ADMIN Строка BIND_INPUT_METHOD Строка BIND_REMOTEVIEWS Строка BIND_TEXT_SERVICE Строка BIND_VPN_SERVICE Строка BIND_WALLPAPER Строка Bluetooth позволяет приложениям подключаться к сопряженным устройствам Bluetooth Строка BLUETOOTH_ADMIN Позволяет приложениям находить и сопряженные устройства Bluetooth Строка BROADCAST_PACKAGE_REMOVED Позволяет приложению передавать уведомление, что пакет приложений был удален. Строка BROADCAST_SMS Позволяет приложению передавать уведомления что SMS получено Строка BROADCAST_STICKY Строка BROADCAST_WAP_PUSH Строка CALL_PHONE Позволяет приложению инициировать телефонный звонок, минуя пользовательский интерфейс Dialer для пользователя Строка CALL_PRIVILEGED позволяет приложению вызывать любой телефонный номер, включая номера экстренных служб, минуя пользовательский интерфейс Dialer для пользователя Строка Camera должны иметь возможность доступа к камере устройства. Строка CHANGE_COMPONENT_ENABLED_STATE Позволяет приложению изменять компоненты других приложений Строка CHANGE_CONFIGURATION Позволяет приложению изменять текущую конфигурацию, такие, как язык. Строка CHANGE_NETWORK_STATE Позволяет приложениям изменить состояние подключения к сети Строка CHANGE_WIFI_MULTICAST_STATE Строка CHANGE_WIFI_STATE Позволяет приложениям изменить состоянии Wi-Fi подключения Строка CLEAR_APP_CACHE Позволяет приложению, очистить кэш всех установленных приложений на устройстве. Строка CLEAR_APP_USER_DATA Позволяет приложению очистить пользовательские данные Строка CONTROL_LOCATION_UPDATES Строка DELETE_CACHE_FILES Позволяет приложению удалять файлы кэша. Строка DELETE_PACKAGES Позволяет приложению удалять пакеты. Строка DEVICE_POWER Позволяет низкоуровневый доступ к включению, управлению Строка ДИАГНОСТИКИ Строка DISABLE_KEYGUARD Позволяет приложениям отключение блокировки клавиатуры Строка DUMP позволяет приложению получать информацию о состоянии системных служб. Строка EXPAND_STATUS_BAR Позволяет приложению разворачивать или сворачивать в строку состояния. Строка FACTORY_TEST Строка FLASHLIGHT Разрешает доступ к спышке (спышка камеры) Строка FORCE_BACK Строка GET_ACCOUNTS Разрешает доступ к списку записей в учетных записях Строка GET_PACKAGE_SIZE Строка GET_TASKS Позволяет приложению получать информацию о текучих или недавно запущенных задачах Строка GLOBAL_SEARCH Это разрешение может быть использован для контент-провайдеров, чтобы глобальная система поиска могла получить доступ к своим данным. Строка HARDWARE_TEST позволяет получить доступ к файлам устройств. Строка INJECT_EVENTS Позволяет приложению ввод (клавиши, сенсорный, трекбол) любом окне. Строка INSTALL_LOCATION_PROVIDER позволяет приложению устанавливать местонахождение поставщика в расположение сети оператора Строка INSTALL_PACKAGES позволяет приложению устанавливать пакеты. Строка INTERNAL_SYSTEM_WINDOW Позволяет приложению открывать окна, которые предназначены для использования в части пользовательского интерфейса системы. Строка Internet позволяет приложениям открывать сетевые сокеты. Строка KILL_BACKGROUND_PROCESSES позволяет приложению вызывать killBackgroundProcesses (String). Строка MANAGE_ACCOUNTS Позволяет приложению управлять списком AccountManager Строка MANAGE_APP_TOKENS Строка MASTER_CLEAR Строка MODIFY_AUDIO_SETTINGS Позволяет приложению изменять глобальные настройки звука Строка MODIFY_PHONE_STATE Разрешает изменение телефонной части- питание, MMI и т.д. Строка MOUNT_FORMAT_FILESYSTEMS позволяет форматировать файловые системы для съемных носителей. Строка MOUNT_UNMOUNT_FILESYSTEMS позволяет монтировать и размонтировать файловые системы для съемных носителей. Строка NFC позволяет приложениям выполнять операции ввода / вывода через NFC Строка PERSISTENT_ACTIVITY Строка PROCESS_OUTGOING_CALLS Позволяет приложению контролировать, изменять или отменять исходящие вызововы. Строка READ_CALENDAR позволяет приложению читать календарь пользователя . Строка READ_CONTACTS Позволяет приложению считывать контакты пользовательских данных. Строка READ_FRAME_BUFFER Позволяет приложению создание скриншотов Строка READ_HISTORY_BOOKMARKS позволяет приложению считывать историю посещенных страниц пользователей и закладки. Строка READ_INPUT_STATE позволяет приложению получать текущее состояние клавиш и ихпереключение. Строка READ_LOGS позволяет приложению читать низкоуровневые системные файла журнала. Строка READ_PHONE_STATE позволяет читать только доступ к телефонной части. Строка READ_PROFILE Позволяет приложению считывать персональные данные профиля пользователя. Строка READ_SMS позволяет приложению читать SMS-сообщения. Строка READ_SOCIAL_STREAM Строка READ_SYNC_SETTINGS Позволяет приложениям считывать параметры синхронизации Строка READ_SYNC_STATS Позволяет приложениям считывать статистику синхронизации Строка RECEIVE_BOOT_COMPLETED Строка RECEIVE_MMS Позволяет приложению контролировать входящие сообщения MMS, их запись, выполнение и обработку . Строка RECEIVE_SMS Позволяет приложению контролировать входящие сообщения SMS, их запись, выполнение и обработку . Строка RECEIVE_WAP_PUSH Строка RECORD_AUDIO Позволяет приложение записывать звук Строка REORDER_TASKS Позволяет приложению изменить порядок задач Строка RESTART_PACKAGES Строка SEND_SMS Позволяет приложение права для отправки SMS сообщений. Строка SET_ACTIVITY_WATCHER Позволяет приложению, наблюдать и контролировать при старте системы. Строка SET_ALARM Позволяет приложению установить сигнал выбранный пользователем. Строка SET_ALWAYS_FINISH Позволяет приложению контролировать, будет ли оно работать, когда свернули его в фоновом режиме. Строка SET_ANIMATION_SCALE Изменение глобального коэффициента масштабирования анимации. Строка SET_DEBUG_APP настройки приложения для его отладки. Строка SET_ORIENTATION – ориентация экрана Строка SET_POINTER_SPEED Строка SET_PREFERRED_APPLICATIONS Строка SET_PROCESS_LIMIT позволяет приложению устанавливать максимальное количество процессов, которые могут быть запущены. Строка SET_TIME Позволяет приложениям для установки системного времени Строка SET_TIME_ZONE Позволяет приложениям, устанавливать часовой пояс системы Строка SET_WALLPAPER Позволяет приложениям установить обои Строка SET_WALLPAPER_HINTS Строка SIGNAL_PERSISTENT_PROCESSES Строка STATUS_BAR Позволяет приложению открывать, закрывать, или отключать панель статуса и икон. Строка SUBSCRIBED_FEEDS_READ Позволяет приложению, получать доступ к подписке канала ContentProvider. Строка SUBSCRIBED_FEEDS_WRITE Строка SYSTEM_ALERT_WINDOW Позволяет приложению открывать окна Строка TYPE_SYSTEM_ALERT, Позволяет приложению показывать информацию поверх всех других приложений. Строка UPDATE_DEVICE_STATS Позволяет приложению обновить статистику. Строка USE_CREDENTIALS Позволяет приложению запросить authtokens от AccountManager Строка USE_SIP позволяет приложению использовать SIP-услуги Строка Вибрация позволяет получить доступ к вибро Строка WAKE_LOCK Позволяет использовать PowerManager WakeLocks не понижать частоту процессор во время сна или затемнять экран. Строка WRITE_APN_SETTINGS Позволяет приложениям записывать настройки APN (точка доступа интернет) Строка WRITE_CALENDAR позволяет приложению записывать (но не читать) календарь пользователя. Строка WRITE_CONTACTS позволяет приложению записывать (но не читать) контакты пользователя. Строка WRITE_EXTERNAL_STORAGE позволяет приложению записывать данные на внешние накопители Строка WRITE_GSERVICES Позволяет приложению использовать карту Google . Строка WRITE_HISTORY_BOOKMARKS позволяет приложению записывать (но не читать) в историю посещенных страниц пользователя и закладки. Строка WRITE_PROFILE позволяет приложению записывать (но не читать) персональные данные профиля пользователя. Строка WRITE_SECURE_SETTINGS Позволяет права приложению для чтения или записи настроек безопасности приложения Строка WRITE_SETTINGS Позволяет права приложению для чтения или записи параметров системы. Строка WRITE_SMS Позволяет приложению писать SMS-сообщения. Строка WRITE_SOCIAL_STREAM позволяет приложению записывать (но не читать) социальные данные пользователя в потоке. Строка WRITE_SYNC_SETTINGS Позволяет приложениям записывать настройки синхронизации