Android 台灣中文網

打印 上一主題 下一主題

[攻略] Android GPS 自宮寶典

   關閉 [複製連結] 查看: 125629|回覆: 242|好評: 0
171
padfone_chao | 收聽TA | 只看該作者
發表於 2020-12-26 19:41
本帖最後由 padfone_chao 於 2020-12-26 20:27 編輯
amjads1975 發表於 2020-11-29 17:39
Redmi Note 8 Pro - Global Stable ROM

MIUI 12 (V12.0.5.0.QGGMIXM)
amjads1975:
自宮寶典要用電腦改有點跟不上時代, 正準備寫一篇吸星大法, 手機 ota 更新 rom 後直接在手機上改, 不用幾分鐘時間完成免阻斷飛人, 簡單易懂人人改得  發表於 2020-12-26 18:09

Dear A大,

另外,能否撥冗提點 fneodscpbga() 如何編寫。
我沒寫完作業,心理很癢耶。
謝謝。


抱歉,我的粗心,忘了 services/smali/com/android/server/LocationManagerService.smali 這一階這麼重要的程式。
把 fneodscpbga() 補上去就可以了。

在 A大的 「吸星大法」出來前,我整理一下就野人獻曝分享心得,請大家包涵了。

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

172
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-7 01:15
本帖最後由 padfone_chao 於 2021-1-7 01:30 編輯

Dear A大,

我比對您修改「全自動阻斷」與原版 services.jar 從 services/smali/com/android/server/ 所有目錄幾千個檔案發現應該更動就是與 GPS 有關的 3個主要檔案。

以下是我修改的心得,目前有一直在我手上的紅米 Redme Note 8 Pro (MIUI 11版本),以及剛搶便宜買來就改的台版 Realme X50 Pro 版本,這兩個機子也快1個禮拜,似乎也還算正常。
因為我沒有 java debug 工具,只能以最笨的方式比對法找出原始與改過的檔,找出相異處,嘗試修改,也勞您撥冗看有哪些我疏漏或錯誤地方,以及不吝指導,不勝感激。

另外「全自動阻斷」功能對我很重要,每次開車導航時,我都要切換非飛人模式,必須重開機。
這讓我全家人都要等待這無奈的時間,希望我能改得像您一樣完善及方便。

(貼文後我發現版面都跑掉了,再附上符合原程式本文的文字檔比要好閱覽。)
===================================================================
services/smali/com/android/server/LocationManagerService.smali 改法
===================================================================


找到下列 method 之中
.method private onUidImportanceChangedLocked(II)V

再找下列2行 (差不多在 line 661,誤差 300 多行是可容許的,究竟版本就是不同的關係)

    .end local v4    # "record":Lcom/android/server/LocationManagerService$UpdateRecord;
    :cond_1

將之後
    goto :goto_1
改成
    goto/16 :goto_1
---------------------------------------------
找到下列 method 之中
.method public addTestProvider(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;Ljava/lang/String;)V


再找下列2行 (差不多在 line 3754)
    .end local v1    # "identity":J
    monitor-exit v0

之後加上

    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->hfgfeodscpbga()V

--------------------------------------------
找到下列 method 之中
.method public removeTestProvider(Ljava/lang/String;Ljava/lang/String;)V

再找下列2字串 (差不多在 line 3788)
    :try_end_2
    .catchall {:try_start_2 .. :try_end_2} :catchall_1

之後加上
    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->fneodscpbga()V

============================================================================
servicessmalicomandroidserverlocationGnssLocationProvider.smali 改法
============================================================================

首先在靜態定義區 fields
# static fields

最後加上
.field public static final magbpcs:Z

-------------------------------
之後都是 methods

# direct methods

找到下列 method 之中
.method static constructor <clinit>()V

再找下列字串
sput-object v0, Lcom/android/server/location/GnssLocationProvider;->PROPERTIES:Lcom/android/internal/location/ProviderProperties;

底下加上2列字串
    const/4 v5, 0x1

    sput-boolean v5, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

------------------------
再找到下列 method 之後
.method private deleteAidingData(Landroid/os/Bundle;)V
(一定要在下列字串之後)
.end method

加上新的 method
.method public static fneodscpbga()V
    .locals 1

    .prologue
    const/4 v0, 0x1

    sput-boolean v0, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    return-void
.end method

---------------------------
找到下列 method 之中
.method private handleReportSvStatus(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)V

再找下列字串,如果找不著,這個 method 就不用改了。
    invoke-direct {v0, v2}, Lcom/android/server/location/GnssLocationProvider;->addToBugreport(Ljava/lang/String;)V

之後的
    goto :goto_5

改成
    goto/16 :goto_5

--------------------------------
再找到下列 method 之後
.method private handleSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
(一定要在下列字串之後)
.end method

加上新的 method
.method public static hfgfeodscpbga()V
    .locals 1

    .prologue
    const/4 v0, 0x0

    sput-boolean v0, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    return-void
.end method

------------------------------------
再找到下列 method 之中

