Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

редактирование системных apk при помощи ApkTools : Смартфоны Android : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Смартфоны Android
/  редактирование системных apk при помощи ApkTools
На печать 
Правила 


SEVENI


Expert


Регистрация: 10.8.08
Сообщений: 126
Репутация: 1668
Откуда: Ставрополь




 
  #1 [09.11.12, 21:01] редактирование системных apk при помощи ApkTools   

 
редактирование системных apk при помощи ApkTools (c) Brut.all

между делом решил написать инструкцию по сборке/разборке apk-файлов.
для это нам понадобится:
JDK
Apktools


для примера я разберу/соберу SystemUI.apk
1 шаг)
устанавливаем JDK
создаем каталог "apktools" в корне диска. (для своего удобства я создал путь C:\android\ApkTools) и распаковываем туда содержимое архива apktools
скриншот: 

теперь нам нужно установить framework для своей прошивки(эта операция делается один раз для каждой новой прошивки)
перетаскиваем framework-res.apk от своей прошивки на apktool-if.cmd
дожидаемся завершения операции.
скриншот: 

для устройств HTC и прошивки с SENSE тоже самое нужно проделать с файлом com.htc.resources.apk,
SAMSUNG - twframework-res.apk,
Motorola - blur-res.apk и moto-res.apk,
LG - lge-res.apk, Sony Ericsson - SemcGenericUxpRes.apk
Проще говоря - нужно установить таким способом все apk-файлы в каталоге system/framework/

теперь мы можем разбирать системные приложения.

2 шаг)
[разборка:]
берем SystemUI.apk и перетаскиваем на apktool-d.cmd
дожидаемся окончания операции.
скриншот: 

получаем каталог с распакованным содержимым SystemUI.apk
изменяем, что хотим.

3 шаг)
[запаковка:]
перетаскиваем каталог SystemUI на apktool-b.cmd
дожидаемся завершения операции.
скриншот: 

теперь открываем WINRAR'ом (или любым другим архиватором)
исходный SystemUI.apk и каталог SystemUI\build\apk\
скриншот: 

и перемещаясь по каталогу, закидываем измененные файлы в исходный SystemUI.apk,
по аналогичным путям, заменяя файлы.
степень сжатия: без сжатия.

Если редактировали *.xml в папках values, добавляли/удаляли изображения
- resources.arsc менять обязательно!
(в нём находятся все папки values и файл public.xml, в котором присваивается ID всем ресурсам, кстати папка smali, находится в файле classes.dex)


(R) sk0t

прилагаю архивы с apktools.
1.3.2 - для Android 1.6 - 2.3.7
1.4.3 - для Android 4.0.x
1.5.0 - экспериментальная версия от iBotPeaches




Samsung GT-I9103 4.0.4
Canon 60D + Sigma 50mm 1.4, canon 17-40 4L
Спасибо сказали: MrGraL, MAVER145, a6b6, Vov4ик, Kolbasser

GaS


Expert


Регистрация: 18.1.08
Сообщений: 644
Репутация: 2553
Откуда: г.Кимры Россия




 
  #2 [10.11.12, 00:32] Re: редактирование системных apk при помощи ApkTools   

 
ну разобрали, отредачили, собрали, а дальше ставить как обычный апк или тупо заменить его? разрешения или прочую хрень менять нужно?




SONY Xperia GO ,J105 R1HA035
Спасибо сказали: a6b6

SEVENI


Expert


Регистрация: 10.8.08
Сообщений: 126
Репутация: 1668
Откуда: Ставрополь




 
  #3 [10.11.12, 06:18] Re: редактирование системных apk при помощи ApkTools   

 
Gas, если с телефона заменять то
нужен файл менеджер с
поддержкой root и возможностью
назначать права(root explorer, ES)
Копируем apk в телефон на карту.
Копируем apk с карты в папку /system
Выставляем для apk права 0644
Перемещаем apk в папку /system/app или
/system/framework
Перемещать из /system нужно потому, что
apk может использоваться в данный
момент и система не даст заменить его
при копировании.


иначе такой способ:
http://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=5664




Samsung GT-I9103 4.0.4
Canon 60D + Sigma 50mm 1.4, canon 17-40 4L

zapret


Moder


