Note 3 3G 版 Root + Recovery + EFS 備份


freesoul wrote:
kernel 跟2w...(恕刪)


這部份不會影響

cschienl.cs wrote:
代 ES 大 發表=...(恕刪)



C大晚安,有問題想請教一下,

今天刷完V36被他的音量嚇到,怎麼會那麼大聲也有破聲.進去VipER4Android FX 設定還是很大聲,請問要怎麼回復原本的音量?

刷 rom 時,安裝聲音的選項可能選到 3. 聲音大聲",
再選一次 ""2. 原廠音效及音量",
聲音就會正常


"1. 保持原來的聲音",
"2. 原廠音效及音量",
"3. 聲音大聲",
"4. 開機,照相沒有聲音",
"5. 觸摸聲音,改為豆聲",
"6. S4 開機音效",
"7. 觸摸聲音,改為答聲",
"8. Xperia 音效"

我今天比較有時間,我就將 4.4.2 systemui.apk 的附加功能,寫個教寫
這個教學 可以用在 N900 及 N9005 的 systemui.apk 上面

這部份沒有辦法一次寫完,所以會分成很多次, 等全部寫完,我再彙整成一篇

為了使製作方便,每篇分隔線 ,都有放文字說明的檔案,以利指令的替換

====================================================================

java 環境設定


編譯共需要 二 種軟体 , 電腦要配罝 JAVA 的環境 ,

JAVA 下載 (我只提供 64位元 win7 win8 都可使用)

jdk-7u60-windows-x64.exe
https://drive.google.com/file/d/ ... zA/edit?usp=sharing


1,下載JDK並安裝

2,環境變數配置(以Windows 8 64bit為例)

(1)“電腦(本機)”按右鍵 => 內容 => 進階系統設定 => 環境變數

(2). 按新增 (第一個)

變數名"JAVA_HOME"
變數值 C:\Program Files\Java\jdk1.7.0_60

(3). 按新增 (第二個)

變數名"PATH"
變數值 ;C:\Program Files\Java\jdk1.7.0_60\bin

注意前面有分號

(4). 按新增 (第三個)

變數名"CLASSPATH"
變數值 C:\Program Files\Java\jdk1.7.0_60\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_60\lib\tools.jar;.

注意後面有分號及句點

3)最後打開cmd,輸入“java –version”,看到你的java版本,基本能說明JAVA環境配置成功了

===========================================================================

這一篇文字的檔案
java 環境設定.prop
https://docs.google.com/file/d/0B80kk8AOqhiaSzI5eGctdzlTYk0/edit

============================================================================

後續教學編譯軟体,請用下面這一套

[Tool]Advanced ApkTool v2.0.0[Windows][9/2/2014]

它是 XDA 神人 BDFreak,利用最新版的 APKTOOL V2.0 製作成的工具

這套工具的網站
http://forum.xda-developers.com/showthread.php?t=2639400


它有說明,如何使用,請自行下載

我將重點,再說明一下

1. 下載解壓縮後,有一個資料夾 [AdvancedApkTool]

2. 裡面有 4 個資料夾 及 1 個執行檔

[1-BDFreak]
[2-In]
[3-Out]
[4-Done]
Advance ApkTool.exe

3. 使用之前,要先執行框架一次,
442框架.rar (21.4MB)
https://drive.google.com/file/d/0B80kk8AOqhiabi05ckV3Z3RKMVU/edit?usp=sharing


以後若是 Android 版本 到 4.4.3 , 只要將 4.4.3 system/framewor/framework-res.apk
及 twframework-res.apk 二個檔案 ,罝換即可

4. 將下載的檔案,解壓縮後,放在 [2-In] 這個資料夾

5. 執行 Advance ApkTool.exe

6. 選 1 - Install Framework

會出現

1 - framework-res.apk
2 - twframework-res.apk

依畫面指示操作, 1 與 2 都要執行

這部份只要執行一次即可,因為已經寫入電腦,以後不用再執行

後續我會用 systemui.apk 這個教學 , 來說明如何使用這個編譯軟體

