launcher- 第三方應用圖標替換


有時候我們感覺第三方應用的icon不美觀,或者跟我們主題風格不一致,這時候我們希望換成我們想要的icon,那我們可以這么做(以更換QQ應用icon為例):

1.首先我們當然要根據自己的需要做一張替換icon了(圖片我們不妨命名為qq)

2.接下來我們需要得到第三方應用的信息,可以通過GetDftlayoutXml.apk 工具獲得

具體步驟如下

1)網上下載想要替換icon的第三方應用

2)安裝GetDftlayoutXml.apk工具

這個工具存在 git/vanzo_team/xulei/cooee_tool/目錄下,我們直接push到手機system/app下進行了

 安裝工具:cd ~/git/vanzo_team/xulei/cooee_tool/;adb remoung;adb push GetDftlayoutXml.apk system/app;

3)獲取應用信息(主要存在於通過工具生成的uin_default_auto.xml文件中)  

   點擊安裝的程序GetDftlayoutXml,進入界面選擇uni,這時候就會在手機sdcard/cooee/ 目錄下生成uin_default_auto.xml文件

4)  導出文件:adb pull /sdcard/cooee/uni_default_layout_auto.xml ~/Desktop;

3.查看應用信息

打開我們得到的uni_default_layout_auto.xml 文件,可以看到如下信息

vim uni_default_layout_auto.xml;

內容如下:

 

<shortcutgroup id="2" locate="workspace" locate_value="2">
    <item id="0" name="Google 設置" cellX="0" cellY="4" image="" pkgname="com.google.android.gms" componentName="com.google.android.gms.app.settings.GoogleSettingsActivity" />
    <item id="1" name="Play 商店" cellX="1" cellY="4" image="" pkgname="com.android.vending" componentName="com.android.vending.AssetBrowserActivity" />
    <item id="2" name="安卓市場" cellX="2" cellY="4" image="" pkgname="com.my.appstore" componentName="com.my.appstore.activity.MainActivity" />
    <item id="3" name="Dev Tools" cellX="3" cellY="4" image="" pkgname="com.android.development" componentName="com.android.development.Development" />
    <item id="4" name="GetDftlayoutXml" cellX="0" cellY="3" image="" pkgname="com.cool.getdftlayoutxml" componentName="com.cool.getdftlayoutxml.MainActivity" />
    <item id="5" name="騰訊視頻" cellX="1" cellY="3" image="" pkgname="com.tencent.qqlive" componentName="com.tencent.qqlive.activity.WelcomeActivity" />
    <item id="6" name="百度" cellX="2" cellY="3" image="" pkgname="com.baidu.searchbox" componentName="com.baidu.searchbox.MainActivity" />
    <item id="7" name="QQ瀏覽器" cellX="3" cellY="3" image="" pkgname="com.tencent.mtt" componentName="com.tencent.mtt.SplashActivity" />
    <item id="8" name="豌豆莢" cellX="0" cellY="2" image="" pkgname="com.wandoujia.phoenix2" componentName="com.wandoujia.p4.activity.ExploreActivity" />
    <item id="9" name="1號店" cellX="1" cellY="2" image="" pkgname="com.thestore.main" componentName="com.thestore.main.LoadingActivity" />
    <item id="10" name="360手機助手" cellX="2" cellY="2" image="" pkgname="com.qihoo.appstore" componentName="com.qihoo.appstore.activities.LauncherActivity" />
    <item id="11" name=" 360衛士" cellX="3" cellY="2" image="" pkgname="com.qihoo360.mobilesafe" componentName="com.qihoo360.mobilesafe.ui.index.AppEnterActivity" />
    <item id="12" name="優酷" cellX="0" cellY="1" image="" pkgname="com.youku.phone" componentName="com.youku.phone.ActivityWelcome" />
    <item id="13" name="暴風影音" cellX="1" cellY="1" image="" pkgname="com.storm.smart" componentName="com.storm.smart.LogoActivity" />
    <item id="14" name="網易新聞" cellX="2" cellY="1" image="" pkgname="com.netease.newsreader.activity" componentName="com.netease.nr.biz.ad.AdActivity" />
    <item id="15" name="百度視頻" cellX="3" cellY="1" image="" pkgname="com.baidu.video" componentName="com.baidu.video.ui.WelcomActivity" />
    <item id="16" name="搜狗瀏覽器" cellX="0" cellY="0" image="" pkgname="sogou.mobile.explorer" componentName="sogou.mobile.explorer.NoDisplayActivity" />
    <item id="17" name="今日頭條" cellX="1" cellY="0" image="" pkgname="com.ss.android.article.news" componentName="com.ss.android.article.news.activity.SplashActivity" />
    <item id="18" name="去哪兒旅行" cellX="2" cellY="0" image="" pkgname="com.Qunar" componentName="com.Qunar.NoteActivity" />
    <item id="19" name="唯品會" cellX="3" cellY="0" image="" pkgname="com.achievo.vipshop" componentName="com.achievo.vipshop.activity.LodingActivity" />
    <item id="20" name="QQ" cellX="1" cellY="4" image="" pkgname="com.tencent.mobileqq" componentName="com.tencent.mobileqq.activity.SplashActivity" />

 

 

 

