我胡漢三又回來了胚嘲!在結(jié)束了本科最后一門考試后垒迂,如愿來到鵝廠,趕在畢業(yè)正式入職前,先來實習感受下工作氛圍×页現(xiàn)在剛結(jié)束了實習的第一周,按照習慣算吩,以下是本周的知識清單:
- meta-data
- Gradle文件
- compile & implementation
- jar & aar
- 一點小感悟
a.作用:是一個鍵值對压昼,用于幫助父組件存儲附加數(shù)據(jù)
meta-data和strings的區(qū)別:
- strings只能在應(yīng)用內(nèi)部被讀取
- meta-data是系統(tǒng)注冊的信息,系統(tǒng)及外界都可以獲取到meta-data配置的數(shù)據(jù)
b.位置:可包含在AndroidManifest中的<application>
瘤运、<activity>
窍霞、<activity-alias>
、<provider>
拯坟、<receiver>
但金、<service>
標簽下,以上組件元素可包含任意數(shù)量的<meta-data>
子元素
c.屬性
<meta-data
android:name="string"
android:resource="resource specification"
android:value="string" />
-
android:name
:鍵名郁季,唯一標識 -
android:resource
:資源ID冷溃,通過Bundle.getInt()
獲取其值 -
android:value
:鍵值,類型和獲取方法如圖:
將資源ID指定為
android:resource
梦裂、android:value
的值時區(qū)別:
- 將存儲在@string/kangaroo資源中的值分配給zoo名稱:
<meta-data android:name = "zoo" android:value = "@string/kangaroo" />
- 將數(shù)字ID分配給zoo名稱:
<meta-data android:name = "zoo" android:resource = "@string / kangaroo" />
d.使用:meta-data中的數(shù)據(jù)存儲于一個Bundle
對象中似枕,可通過PackageItemInfo.metaData
字段來獲取
下面通過一個例子理解下,假設(shè)配置清單如下:
<application
...
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="meta_act"
android:resource="@string/app_name" />
</activity>
<meta-data
android:name="meta_app"
android:value="testValue" />
</application>
對value年柠、resource值的讀取方法如下:
//獲取value的方法凿歼,這里通過getString獲取,結(jié)果為testValue
private String getMetaDataFromApp() {
String value = "";
try {
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
Bundle bundle = appInfo.metaData;
value = bundle.getString("meta_app");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return value;
}
//獲取resource的方法彪杉,通過getInt獲取毅往,結(jié)果為id值
private int getMetaDataIdFromAct() {
int resId= 0;
try {
ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
Bundle bundle = activityInfo.metaData;
resId = bundle.getInt("meta_act");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return resId;
}
e.應(yīng)用:
- 接入第三方庫,比如使用百度地圖需要進行用戶信息配置:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="USER-KEY" />
2.Gradle文件
一個Android Studio項目中有三個Gradle相關(guān)文件:
- Project的
settings.gradle
:指定可被Gradle識別的Module派近,方法是include
//添加:app和:common這兩個module參與構(gòu)建
include ':app',':common'
- Project的
build.gradle
:整個Project的共有屬性攀唯,包括配置版本、插件渴丸、依賴庫等信息 - Module的
build.gradle
:各個module私有的配置文件
更多Gradle知識后續(xù)會更新《Android Gradle權(quán)威指南》讀書筆記
3.compile & implementation
在Android studio版本3.0以后侯嘀,有關(guān)第三方庫或module的依賴方式中另凌,compile被棄用,而是由implementation替代戒幔。implementation相比于compile的好處有:
- 隱藏對外不必要的接口:將該依賴隱藏在內(nèi)部吠谢,而不對外部公開
一句話就是:compile可以依賴傳遞,而implementation不可以诗茎。比如當前項目結(jié)構(gòu)如下工坊,在LibraryA中使用implementation依賴LibraryC,那么App Moudle是無法訪問到LibraryC提供的接口的敢订,只能由LibraryA訪問到王污。
- 加快編譯速度:比如改動LibraryC接口的相關(guān)代碼,只需要單獨編譯LibraryA即可楚午, 如果使用舊的compile昭齐,App Moudle部分也需要重新編譯。
4.jar & aar
- jar文件(Java Archive File):只包含class文件和清單文件矾柜,不包含資源文件
- 特點:以zip文件格式為基礎(chǔ)阱驾,不同的是,jar文件不僅用于壓縮和發(fā)布怪蔑,還用于部署和封裝庫里覆、組件和插件程序,并可被像編譯器和JVM直接使用
- 優(yōu)勢:有zip沒有的功能饮睬,如安全性租谈、減少下載時間、傳輸平臺擴展捆愁、包密封、包版本控制窟却、可移植性
- aar文件(Android Archive):包含class及res下的所有的資源文件
- 打包方法
5.一點小感悟
或許是因為和鵝廠有過一些交集昼丑,來到這里竟感覺莫名的心安,這種微妙的心境用那句“我知道你會來夸赫,只是時間早晚”形容最合適不過了菩帝。
作為一只初來乍到的鮮鵝,沒啥見識茬腿,覺得鵝廠里的一切都太贊了呼奢!很幸運在濱海大廈辦公,這真的是最最最理想的工作地了切平,豪華又智能握础,每個細節(jié)都彰顯一種美,連空氣都是香甜的悴品;還有超好吃的餐廳禀综、超大氣的體育館简烘,轉(zhuǎn)角遇到AI技術(shù),吃喝玩樂應(yīng)有盡有定枷;工位真的很大孤澎,機器設(shè)備都是全新的(剛來看到工位上放著好幾個大箱子的時候我都驚呆了,萬萬沒想到還要做這種體力活)欠窒;以及日常福利真的不要太多(尤其趕上年底)覆旭,搖身一變成壕鵝。
除了無敵的工作環(huán)境和資源岖妄,一起共事的小伙伴也棒呆型将,技術(shù)強就不說了,保養(yǎng)好到看不出年齡衣吠,每日一問:大佬你工作多久了茶敏?除了顏值高,性格也好缚俏,尤其組長簡直是活寶惊搏;工作氛圍也很好,大家總是學到廢寢忘食忧换,到處都是技術(shù)討論的聲音恬惯,忍不住哀嚎我就是個大菜雞。
這幾日為了快速熟悉業(yè)務(wù)亚茬,組長給我分了個BUG酪耳,可能因為項目體量不小了,可讀的文檔有限刹缝,看著大佬們忙前忙后的也不敢多打擾碗暗,就自己埋頭嚼代碼,最后導師都忍不住問我怎么都沒問題梢夯,也服了自己這股傻勁言疗,其實先問清楚業(yè)務(wù)邏輯再看代碼會快很多。
當然也會有頭疼的時候颂砸,比如資源太多噪奄、分布又雜經(jīng)常手忙腳亂,比如寫文檔的編輯器不太好使人乓,比如更加清楚自己的菜,所以為了能在鵝廠搬磚還要更努力才是呀色罚!
最后,再一次吹爆我大濱海保屯,每次都忍不住拿起手機拍涤垫,但僅僅拍到其萬分之一的美,于是默默收起手機竟终,心中慨嘆蝠猬,這種美大概適合親自來體驗吧统捶!附上官方介紹:Hi,這里是騰訊全球新總部濱海大廈喘鸟!