這一篇文字的檔案
apktool_v20編譯工具.prop
https://docs.google.com/file/d/0B80kk8AOqhiaaERYVE5nbFBCdGs/edit
==============================================================================

為了使教學大家可以一起製作,所以我用三星原廠 N900ZSUDNE3
都沒有變更任何功能 (只將 27 個程式,更新為最新版)

製作成一個原廠 ROM , 用最乾淨的環境來測試,
Stock.zip (1.43 G)
https://drive.google.com/file/d/0B80kk8AOqhiaYkRmR3JzZzNvMWM/edit?usp=sharing


N9005 的部份,可自行用原廠的 systemui.apk , 覆蓋目前的 systemui.apk

以利教學的說明 ,檔案一致,比較好說明

驗明正身




============================================================================
課程一. 如何增加電池模組

1. 編譯 SystemUI.apk (將這個檔放入 [2-In] )執行 Advance ApkTool.exe
選 2 -Decompile Files , 依畫面操作即可

原廠 systemui.apk
https://drive.google.com/file/d/0B80kk8AOqhiacDZFYkZmMDBGRDQ/edit?usp=sharing


2. 用 Notepad ++ 修改 status_bar.xml (它是放在 [3-Out] 裡面)\SystemUI.apk\res\layout\status_bar.xml

最新版免安裝 Notepad ++
https://drive.google.com/file/d/0B80kk8AOqhiaLVNLbGE1R2wtTWs/edit?usp=sharing

3. 找 (約 18 列)

<com.android.systemui.BatteryMeterView android:id="@id/battery" android:layout_width="12.0dip" android:layout_height="18.0dip" android:layout_marginBottom="0.33000004dip" android:layout_marginStart="5.0dip" />

4. 換為

<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="3.0dip" />

5. 存檔

6. 用 Notepad ++ 修改 PhoneStatusBar.smali (它是放在 [3-Out] 裡面)
\SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali

7. 找 (約 100 列)
.field mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

8. 換為
.field mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;

9. 找 (約 10697 列)
invoke-direct/range {v25 .. v26}, Lcom/android/systemui/statusbar/policy/BatteryController;-><init>(Landroid/content/Context;)V

10. 換為
invoke-direct/range {v25 .. v26}, Lcom/ghareeb/BatteryMod/BatteryController;-><init>(Landroid/content/Context;)V

11. 找 (約 10689 列)

new-instance v25, Lcom/android/systemui/statusbar/policy/BatteryController;

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

move-object/from16 v26, v0

invoke-direct/range {v25 .. v26}, Lcom/android/systemui/statusbar/policy/BatteryController;-><init>(Landroid/content/Context;)V

move-object/from16 v0, v25

move-object/from16 v1, p0

iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

12 換為 (上面的 8 列,換為下面 30 列)

new-instance v25, Lcom/ghareeb/BatteryMod/BatteryController;

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

move-object/from16 v26, v0

invoke-direct/range {v25 .. v26}, Lcom/ghareeb/BatteryMod/BatteryController;-><init>(Landroid/content/Context;)V

move-object/from16 v0, v25

move-object/from16 v1, p0

iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;

move-object/from16 v27, v0

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

move-object/from16 v26, v0

const v28, 0x7f070077

move-object/from16 v0, v26

move/from16 v1, v28

invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v26

check-cast v26, Landroid/widget/ImageView;

move-object/from16 v0, v27

move-object/from16 v1, v26

invoke-virtual {v0, v1}, Lcom/ghareeb/BatteryMod/BatteryController;->addIconView(Landroid/widget/ImageView;)V

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;

move-object/from16 v26, v0

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryText:Landroid/widget/TextView;

move-object/from16 v27, v0

invoke-virtual/range {v26 .. v27}, Lcom/ghareeb/BatteryMod/BatteryController;->addLabelView(Landroid/widget/TextView;)V

13. 注意事項 , 上面 const v28, 0x7f070077 , 它每個版本都不一樣 ,如何判定 0x7f070077 是正確的

14. 打開 \SystemUI.apk\res\values\public.xml (它是放在 [3-Out] 裡面)

15. 找 <public type="id" name="battery" id="

16. 會出現 <public type="id" name="battery" id="0x7f0700XX" /> (XX 是指變數,每個版本不同)

17. 將實際的 0x7f0700XX 取代 const v28, 0x7f070077

18. 存檔

19. 下載下面這個包
ghareeb.rar
https://drive.google.com/file/d/0B80kk8AOqhiaV1ZCdFVXTGRBSVk/edit?usp=sharing

20. 解壓縮後,將整個資料夾 ,移到 \SystemUI.apk\smali\com\ (它是放在 [3-Out] 裡面)
這裡的的資料夾,就有三個

android
ghareeb => 剛剛移的
samsung

21. 開始反編譯 SystemUI.apk 執行 Advance ApkTool.exe
選 3 -Recompile Files , 依畫面操作即可

22. 下載電池模組包
N3_442_Battery_1.zip (19.8MB)
https://drive.google.com/file/d/0B80kk8AOqhiaREFKeUJCZEdlUVE/edit?usp=sharing

23. 將剛剛完成的 SystemUI.apk (它是放在 [4-Done] 裡面)
放入電池模組包內 N3_442_Battery_1.zip\system\priv-app\
將檔名變更為 CS_1.ZIP

https://drive.google.com/file/d/0B80kk8AOqhiadjNycVlsRGNXMFE/edit?usp=sharing


24. COPY 至手機,刷入,就有電池模組



本篇的文字檔案
4.4.2 電池模組教學.prop
https://drive.google.com/file/d/0B80kk8AOqhiaOUlFckIwMlFJbzg/edit?usp=sharing






課程二. 下拉農曆

1. 打開 \SystemUI.apk\smali\com\android\systemui\statusbar\policy\DateView.smali

2. 找 (約 747 列)
.method protected updateClock()V

從這一列,開始到最後面一列 , 換成

.method protected updateClock()V
.locals 6

new-instance v2, Ljava/util/Date;

invoke-direct {v2}, Ljava/util/Date;-><init>()V

iget-object v4, p0, Lcom/android/systemui/statusbar/policy/DateView;->mDateFormat:Ljava/lang/String;

invoke-static {v4, v2}, Landroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;

move-result-object v4

invoke-virtual {v4}, Ljava/lang/Object;->toString()Ljava/lang/String;

move-result-object v0

new-instance v1, Lcom/android/internal/policy/impl/Lunar;

invoke-direct {v1, v2}, Lcom/android/internal/policy/impl/Lunar;-><init>(Ljava/util/Date;)V

new-instance v4, Ljava/lang/StringBuilder;

invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v4

const-string v5, "\n\u8fb2\u66c6"

invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v4

invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

move-result-object v4

invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/DateView;->setText(Ljava/lang/CharSequence;)V

const/4 v0, 0x0

const/4 v1, 0x0

invoke-virtual {p0, v0, v1}, Lcom/android/systemui/statusbar/policy/DateView;->setTypeface(Landroid/graphics/Typeface;I)V

return-void
.end method

3. 存檔

4. 下載下面這個檔,
internal.rar
https://drive.google.com/file/d/0B80kk8AOqhiaZF9LaU5hMjVCbTQ/edit?usp=sharing


5. 解壓縮後有個資料夾 [internal] 移到 \SystemUI.apk\smali\com\android\

6. 所以 \SystemUI.apk\smali\com\android\ 這個資料夾下面就有二個資料夾

[internal] 剛剛移的
[systemui]

7. 執行 Advance ApkTool.exe , 選 3 Recompile Files

8. 完成的 SystemUI.apk 是放在 [4-Done]

9. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_1.zip 裡面的 SystemUI.apk

10. 改名為 CS_2.zip ,

https://drive.google.com/file/d/0B80kk8AOqhiaczQ5Nl9zaU52MHc/edit?usp=sharing

11. COPY 至手機,刷入,就有下拉農曆



本篇文字
下拉農曆.prop
https://drive.google.com/file/d/0B80kk8AOqhiaNlpHSzd5NzNXXzQ/edit?usp=sharing



課程三. 變更下拉背景

1. 打開 \SystemUI\res\layout\status_bar_expanded.xml

2. 找 (約 第二列)
<com.android.systemui.statusbar.phone.NotificationPanelView android:id="@id/notification_panel" android:background="@drawable/notification_background_color"

其中的 android:background="@drawable/notification_background_color“

換為

android:background="@drawable/back"

3. 存檔

4. 下蛓下面這一張圖示
back.png
https://drive.google.com/file/d/0B80kk8AOqhiaam9yVzlGM3lTQUE/edit?usp=sharing


5. 將下載的圖示 back.png , 復製到 \SystemUI.apk\res\drawable-xxhdpi

6. 這是一張半透的背景圖示,(你也可以用任何圖示,只要檔名是 back.png 就可以)

7. 執行 Advance ApkTool.exe , 選 3 Recompile Files

8. 完成的 SystemUI.apk 是放在 [4-Done]

9. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_2.zip 裡面的 SystemUI.apk

10. 改名為 CS_3.zip ,

https://drive.google.com/file/d/0B80kk8AOqhiaOUtzcDNZYkkwaHM/edit?usp=sharing


11. COPY 至手機,刷入,就有下拉背景圖是半透

本篇文字
下拉背景.prop
https://drive.google.com/file/d/0B80kk8AOqhiaWUZCNnFzU1JNVjQ/edit?usp=sharing




課程四. 狀態列右上是鎖屏,左上是工作管理員 ,中上是 [home]

1. 打開 \SystemUI\res\layout\status_bar.xml

2. 找 (約 20,21,22 列)
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock"
</LinearLayout>
</LinearLayout>

3. 在 22列下面插入 3 列

<com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="right" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="26" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="left" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="187" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="center" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="3" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" />

4. 這三列的意思是

23列 android:layout_gravity="right" 右上 是 systemui:keyCode="26" 指鎖屏
24列 android:layout_gravity="left" 左上 是 systemui:keyCode="187" 指工作管理員
25列 android:layout_gravity="center" 中上 是 systemui:keyCode="3" 指[home]

5. 因為中上,會影響下拉的位罝,若不要,只要刪除 25列,就沒有這個功能

6. 存檔

7. 下蛓下面這一張圖示
ic_sysbar_lockd.png
https://drive.google.com/file/d/0B80kk8AOqhiaczNXYm9RTENESms/edit?usp=sharing

將下載的圖示復製到 \SystemUI.apk\res\drawable-xxhdpi

8. 執行 Advance ApkTool.exe , 選 3 Recompile Files

9. 完成的 SystemUI.apk 是放在 [4-Done]

10. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_3.zip 裡面的 SystemUI.apk

10. 改名為 CS_4.zip ,

https://drive.google.com/file/d/0B80kk8AOqhiaNDhfdE95bHVXRVk/edit?usp=sharing


11. COPY 至手機,刷入,就有狀態列右上是鎖屏,左上是工作管理員 ,中上是 [home]


本篇文字
狀態列3個功能.prop
https://drive.google.com/file/d/0B80kk8AOqhiaXzlOMTFCMWtzYkU/edit?usp=sharing

課程五 清除記憶體

1. 這部份除了要改 Systemui.apk , 還要改 services.jar 解除簽名限制

2. 打開 \SystemUI\res\layout\status_bar_expanded.xml

3. 找 (約 14 列)
<com.android.systemui.statusbar.policy.ToggleSlider android:layout_gravity="center_vertical" android:id="@id/brightness_slider" android:background="@color/toggle_slider_background_color" android:layout_width="fill_parent" android:layout_height="@dimen/toggle_slider_height" systemui:text="@string/status_bar_settings_auto_brightness_label" />

4. 換 (1列換成 4 列)

<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.ToggleSlider android:layout_gravity="center_vertical" android:id="@id/brightness_slider" android:background="#00000000" android:layout_width="wrap_content" android:layout_height="55.0dip" android:layout_weight="1.0" systemui:text="@string/status_bar_settings_auto_brightness_label" />
<com.pekaka.systemui.killer.MemCleanView android:layout_gravity="center_vertical" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>

