手機裡面有個軟體用著挺好用,但是就是有廣告,並且很容易誤點到
所以就想索性自己找找方法去掉廣告,如果手機有root就相對簡單,會有第三方的APP來處理,但是手機目前沒有root,就只好從程式本身來下手了。
注意:本文範例刪除的代碼未必正確,因為無從檢驗,也可能會刪除不應該的代碼。
首先用到的工具是apktool_2.3.1.jar
https://ibotpeaches.github.io/Apktool/
當然電腦裡面需要裝java
然後使用此工具將apk檔案解壓開,
java -jar apktool_2.3.1.jar d -f h:\s\a.apk -o output
這樣會輸入到同路徑下面 output的資料夾中
然後其實可以發現在smali\com下面的facebook和google下面都有ads的資料夾,網上有說直接將2個資料夾刪除掉,但我這個程式這樣做,安裝好後打開會報錯就退出了。
首先打開解壓資料夾的根目錄的AndroidManifest.xml
將下面代碼的部分去掉
1 2 3 |
<meta-data android:name="ADMOB_PUBLISHER_ID" android:value="XXXXXXXXXX"/> <activity android:configChanges="XXX|XXX|XXX|XXX|XXX" android:name="com.google.ads.AdActivity"/> |
當然上面這個文件裡面也包含程式需要申請哪些權限的樣子。
而實際上我看到下面還有一行是有ads的關鍵字,我索性也一起刪除掉了
然後使用Notepad++來在res\layout搜索代碼ads.AdView
比方看到
1 2 3 4 5 6 |
<XXXXXX xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"> ... <com.google.ads.AdView android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="XXXXXXXXXX" ads:loadAdOnCreate="true" /> ... </XXXXXX> |
我們去掉整個<com.google.ads.AdView的節點,如果部分不確定刪除會不會有影響的,也可以嘗試把layout_width和layout_height的值都改成”0dip”
具體搜索的部分可以靈活的去搜,比方此例當中,fb的不知道位置在哪裡,我是搜索facebook.com或者http,將4處的http://……的連接全改成0.0.0.0
像fb的廣告可以搜
1 2 3 |
https://graph.facebook.com/network_ads_common/ https://graph.%s.facebook.com/network_ads_common/ |
也有人有其他的分享參考
http://mobilemerit.com/how-to-remove-admob/
最後修改完畢後,就是將程式再重新打包
打包有人做出工具來,但我自己嘗試好像沒生成文件,但我們一樣可以使用前面的指令來重新打包
java -jar apktool_2.3.1.jar b output -o luyin.apk
打包完畢後需要再重新簽名才可以在手機裡面安裝
簽名的工具是APKSign.exe
最後附上簽名的工具