Регистрация: 27.5.07
Сообщений: 1577
Репутация: 1813
Откуда: Königsberg-Калининград




 
  #4 [10.11.12, 21:50] Re: редактирование системных apk при помощи ApkTools   

 
SEVENI, немного не в тему, но. что нужно поменять в апк, чтоб можно было установить два одинаковых или скажем две разные версии?
нужно поставить второй менеджер смс. первый стоит с кастомной прошивки, хочу со стока поставить менеджер. тупо установить или заменить старндартный не прокатывает. ничего не работает в итоге.




samsung galaxy S3 4.2.2
W580\K750i\k550

если собрали учет занятого места в прошивке - обращайтесь

SEVENI


Expert


Регистрация: 10.8.08
Сообщений: 126
Репутация: 1668
Откуда: Ставрополь




 
  #5 [11.11.12, 09:16] Re: редактирование системных apk при помощи ApkTools   

 
zapret, по идее достаточно заменить имя пака, который установится в Data/app
для примера:
Autostarts_v1.7.5\AndroidManifest.xml
<manifest android:versionCode="22" android:versionName="1.7.5" android:installLocation="auto" package="com.elsdoerfer.android.autostarts"


но некоторые приложения могут ругаться при сборке, ссылаясь в начальную,
в логе можно будет посмотреть какие файлы в какой строке и заменить их самостоятельно.


+ если хочешь заменить имя в меню, то
Autostarts_v1.7.5\res\values\strings.xml
<string name="app_name">Autostarts</string>

ну и соответственно
Autostarts_v1.7.5\res\values-ru\strings.xml
Если таковой имеется.

не забудь перед тем, как в телефон закинуть - подписать приложение.
тут архив signed - http://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=5664



Прикрепленный к сообщению файл:
Screenshot_2012-11-11-09-07-54.png


Samsung GT-I9103 4.0.4
Canon 60D + Sigma 50mm 1.4, canon 17-40 4L

SEVENI


Expert


Регистрация: 10.8.08
Сообщений: 126
Репутация: 1668
Откуда: Ставрополь




 
  #6 [09.12.12, 01:41] Re: редактирование системных apk при помощи ApkTools   

 
Возможность открывать ZIP, RAR архивы. 4.0.4

1 шаг: 


2 шаг: 

сохраняем, собираем, готово.
установите программу, которая умеет открывать zip или rar, к примеру, totalcommander
© SEVENI



Прикрепленный к сообщению файл:

drawable.rar drawable.rar (0.94 kb; 4 hits) Скачать файл
drawable-hdpi.rar drawable-hdpi.rar (20.47 kb; 5 hits) Скачать файл
Screenshot_2012-12-09-01-49-17.png


Samsung GT-I9103 4.0.4
Canon 60D + Sigma 50mm 1.4, canon 17-40 4L
Спасибо сказали: a6b6

SEVENI


Expert


Регистрация: 10.8.08
Сообщений: 126
Репутация: 1668
Откуда: Ставрополь




 
  #7 [15.12.12, 11:21] Re: редактирование системных apk при помощи ApkTools   

 
расширенное power menu для android 4.0.4

работа с framework-res: 


android.policy: 




Samsung GT-I9103 4.0.4
Canon 60D + Sigma 50mm 1.4, canon 17-40 4L

Therion


Developer/Admin


Регистрация: 9.2.08
Сообщений: 1748
Репутация: 10884
Откуда: Украина, г. Киев




 
  #8 [27.12.12, 01:01] Re: редактирование системных apk при помощи ApkTools   

 
SEVENI, а как быть, если после сборки отредактированных ресурсов файлы *.xml не шифруются, как это сделано в оригинале? Получается что файл в апк попадает в своем читабельном виде




awg


Patcher/Moder


Регистрация: 10.1.08
Сообщений: 604
Репутация: 2844
Откуда: г.Владимир




 
  #9 [20.03.13, 08:16] Re: редактирование системных apk при помощи ApkTools   

 
SEVENI, кстати, на стоковом ядре на смартах Sony/SonyEricsson Xperia перезагрузка в рекавери возможна, только при наличии файла boot по пути cache/recovery, который после перезагрузки пропадает! И то, один фиг в рекавери не попадает, пытается в него войти, но не получается, тупо зависает! Легко проверить - создать этот файл и в терминале набрать:
su
reboot

