開始接觸 Launcher3

關(guān)于官方 Launcher3 導(dǎo)入編譯的一些坑

官方的 Launcher3 是連同系統(tǒng)一起編譯進(jìn)去的你虹,想要拿出來(lái)用Android Studio編譯是可以的,但是中間有一些坑是需要注意的蟀架,這里我先記錄下自己踩下去埋好的坑。

1,首先你需要一個(gè) launcher3 項(xiàng)目包:

可以這里下載

2鸭限,導(dǎo)入項(xiàng)目

下載下來(lái)是一個(gè) Module 所以你需要先自己建一個(gè) Project 或者在已經(jīng)現(xiàn)成的項(xiàng)目里面導(dǎo)入 Launcher3 俯画。

  • 第一個(gè)坑

    Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to "f84cd2e32a90423cbd4ca67e7c1fe2447a2ddabe"
    

    這個(gè)是我自己系統(tǒng)的一個(gè)坑析桥,原因是找不到Plugin 版本,修改為你的編譯版本就行艰垂。


    錯(cuò)誤-1
  • 第二個(gè)坑
    導(dǎo)入后報(bào)的第一個(gè)錯(cuò):

    錯(cuò)誤-2

    這個(gè)是因?yàn)?.1.1里烹骨,系統(tǒng)不認(rèn)識(shí) add-resource 這個(gè)標(biāo)簽:
    values/dimens.xml

     <add-resource type="dimen" name="custom_cling_margin_top" />
     <add-resource type="dimen" name="custom_cling_margin_right" />
     <add-resource type="dimen" name="custom_cling_margin_left" />
    

    更改為:

    <dimen  name="custom_cling_margin_top">0dp</dimen>     
    <dimen name="custom_cling_margin_right">0dp</dimen>      
    <dimen name="custom_cling_margin_left">0dp</dimen>
    

    values/strings.xml

    <add-resource type="string" name="default_folder_name" />
    

更改為:

  <string name="default_folder_name"></string>
  • 第三個(gè)坑

    錯(cuò)誤-3

    這個(gè)是因?yàn)?5.1.1 里面系統(tǒng)不能以這樣的形式設(shè)置參數(shù) :

    android:protectionLevel="system|signature"  
    

更改為如下:

android:protectionLevel="signatureOrSystem"

假設(shè)你的系統(tǒng)現(xiàn)在launcher不是以com.android.launher3為命名的,那么到這里你編譯就可以運(yùn)行通過(guò)了材泄,就可以看到文章最后的結(jié)果沮焕。
Over!
(自行跳過(guò)后面內(nèi)容....)

  • 第四個(gè)坑
    錯(cuò)誤-4

    這個(gè)是因?yàn)槟愕南到y(tǒng)已經(jīng)有一個(gè)包名為:
    com.android.launcher3
    這個(gè)需要你更改下系統(tǒng)的包名改為如下(or waht you want do ):
    com.android.launcher4

之后會(huì)提示你這樣:

錯(cuò)誤-5

不要擔(dān)心拉宗,找不到R文件峦树,我們改了包名,相對(duì)于的R文件包路徑就需要 更改 或者 導(dǎo)入旦事。
比如這個(gè)類R文件是這樣:
import com.android.launcher3.R;
把他改成你修改的包名:
import com.android.launcher4.R;

涉及到了系統(tǒng)魁巩,所以會(huì)有多個(gè)類的R文件找不到,我們只要根據(jù)系統(tǒng)提示更改一下包名就可以姐浮。

還有一點(diǎn)很重要
如果不更改applicationId還是會(huì)提示錯(cuò)誤谷遂,你還需要更改applicationId:**

   applicationId "com.android.launcher3"

改為:
applicationId "com.android.launcher4"

  • 第五個(gè)坑

錯(cuò)誤-6

你運(yùn)行后發(fā)現(xiàn): waht happened ?卖鲤。怎么還是報(bào)錯(cuò)肾扰,doo't worry. 這個(gè)錯(cuò)是因?yàn)椋?strong>系統(tǒng)已經(jīng)有一個(gè)這樣子的自定義權(quán)限了,你要做的蛋逾,就是更改下自定義權(quán)限的名字就可以:

更改為:
<permission    android:name="com.android.launcher3.permission.PRELOAD_WORKSPACE"  />
<permission    android:name="com.android.launcher.permission.INSTALL_SHORTCUT"   />
<permission    android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"    />
<permission    android:name="com.android.launcher3.permission.READ_SETTINGS_2"    />
<permission    android:name="com.android.launcher3.permission.WRITE_SETTINGS_2"    />
<permission    android:name="com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS_2"    /> 

然后使用的時(shí)候也要對(duì)應(yīng)我們更改的權(quán)限名字集晚,總共有兩個(gè)地方:
1,使用的時(shí)候

<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS_2"/>
<uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS_2"/>
<uses-permission android:name="com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS_2"/>

2区匣,provider使用的時(shí)候