存檔

5. 下蛓下面這一個檔案
killer_layout.xml
https://drive.google.com/file/d/0B80kk8AOqhiaaHB4Unp4eG5MSmM/edit?usp=sharing


6. 復製到 \SystemUI\res\layout\

7. 打開 \SystemUI.apk\res\values\colors.xml

8. 最後一列,加入

<color name="killer_meminfo_background">#00000000</color>
<color name="killer_meminfo_front">#00000000</color>
<color name="killer_meminfo_full_front">#00000000</color>
<color name="killer_meminfo_txt">#ffffffff</color>

存檔

9. 打開 \SystemUI.apk\res\values\dimens.xml

10. 最後一列,加入

<dimen name="killer_meminfo_txt_size">14.0sp</dimen>

存檔

11. 打開 \SystemUI.apk\res\values\ids.xml

12. 最後一列,加入

<item type="id" name="killer_mem_info">false</item>
<item type="id" name="killer_clean_button">false</item>

存檔

13. 打開 \SystemUI.apk\AndroidManifest.xml

找 (約 60 列)
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT"/>

插入
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

14. 存檔

15 下蛓下面這一個檔案
pekaka.rar
https://drive.google.com/file/d/0B80kk8AOqhiadUNscDMzUXU3VlU/edit?usp=sharing


16. 解壓縮後復製到 \SystemUI.apk\smali\com\

17. 所以 \SystemUI.apk\smali\com\ 就有下面的目錄

android
ghareeb
pekaka => 剛剛復製
samsung

18. 執行 Advance ApkTool.exe , 選 3 Recompile Files

19. 因為有改到 AndroidManifest.xml ,所以再執行簽名才有作用

20. 執行 Advance ApkTool.exe , 選 4 Sign Files

21. 完成的 SystemUI.apk 是放在 [4-Done]

22. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_4.zip 裡面的 SystemUI.apk

23. 改名為 CS_5.zip ,

https://drive.google.com/file/d/0B80kk8AOqhiaVVEzWndfRHBMcHM/edit?usp=sharing


24.COPY 至手機,刷入,就有下拉清除記憶体 ,按清除一切正常

25. 雖然刷入正常,但若要包入 ROM 裡面刷(第一次刷), 還要修改 services.jar
不然還是會出現 systemui 已停止

26. 下篇再說明,如何修改 services.jar 解除簽名限制

本篇文字
清除記憶體.prop
https://drive.google.com/file/d/0B80kk8AOqhiacXdaTGxDWk1vYnc/edit?usp=sharing



課程六 解除簽名限制

編譯 services.jar (system/frameowrk/)

https://drive.google.com/file/d/0B80kk8AOqhiaRndUOHVrR1JrVmM/edit?usp=sharing

1. 編譯 services.jar (將檔案放在 [2-In] ,執行 Advance ApkTool.exe , 選 2 Decompile Files )

2. 打開 \services.jar\smali\com\android\server\pm\PackageManagerService.smali

3. 找 (約 7812 列)
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I

4. 從 7812 - 7924 列 , 用下面這 5 列來取代

.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.registers 9

const/4 v6, 0x0

return v6

.end method

5. 存檔

6. 執行 Advance ApkTool.exe , 選 3 Recompile Files

7. 完成的 services.jar 是放在 [4-Done]

8. 將這個 services.jar 加入剛剛前面 CS_5.zip 裡面的 \system\framework\ 裡面

9. 改名為 CS_6.zip ,

https://drive.google.com/file/d/0B80kk8AOqhiaSVFfLXZHQUJLeHc/edit?usp=sharing

10. COPY 至手機,刷入,就有下拉清除記憶体 ,按清除一切正常 , 就可以直接放入 ROM
裡面刷,

本篇文字
解除簽名限制.prop
https://drive.google.com/file/d/0B80kk8AOqhiaWkVwblBDLXpDb3c/edit?usp=sharing



今天暫時教學說明到此,有時間再續
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 297)

今日熱門文章 網友點擊推薦!