Introducing Android
Hello Android
接著前兩篇的內容,本文簡要介紹一下Android的項目結構。
一個Android項目會包括java源檔案,資源檔片,基於xml的布局檔案等,第三方的jar包等。這些檔案最終會被編譯成一個.apk檔案即Android應用程式可執行檔Android package file, .apk檔案可以安裝在類比裝置或者真機上。
看一下前一篇我們建立的HelloAndroid項目的結構圖:
可以看到Android項目主要包括:
src/: 存放java源檔案
gen/: 存放由Android編譯工具產生的java源檔案, 這些檔案不能手動修改。如R.java就定義了一些常量,這些常量是對資源檔的索引,以便我們很方便的引用這些資源檔。
assets/: 存放一些靜態檔案並將會被一起打包成.apk檔案
res/:存放資源檔
res/drawable: 存放圖片如PNG,JPEG等
res/drawable-ldpi/my_icon.png // 存放低解析度的圖片
res/drawable-mdpi/my_icon.png // 存放中等解析度的圖片
res/drawable-hdpi/my_icon.png // 存放高解析度的圖片
res/layout: 存放基於xml的布局檔案
res/menu: 存放基於xml的菜單檔案
res/values: 存放字串等資源檔,如多語言的檔案
bin/:存放編譯後的檔案
bin/yourpackagename/classes/:存放java編譯後的.class檔案
bin/classes.dex: class檔案被轉換成針對Dalvik虛擬機器最佳化的dex檔案, 在Introducing Android中有提及。
bin/resources.ap_: 被壓縮的資源檔類似zip檔案。
bin/yourapp.apk: Android應用程式可執行檔,其實它也是個壓縮的檔案,包含了.dex檔案,各種資源檔等。
AndroidManifest.xml是一個當前應用程式的組件清單,它列出了應用程式套件組合含的各種activities,services,許可權等, 下面看一下HelloAndroid項目中的AndroidManifest.xml檔案:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.benjamin.helloandroid" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAndroid" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
可以看到根項目manifest的定義, 首先聲明了命名空間,指定了包名。android:versionCode是Android應用程式的版本號碼,一個整形的數字,在應用程式升級的時候會進行比較是否決定要更新。android:versionName是你自己為你應用程式定義一個版本代號,不必一定是數字,如”Tiger 2000”, “System X”等。如果你的應用程式要發布在Android Market的話,都需要指定android:versionCode和android:versionName這兩項。
android:icon表示你的應用程式顯示的表徵圖,"@drawable/icon”表示讀取res/drawable下面icon這個圖片,android:label表示應用程式的名稱,"@string/app_name”表示讀取res/values/strings.xml中app_name的值。activity的兩個屬性android:name和android:label分別表示這個activity的類名,activity的顯示名稱。intent-filter表示在什麼條件下這個activity會顯示。
AndroidManifest.xml還包含很多元素,更詳細的可以參考官方的文檔。