鵝廠實習| 週記(一)

我胡漢三又回來了!在結束了本科最後一門考試後,如願來到鵝廠,趕在畢業正式入職前,先來實習感覺下工做氛圍。如今剛結束了實習的第一週,按照習慣,如下是本週的知識清單:html

  • meta-data
  • Gradle文件
  • compile & implementation
  • jar & aar
  • 一點小感悟

1.meta-data(元數據)java

a.做用:是一個鍵值對,用於幫助父組件存儲附加數據android

meta-data和strings的區別:api

  • strings只能在應用內部被讀取
  • meta-data是系統註冊的信息,系統及外界均可以獲取到meta-data配置的數據

b.位置:可包含在AndroidManifest中的<application><activity><activity-alias><provider><receiver><service>標籤下,以上組件元素可包含任意數量的<meta-data>子元素安全

c.屬性app

<meta-data 
    android:name="string"           
    android:resource="resource specification"           
    android:value="string" />
複製代碼
  • android:name:鍵名,惟一標識
  • android:resource:資源ID,經過Bundle.getInt()獲取其值
  • android:value:鍵值,類型和獲取方法如圖:

將資源ID指定爲android:resourceandroid:value 的值時區別:編輯器

  • 將存儲在@string/kangaroo資源中的分配給zoo名稱:
<meta-data android:name = "zoo" android:value =  "@string/kangaroo" />   
複製代碼
  • 數字ID分配給zoo名稱:
<meta-data android:name = "zoo" android:resource = "@string / kangaroo" />  
複製代碼

d.使用:meta-data中的數據存儲於一個Bundle對象中,可經過PackageItemInfo.metaData字段來獲取ide

下面經過一個例子理解下,假設配置清單以下:gradle

<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值的讀取方法以下:ui

//獲取value的方法,這裏經過getString獲取,結果爲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獲取,結果爲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.應用

  • 接入第三方庫,好比使用百度地圖須要進行用戶信息配置:
<meta-data 
android:name="com.baidu.lbsapi.API_KEY" 
android:value="USER-KEY" />
複製代碼

2.Gradle文件

一個Android Studio項目中有三個Gradle相關文件:

  • Project的settings.gradle:指定可被Gradle識別的Module,方法是include
//添加:app和:common這兩個module參與構建
include ':app',':common'
複製代碼
  • Project的build.gradle:整個Project的共有屬性,包括配置版本、插件、依賴庫等信息
  • Module的build.gradle:各個module私有的配置文件

更多Gradle知識後續會更新《Android Gradle權威指南》讀書筆記


3.compile & implementation

在Android studio版本3.0之後,有關第三方庫或module的依賴方式中,compile被棄用,而是由implementation替代。implementation相比於compile的好處有:

  • 隱藏對外沒必要要的接口:將該依賴隱藏在內部,而不對外部公開

一句話就是:compile能夠依賴傳遞,而implementation不能夠。好比當前項目結構以下,在LibraryA中使用implementation依賴LibraryC,那麼App Moudle是沒法訪問到LibraryC提供的接口的,只能由LibraryA訪問到。

  • 加快編譯速度:好比改動LibraryC接口的相關代碼,只須要單獨編譯LibraryA便可, 若是使用舊的compile,App Moudle部分也須要從新編譯。

4.jar & aar

  • jar文件(Java Archive File):只包含class文件和清單文件,不包含資源文件
    • 特色:以zip文件格式爲基礎,不一樣的是,jar文件不只用於壓縮和發佈,還用於部署和封裝庫、組件和插件程序,並可被像編譯器和JVM直接使用
    • 優點:有zip沒有的功能,如安全性、減小下載時間、傳輸平臺擴展、包密封、包版本控制、可移植性
  • aar文件(Android Archive):包含class及res下的全部的資源文件
  • 打包方法

5.一點小感悟

或許是由於和鵝廠有過一些交集,來到這裏竟感受莫名的心安,這種微妙的心境用那句「我知道你會來,只是時間遲早」形容最合適不過了。

做爲一隻初來乍到的鮮鵝,沒啥見識,以爲鵝廠裏的一切都太讚了!很幸運在濱海大廈辦公,這真的是最最最理想的工做地了,豪華又智能,每一個細節都彰顯一種美,連空氣都是香甜的;還有超好吃的餐廳、超大氣的體育館,轉角遇到AI技術,吃喝玩樂應有盡有;工位真的很大,機器設備都是全新的(剛來看到工位上放着好幾個大箱子的時候我都驚呆了,萬萬沒想到還要作這種體力活);以及平常福利真的不要太多(尤爲遇上年末),搖身一變成壕鵝。

除了無敵的工做環境和資源,一塊兒共事的小夥伴也棒呆,技術強就不說了,保養好到看不出年齡,每日一問:大佬你工做多久了?除了顏值高,性格也好,尤爲組長簡直是活寶;工做氛圍也很好,你們老是學到廢寢忘食,處處都是技術討論的聲音,忍不住哀嚎我就是個大菜雞。

這幾日爲了快速熟悉業務,組長給我分了個BUG,可能由於項目體量不小了,可讀的文檔有限,看着大佬們忙前忙後的也不敢多打擾,就本身埋頭嚼代碼,最後導師都忍不住問我怎麼都沒問題,也服了本身這股傻勁,其實先問清楚業務邏輯再看代碼會快不少。

固然也會有頭疼的時候,好比資源太多、分佈又雜常常手忙腳亂,好比寫文檔的編輯器不太好使,好比更加清楚本身的菜,因此爲了能在鵝廠搬磚還要更努力纔是呀!

最後,再一次吹爆我大濱海,每次都忍不住拿起手機拍,但僅僅拍到其萬分之一的美,因而默默收起手機,心中慨嘆,這種美大概適合親自來體驗吧!附上官方介紹:Hi,這裏是騰訊全球新總部濱海大廈!

大廳——第一條「腰帶」
相關文章
相關標籤/搜索