這里面就是我們手機里面安裝的應用信息

 解釋:

<shortcutgroup id="2" locate="workspace" locate_value="2">:屏幕序號
<item id="9" name="1號店" cellX="1" cellY="2" image="" pkgname="com.thestore.main" componentName="com.thestore.main.LoadingActivity" />:應用信息

4.  拷貝信息:

在我們項目的vendor/tmobile/launcher/ 目錄下,有一個文件uni_default_layout.xml 

可以看到他的內容如下

 <shortcutgroup id="1" locate="workspace" locate_value="1">
    <item id="0" name="備份與恢復" cellX="1" cellY="2" image="" pkgname="com.mediatek.datatransfer" componentName="com.mediatek.datatransfer.MainActivity" />
    <item id="1" name="手電筒" cellX="2" cellY="4" image="" pkgname="net.cactii.flash2" componentName="net.cactii.flash2.MainActivity" />
    <item id="2" name="壁紙" cellX="0" cellY="4" image="" pkgname="com.android.wallpaper.multipicker" componentName="com.android.wallpaper.multipicker.WallpaperChooser" />
    <item id="3" name="系統升級" cellX="1" cellY="4" image="" pkgname="com.mediatek.updatesystem" componentName="com.mediatek.updatesystem.UpdateSystem" />
    <item id="5" name="錄音機" cellX="1" cellY="3" image="" pkgname="com.android.soundrecorder" componentName="com.android.soundrecorder.SoundRecorder" />
    <item id="6" name="視頻" cellX="2" cellY="3" image="" pkgname="com.mediatek.videoplayer" componentName="com.mediatek.videoplayer.MovieListActivity" />
    <item id="7" name="下載" cellX="3" cellY="3" image="" pkgname="com.android.providers.downloads.ui" componentName="com.android.providers.downloads.ui.DownloadList" />
    <item id="8" name="SIM卡應用" cellX="0" cellY="2" image="" pkgname="com.mediatek.stkselection" componentName="com.mediatek.stkselection.StkSelection" />
    <item id="9" name="收音機" cellX="0" cellY="3" image="" pkgname="com.mediatek.fmradio" componentName="com.mediatek.fmradio.FMRadioActivity" />
    <item id="10" name="電子郵件" cellX="3" cellY="4" image="" pkgname="com.android.email" componentName="com.android.email.activity.Welcome" />
    <item id="11" name="空" cellX="3" cellY="2" image="" pkgname="" componentName="" />
    <item id="12" name="空" cellX="0" cellY="1" image="" pkgname="" componentName="" />
    <item id="13" name="空" cellX="1" cellY="1" image="" pkgname="" componentName="" />
    <item id="14" name="空" cellX="2" cellY="1" image="" pkgname="" componentName="" />
    <item id="15" name="空" cellX="3" cellY="1" image="" pkgname="" componentName="" />
    <item id="16" name="空" cellX="0" cellY="0" image="" pkgname="" componentName="" />
    <item id="17" name="空" cellX="1" cellY="0" image="" pkgname="" componentName="" />
    <item id="18" name="空" cellX="2" cellY="0" image="" pkgname="" componentName="" />
    <item id="19" name="空" cellX="3" cellY="0" image="" pkgname="" componentName="" />
 </shortcutgroup>

    <!-- 替換launcher中應用的圖標,將需要替換的圖標放到system/launcher/icon這個路徑下,參考下面的范例,配置包名,類名和圖片名稱即可替換應用圖片 -->
    <!-- 
    <icon
        name="360衛士"
        componentName="com.qihoo360.mobilesafe.ui.index.AppEnterActivity"
        image="360Guard.png"
        pkgname="com.qihoo360.mobilesafe" />
    -->
    <icon name="文件管理" image="folder.png" pkgname="com.mediatek.filemanager" componentName="com.mediatek.filemanager.FileManagerOperationActivity" />
    <icon name="計算器" image="calculator.png" pkgname="com.android.calculator2" componentName="com.android.calculator2.Calculator" />
    <icon name="時鍾" image="clock.png" pkgname="com.android.deskclock" componentName="com.android.deskclock.DeskClock" />
    <icon name="日歷" image="calendar.png" pkgname="com.android.calendar" componentName="com.android.calendar.AllInOneActivity" />
    <icon name="設置" image="settings.png" pkgname="com.android.settings" componentName="com.android.settings.Settings" />
    <icon name="音樂" image="music.png" pkgname="com.v5music" componentName="com.v5music.view.activity.MainActivity;com.v5music.view.activity.SplashActivity" />
    <icon name="相機" image="camera.png" pkgname="com.android.gallery3d" componentName="com.android.camera.CameraLauncher" />
    <icon name="圖庫" image="gallery.png" pkgname="com.android.gallery3d" componentName="com.vz.gallery3d.VzGalleryActivity" />
    <icon name="備份與恢復" image="backandrestore.png" pkgname="com.mediatek.datatransfer" componentName="com.mediatek.datatransfer.MainActivity" />

    <icon name="安卓市場" image="androidmarket.png" pkgname="com.my.appstore" componentName="com.my.appstore.activity.MainActivity" />
    <icon name="壁紙" image="wallpaper.png" pkgname="com.android.wallpaper.multipicker" componentName="com.android.wallpaper.multipicker.WallpaperChooser" />
    <icon name="今日頭條" image="jinritoutiao.png" pkgname="com.ss.android.article.news" componentName="com.ss.android.article.news.activity.SplashActivity" />
    <icon name="掌閱ireader" image="zhangyue.png" pkgname="com.chaozh.iReaderFree" componentName="com.chaozh.iReader.ui.activity.WelcomeActivity" />
    <icon name="百度" image="baidu.png" pkgname="com.baidu.searchbox" componentName="com.baidu.searchbox.MainActivity" />

 