<provider   
    android:name="com.android.launcher3.LauncherProvider"    
    android:authorities="com.android.launcher3.settings"        
    android:exported="true"
    android:readPermission="com.android.launcher3.permission.READ_SETTINGS_2"      
    android:writePermission="com.android.launcher3.permission.WRITE_SETTINGS_2"/>

然后你運(yùn)行:

錯(cuò)誤-7

梁靜茹:夢(mèng)醒時(shí)分響起....
別擔(dān)心哈,這是因?yàn)椋?* provider** 在使用的時(shí)候偷拔,** authorities**需要全局唯一,系統(tǒng)默認(rèn)已經(jīng)把這個(gè)名字個(gè)使用了,你需要做的只是更改他的名字:

android:authorities="com.android.launcher3.settings"       

改為(或者你喜歡的命名):

android:authorities="com.android.launcher3.settingss"        

注意了莲绰!
注意了欺旧!
注意了!

這時(shí)候運(yùn)行已經(jīng)可以安裝到系統(tǒng)里面了蛤签,但還是會(huì)報(bào)錯(cuò):

java.lang.SecurityException: Permission Denial: opening 
provider com.android.launcher3.LauncherProvider from 
ProcessRecord{2b98e098 9053:com.android.launcher4/u0a183} 
(pid=9053, uid=10183) 
requirescom.android.launcher3.permission.READ_SETTINGS or 
com.android.launcher3.permission.WRITE_SETTINGS

看這個(gè)錯(cuò)切端,第一反應(yīng)可定會(huì)覺(jué)得是權(quán)限命名或者沒(méi)有加載權(quán)限。實(shí)際上是這樣子的顷啼,你的配置是沒(méi)有錯(cuò)的踏枣,只是漏掉了還需要更改的一個(gè)地方:
打開:com.android.launcher3.config.ProviderConfig.java
這個(gè)類只有一個(gè)靜態(tài)變量:

public static final String AUTHORITY = "com.android.launcher3.settings";

你沒(méi)錯(cuò),就是這里钙蒙,我們還需要更改成跟我們對(duì)于的** authorities**值:

public static final String AUTHORITY = "com.android.launcher3.settingss";   

至此茵瀑,結(jié)束。

運(yùn)行:

起始屏
菜單
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躬厌,一起剝皮案震驚了整個(gè)濱河市马昨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扛施,老刑警劉巖鸿捧,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疙渣,居然都是意外死亡匙奴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門妄荔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泼菌,“玉大人,你說(shuō)我怎么就攤上這事啦租』┎” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵篷角,是天一觀的道長(zhǎng)焊刹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恳蹲,這世上最難降的妖魔是什么虐块? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮阱缓,結(jié)果婚禮上非凌,老公的妹妹穿的比我還像新娘举农。我一直安慰自己荆针,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著航背,像睡著了一般喉悴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玖媚,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天箕肃,我揣著相機(jī)與錄音,去河邊找鬼今魔。 笑死勺像,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的错森。 我是一名探鬼主播吟宦,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涩维!你這毒婦竟也來(lái)了殃姓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瓦阐,失蹤者是張志新(化名)和其女友劉穎蜗侈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睡蟋,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踏幻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戳杀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叫倍。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豺瘤,靈堂內(nèi)的尸體忽然破棺而出吆倦,到底是詐尸還是另有隱情,我是刑警寧澤坐求,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布蚕泽,位于F島的核電站,受9級(jí)特大地震影響桥嗤,放射性物質(zhì)發(fā)生泄漏须妻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一泛领、第九天 我趴在偏房一處隱蔽的房頂上張望荒吏。 院中可真熱鬧,春花似錦渊鞋、人聲如沸绰更。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)儡湾。三九已至特恬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徐钠,已是汗流浹背癌刽。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尝丐,地道東北人显拜。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像爹袁,于是被迫代替她去往敵國(guó)和親讼油。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,275評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc呢簸,orm框架 https://github.com/yangf...
    passiontim閱讀 15,435評(píng)論 2 45
  • 這是一本關(guān)于生活的書根时,每個(gè)人都應(yīng)有自己的定位和獨(dú)特的生命價(jià)值瘦赫,要?dú)夤?jié),也要性情蛤迎,要理性确虱,也要幻想。學(xué)會(huì)用心替裆,...
    sugar_rush閱讀 579評(píng)論 0 2
  • 人為什么會(huì)那么匆忙呢校辩?陽(yáng)光灑落在身前身后的時(shí)候,應(yīng)該感受到一種愉悅辆童。如果我沒(méi)有了這樣的愉悅宜咒,我想我可能失去了對(duì)美得...
    xiaoxu1998閱讀 194評(píng)論 0 0
  • 以前聽一個(gè)同事說(shuō):他們村有一個(gè)人心地特別善良故黑,見到人有難就幫,見到人有急就救庭砍,是村里的大好人场晶。可最后50多歲怠缸,就悶...
    應(yīng)果閱讀 672評(píng)論 0 0