нужно ядро ковырять!

[ Редактировано awg в 20.3.13 07:17 ]




К550->W610->K700->C901->Xperia Sola->Meizu MX2->Meizu M3 Note->Xiaomi Redmi Note 4x (Mido)->Redmi Note 7Pro (Violet)

Zormax


Admin


Регистрация: 12.12.05
Сообщений: 5820
Репутация: 5289
Откуда: Nizhniy Novgorod




 
  #10 [04.04.13, 11:46] Re: редактирование системных apk при помощи ApkTools   

 
Вибра при поднятии трубки на том конце.

Есть сложный способ, я по нему не пошел, свой воткнул.

Итак, андроид 4.0.3, разбираем Phone.apk

Нас интересует файл CallNotifier.smali

Декларируем новую переменную, в которую будем заносить ноль после вибры, чтобы потом не вибрило самопроизвольно.

В начале ищем, где прописаны переменые:
Код:
# instance fields
.....
.....
.field private mVoicePrivacyState:Z

.field private ok2Ring:Z


Добавляем нашу новую после ok2Ring:
Код:
.field private mLastVibratedCall:Z


Чуть ниже начинается код:
Код:
.method private constructor <init>(Lcom/android/phone/PhoneApp;бла-бла-бла


В нем еще чуть ниже есть:
Код:
iput-boolean v6, v9, Lcom/android/phone/CallNotifier;->ok2Ring:Z


После неё вставляем:
Код:
iput-boolean v6, v9, Lcom/android/phone/CallNotifier;->mLastVibratedCall:Z


Здесь отступление:
Номера регистров (v6 и v9) брать свои, т.е. те, что в коде прописаны, в той же "ok2Ring".

Далее ищем метод:
Код:
.method private onDisconnect(Landroid/os/AsyncResult;I)V


В нём ищем перво встречающеяся "ok2Ring":
Код:
move-object/from16 v0, v43

iput-boolean v4, v0, Lcom/android/phone/CallNotifier;->ok2Ring:Z


После вставляем:
Код:
iput-boolean v4, v0, Lcom/android/phone/CallNotifier;->mLastVibratedCall:Z


Здесь отступление:
Номера регистров (v4 и v0) брать свои, т.е. те, что в коде прописаны, в той же "ok2Ring".

Далее ищем метод:
Код:
.method private onNewRingingConnection(Landroid/os/AsyncResult;I)V


В нём ищем перво встречающеяся "ok2Ring":
Код:
.line 632
.local v1, phone:Lcom/android/internal/telephony/Phone;
iput-boolean v6, v8, Lcom/android/phone/CallNotifier;->ok2Ring:Z


После вставляем:
Код:
iput-boolean v6, v8, Lcom/android/phone/CallNotifier;->mLastVibratedCall:Z


Здесь отступление:
Номера регистров (v6 и v8) брать свои, т.е. те, что в коде прописаны, в той же "ok2Ring".

Далее ищем метод:
Код:
.method private onPhoneStateChanged(Landroid/os/AsyncResult;)V


В нем ниже ищем вывод в лог:
Код: 
    .line 1121
    .local v2, callState:Lcom/android/internal/telephony/Call$State;
    sget-object v7, Lcom/android/internal/telephony/Call$State;->DIALING:Lcom/android/internal/telephony/Call$State;

    if-eq v2, v7, :cond_c7

    sget-object v7, Lcom/android/internal/telephony/Call$State;->DISCONNECTING:Lcom/android/internal/telephony/Call$State;

    if-eq v2, v7, :cond_c7

    sget-object v7, Lcom/android/internal/telephony/Call$State;->DISCONNECTED:Lcom/android/internal/telephony/Call$State;

    if-eq v2, v7, :cond_c7

    sget-object v7, Lcom/android/internal/telephony/Call$State;->ALERTING:Lcom/android/internal/telephony/Call$State;

    if-eq v2, v7, :cond_c7

    .line 1126
    const-string v7, "onPhoneStateChanged: foregroundCall not Dialing, set Audio mode"

    invoke-direct {v10, v7}, Lcom/android/phone/CallNotifier;->log(Ljava/lang/String;)V

    .line 1127
    iget-object v7, v10, Lcom/android/phone/CallNotifier;->mAudioManager:Landroid/media/AudioManager;

    invoke-virtual {v7}, Landroid/media/AudioManager;->getMode()I

    move-result v7

    const/4 v8, 0x2

    if-eq v7, v8, :cond_195


Вставлять вибру будем после:
Код:
    .line 1126
    const-string v7, "onPhoneStateChanged: foregroundCall not Dialing, set Audio mode"

    invoke-direct {v10, v7}, Lcom/android/phone/CallNotifier;->log(Ljava/lang/String;)V


Вставляем:

Код: 
    # Дальше наш код.

    iget-boolean v7, v10, Lcom/android/phone/CallNotifier;->mLastVibratedCall:Z # Получаем значение переменной

    if-eqz v7, :cond_zz # Если она 0, то не вибрим

    new-instance v7, Landroid/os/Vibrator; # Создаем

    invoke-direct {v7}, Landroid/os/Vibrator;-><init>()V # объект Vibrator.

    if-eqz v7, :cond_zz # Проверяем успешность предыдущей операции. На всяк случай.

    const-wide/16 v8, 0x96 # Задаем время вибрации в мс. 0x96 - это 150 миллисекунд.

    const-wide/16 v0, 0x0 # нада... )))

    invoke-virtual {v7, v8, v0}, Landroid/os/Vibrator;->vibrate(J)V # Вызываем метод, запускающий вибру.

    const/4 v8, 0x0

    move-object/from16 v0, v10 # Объект временно перемещаем

    iput-boolean v8, v0, Lcom/android/phone/CallNotifier;->mLastVibratedCall:Z # записываем в него новое значение 0

    :cond_zz


На что стоит обратить внимание, для работоспособности:
имена регистров у вас наверняка другие будут (v7, v8, v0)
Как определить нужные регистры?
смотрим выше и ниже код, ищем подобие:
const/4 v7, 0x2
ага, видим что v7 периодически по коду использется для внесения в неё разных констант, запоминаем номер регистра.
еще шарим по коду не выходя за рамки метода "onPhoneStateChanged":
const/4 v8, 0x2
ага, и v8 тоже периодически используется как свободный регистр.
Ну а третий регистр, придется подбирать (у меня v0).
v0 еще и потому, что ниже она юзается тоже как почти свободная:
Код: 
.line 1168
    const/16 v0, 0x3e8

    .line 1169
    .local v0, IN_CALL_NOTIFICATION_UPDATE_DELAY:I
    const/16 v7, 0x1c

    const-wide/16 v8, 0x3e8

    invoke-virtual {v10, v7, v8, v9}, Lcom/android/phone/CallNotifier;->sendEmptyMessageDelayed(IJ)Z

    .line 1174
    .end local v0           #IN_CALL_NOTIFICATION_UPDATE_DELAY:I
    .end local v2           #callState:Lcom/android/internal/telephony/Call$State;
    .end local v4           #pm:Landroid/os/PowerManager;


Отдельно по поводу регистра v10 - номер регистра тоже свой поставить, прямо после кода где вставляем, видно:
Код:
    .line 1126
    const-string v7, "onPhoneStateChanged: foregroundCall not Dialing, set Audio mode"

    invoke-direct {v10, v7}, Lcom/android/phone/CallNotifier;->log(Ljava/lang/String;)V

invoke-direct {v10, v7} - вот он наш нужный, у меня v10

Как ставить:
Т.к. Phone всегда загружен, то перезагружаем тело перед операциями:
1. подменяем файл в /system/app/
2. права на файл выставляем
3. хвост удаляем: /system/app/Phone.odex
4. перезагружаемся
ну либо подменяем через ADB

Учтите, что если выставили неверные регистры, то Phone будет постоянно выдавать ошибку и будет очень проблематично что-либо сделать на телефоне, т.к. окно ошибки будет всегда выскакивать, нужно заранее подготовить отходной путь, например чтобы стояла программа для соединения по WiFi через ADB, чтобы можно было вернуть исходный.

[ Редактировано Zormax в 5.4.13 19:03 ]




TOOKY T83 (1.3.1-L2), MK808B
Спасибо сказали: zapret, GaS, a6b6



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

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.05 секунд | 10 Запросов | HTML: 83.88 КБ -