本帖最後由 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)
|