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

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


SEVENI


Expert


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




 
  #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
Репутация: 1650
Откуда: Ставрополь




 
  #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://supertrubka.org/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
Репутация: 1650
Откуда: Ставрополь




 
  #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://supertrubka.org/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
Репутация: 1650
Откуда: Ставрополь




 
  #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
Репутация: 1650
Откуда: Ставрополь




 
  #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
Репутация: 2795
Откуда: г.Владимир




 
  #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
Сообщений: 5826
Репутация: 5274
Откуда: 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.21 секунд | 11 Запросов | HTML: 84.31 КБ -