.method private reportLocation(ZLandroid/location/Location;)V

找下列字串
    .locals 1
改成
    .locals 2

再找下列字串
    .param p2, "location"    # Landroid/location/Location;
之後加上

    sget-boolean v1, Lcom/android/server/location/GnssLocationProvider;->magbpcs:Z

    if-eqz v1, :cond_0

再找下列字串
    invoke-direct {p0, v0, p1, p2}, Lcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V

之後加上

    :cond_0



=================================================
MockProvider.smali 改法
=================================================

找到下列 method 之中
.method public setLocation(Landroid/location/Location;)V

找下列字串的的第2次
    iget-object v0, p0, Lcom/android/server/location/MockProvider;->mLocation:Landroid/location/Location;

之後加上
    invoke-static {}, Lcom/android/server/location/GnssLocationProvider;->hfgfeodscpbga()V

並將下列字串
    const/4 v1, 0x1
改成
    const/4 v1, 0x0

全自動修改(2).txt (4.42 KB, 下載次數: 16)

點評

改 2 個字母就有人搞不定, 你確定要大改特改? 朝精簡改法才是市場需求  發表於 2021-1-7 05:36

評分

參與人數 2碎鑽 +2 幫助 +2 收起 理由
ta05107 + 1 + 1 非常讃
alecchangboy + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

173
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-8 23:24

RE: Android GPS 自宮寶典

padfone_chao 發表於 2021-1-7 01:15
Dear A大,

我比對您修改「全自動阻斷」與原版 services.jar 從 services/smali/com/android/ ...


"amjads1975 wrote:
改 2 個字母就有人搞不定, 你確定要大改特改? 朝精簡改法才是市場需求  發表於 2021-1-7 05:36"
就是我要滿足求學上進心嘛。

非常期待 a大您的「吸星大法」,是否如此我們不只可以將修改版 services.jar 編入 FOTA的 system.img,其實也可以將 GPS Joystick 甚至「地圖趴趴走」也塞進去?

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

174
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-8 23:54
1) 品牌機型:小米 Redmi Note 8 Pro
2) Android 版本:10
3) 原始 rom 連結:國際穩定版V11.0.5.0.QGGMIXM  (線刷版)(MIUI 11版本)
4) 該 rom 版本描述:國際穩定版 V11.0.5.0.QGGMIXM(也有卡刷版,請詳參連結)
5) 戶外使用時手機照: (可略)
6) 「全自動阻斷」附件  services.jar services.jar (5.99 MB, 下載次數: 10)

點評

P大:我的Redmi Note8 Pro還停留在Android 9,升級到Android 10也可以直接用twrp把services.jar置換嗎?  發表於 2021-1-9 08:40

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
alecchangboy + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

175
 樓主| amjads1975 | 收聽TA | 只看該作者
發表於 2021-1-9 06:21

RE: Android GPS 自宮寶典

本帖最後由 amjads1975 於 2021-1-9 06:24 編輯
padfone_chao 發表於 2021-1-8 23:24
"amjads1975 wrote:
改 2 個字母就有人搞不定, 你確定要大改特改? 朝精簡改法才是市場需求  發表於 202 ...

我以前做的卡刷包, 改好的 system 分區就是 .img 格式, 除了 twrp 可以直接刷之外,
也可以在電腦上解壓, 在解鎖的手機直接透過 fastboot 寫入 boot 及 system ,
這種方法在 android 1.5 或 2.x 就有人在用, 算是老方法

評分

參與人數 3碎鑽 +3 幫助 +3 收起 理由
kuanjin + 1 + 1 非常讃
ta05107 + 1 + 1 非常讃
padfone_chao + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

176
 樓主| amjads1975 | 收聽TA | 只看該作者
發表於 2021-1-9 10:50
本帖最後由 amjads1975 於 2021-1-9 10:58 編輯

簡單講一下不用額外的工具, 去包自己修改好的 system 分區
(用 unix 最基本的指令 dd 去提取)

高通跟聯發科路徑基本上不太一樣, 但往 /dev/block 下去找就對

高通, 如: /dev/block/bootdevice/by-name/system
聯發科, 如: /dev/block/platform/mtk-msdc.0/by-name/system

下圖高通的機子, 用 dd 指令分別提取 system / vendor / boot 三個分區至 /sdcard 下
, 接下來要弄成卡刷包或線刷包就很容易

評分

參與人數 3碎鑽 +3 幫助 +3 收起 理由
jiu0922 + 1 + 1 非常讃
ta05107 + 1 + 1 非常讃
padfone_chao + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

177
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-9 11:27
padfone_chao 發表於 2021-1-8 23:54
1) 品牌機型:小米 Redmi Note 8 Pro
2) Android 版本:10
3) 原始 rom 連結:國際穩定版V11.0.5.0.QGGMIXM  ( ...

"ta05107 wrot:P大:我的Redmi Note8 Pro還停留在Android 9,升級到Android 10也可以直接用twrp把services.jar置換嗎?  [color=#999999 !important]發表於 2021-1-9 08:40
"


母湯喔。


a大改好的 「全自動阻斷」(MIUI 12 android 10)的 services.jar 用在我手機(MIUI 11 android 10)就是會 loop boot(不斷重開),即使 android 版本一樣也是如此。
事實上應該要完整版本資訊完全相同才可以,比如我這隻版本官方名稱是:
V11.0.5.0.QGGMIXM


V11 代表 MIUI 11版本(這支手機出廠預設 10版本,目前最新版是 12)
0.5.0 代表韌體版次(我忘了預設是多少,一解鎖就馬上刷,根本不記得是多少)
Q 代表 android 10(出廠預設是 P ,android 9)
GG 代表國際板(出廠預設印象中不是 GG,另一個代號,但絕對不是 TW)


ps:
我最近應該會更新到 V11.0.6.0.QGGMIXM 版本,屆時我也會更新 services.jar。
這版本是這支手機 MIUI 11 最後穩定版,12 留給性能更佳的新機跑吧。
其實我最滿意的是 V11.0.6.0.PGGMIXM,是這手機 andriod 9 最後穩定版,但就是不能看 HD Netflix。
系統不占大量資源,即使僅 6g ram 以前掛 4個手環沒問題(現在 pokemon go 越寫越大就不一定了),我現在掛 3個手環有時很容易被砍後台(背景跑的就被砍掉,所以才入手 Realme X50Pro - 12g ram)。
我老婆與三個小孩都有大小帳,他們很早脫坑了,所以帳號通通在我手上,社群日時我忙到不行。感覺遊戲在玩我。


我會嘗試改 andriod 8(Asus 手機),如果可行我會把心得分享。

點評

我也期待p大改的 V11.0.6.0.PGGMIXM版本,升安卓10後真的是比較慢  發表於 2021-1-9 23:51
我現在用的是eu 11.0.2(andriod 9)穩定版,之後再跟隨P大重刷成V11.0.6.0.QGGMIXM 版本~  發表於 2021-1-9 22:56

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

178
steveyeh | 收聽TA | 只看該作者
發表於 2021-1-10 04:32
請問A大
用之前的MT管理器應該也還可以改吧?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

179
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-14 22:00
本帖最後由 padfone_chao 於 2021-1-14 22:06 編輯
padfone_chao 發表於 2021-1-9 11:27
"ta05107 wrot:P大:我的Redmi Note8 Pro還停留在Android 9,升級到Android 10也可以直接用twrp把service ...
ta05107 wrote:
我現在用的是eu 11.0.2(andriod 9)穩定版,之後再跟隨P大重刷成V11.0.6.0.QGGMIXM 版本~  發表於 2021-1-9 22:56

現在要下載韌體也要積分,好不容易每天簽到混到積分才知道根本沒有 "V11.0.6.0.QGGMIXM" 這個版本。
V11.0.5.0.QGGMIXM 就是這支手機 MIUI 11最後的版本了。

我剛剛用 twrp 的 file manager 很輕易就從 sdcard 中的 services.jar 刷進 system/framework 目錄下,且也正常運作。
先前我在 128樓訊息是錯的(修正過了)。

原廠 services.jar 是 13mb,修改過是 6mb。

評分

參與人數 2碎鑽 +2 幫助 +2 收起 理由
kuanjin + 1 + 1 非常讃
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

180
padfone_chao | 收聽TA | 只看該作者
發表於 2021-1-14 23:48
本帖最後由 padfone_chao 於 2021-1-14 23:50 編輯

1) 品牌機型:Realme X50 Pro 5G 臺灣版(RMX2075)
2) Android 版本:10
3) 原始 rom 連結:歐洲版 RMX2076EU_11_OTA_0340  (卡刷版)
4) 該 rom 版本描述:RMX2076EU_11_OTA_0340_all_9OA7Ie7Rs6gg.ozip

台灣版應該是從印度版(RMX2076PU)改過來的,目前我也找不到台灣版的卡刷版(如先進有請不吝提供),但我卻有台灣版的線刷,RMX2075PU_11_A.35_200827_8e2561fe.ofp(網路查就有),不能以 OPPO刷機工具執行,有專門工具必須要有帳號及密碼才可操作(我也沒有)。
其實刷印度版線刷及卡刷仍然可以 FOTA 下載台灣版更新韌體,但刷完印度版有個問題,只要修改 boot.img 屏下指紋就失效。
而歐洲版無此問題,但刷過歐洲版就無 FOTA 支援了。我是相當喜歡歐洲版,乾乾淨淨,不像印度版一刷完就自動裝1~20個我感覺是垃圾 app,有趣的是印度版也看愛O藝嗎?這也是我懷疑台灣版就是印度版。
5) 戶外使用時手機照: (詳後)
6) 「全自動阻斷」附件  services.jar services.jar (6.33 MB, 下載次數: 2)

評分

參與人數 2碎鑽 +2 幫助 +2 收起 理由
kuanjin + 1 + 1 非常讃
ta05107 + 1 + 1 非常讃

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則