這時候我們只需要把我們在uni_default_layout_auto.xml  文件下得到的關於 qq 的應用信息(

<item id="20" name="QQ" cellX="1" cellY="4" image="" pkgname="com.tencent.mobileqq" componentName="com.tencent.mobileqq.activity.SplashActivity" />

),添加到  uni_default_layout.xml 里來就行了

這時候要注意

1)把<item..  更改為<icon

2)cellx celly id 三項刪除掉

3)在image=""中寫入自己想要替換的icon資源名稱

(也就是完全按照uni_default_layout.xml 上的格式寫就對了

<icon name="QQ" image="qq" pkgname="com.tencent.mobileqq" componentName="com.tencent.mobileqq.activity.SplashActivity" />

4)別忘了把圖片資源拷貝到

vendor/tmobile/launcher/cooee_icon/icon/drawable-xxhdpi 和vendor/tmobile/launcher/default_icon/icon 文件夾下(兩個都要添加)

 

5.驗證效果

  1)把修改后的文件導入手機system/launcher下:adb push uni_default_layout.xml system/launcher;adb push cooee_icon/icon system/launcher/

  2)進入手機設置->應用管理,清空oos應用數據,重新進入桌面看圖標效果就行了

 

遇到問題

1.有一次圖標沒有替換成功,后來發現是因為圖片忘了引用了,然后自己做了更改,但是,當驗證的時候,手機會死機,最終重新燒錄了才解決。然后就開始尋找問題的原因

-----原來是自己把<icon name="文件管理" image="folder.png" pkgname="com.mediatek.filemanager" componentName="com.mediatek.filemanager.FileManagerOperationActivity" />

寫成了<item name="文件管理" image="folder.png" pkgname="com.mediatek.filemanager" componentName="com.mediatek.filemanager.FileManagerOperationActivity" />

2.還有一次,好多的應用圖標突然就不起作用了,后來同事給的建議是,使用hierarchyView ,點進應用里面去看包名。這個方法試了好久都不起作用,后來

-----重新用工具抓包名,發現包名更改非常大,至於原因,不知道,難道是跟應用版本有關?

3.當執行adb push cooee_icon/icon system/launcher/icon 命令的時候,一直報錯,說是找不到文件夾,如下

zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/new_52_kangjia_kk/vendor/tmobile/launcher$ adb push cooee_icon/icon system/launcher/zhang
push: cooee_icon/icon/drawable-xxhdpi/weather.png -> system/launcher/zhang/drawable-xxhdpi/weather.png
failed to copy 'cooee_icon/icon/drawable-xxhdpi/weather.png' to 'system/launcher/icon/drawable-xxhdpi/weather.png': No such file or directory
zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/new_52_kangjia_kk/vendor/tmobile/launcher$

 

后來才明白,原來,手機目錄下,並不支持自動創建不存在的文件夾,這時候必須先創建icon才行

mkdir icon

然后在push


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM