Android 檔案結構
Manifest
Android 的設定檔案,宣告 Activity, Service, Receiver 及需要的權限等等
要先找到最重要的
<action android:name="android.intent.action.MAIN" />
這代表者 App 第一個 Activity 的進入點
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
從這邊我可以看到 MainActivity 是我們 app 的進入點,當我們拿到專案時要先找到程式的進入點,才能知道要從何開始。
我們再來看看 Application 的屬性
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
"android:icon="@mipmap/ic_launcher" 代表著App使用的 icon 為 mipmap 資料夾下的 ic_launcher 這個圖片檔案,若要更換 App 的 icon 只需要取代檔案或是將指定的檔案名稱置換即可。
"android:label="@string/app_name" 代表著 App 的顯視名稱並定義在 string.xml 內,在 string.xml 中我們可以找到 app_name 對應的文字同樣的我們也可以修改他。
程式碼(java)
在 app > java 底下有三個資料夾,分別是:
- package name
- package name (androidTest)
- package name (test)
我們的主程式就在 package name 沒有括號的資料夾底下
另外兩個資料夾分別代表著 (test) 單元測試專案、 (androidTest) 整合/UI 測試專案
資源檔 Resource (xml , 圖片 and 檔案)
在 manifest.xml 中我們可以看到 @xxxx 或是在 Java 的程式碼會看到 R.xx.xxx 這樣的東西,在 xml 中的 @xxx 或是 java 中的 R.xx.xx 代表著我們要存取資源檔,在 app > res 就是我們的資源檔資料夾,如下圖:
drawable 放置 drawable 的資源如下
- shape
- selector
- layer list
- animation
...
使用 @drawable/xxx 或 R.drawable.xxx 存取
- layout
放置畫面的 xml 檔案使用 @layout/xxx 或 R.layout.xxx 存取
mipmap
存放使用到的圖片檔案會依據尺寸放置到下列資料夾
- mdpi
- hdpi
- xhdpi
- xxdpi
xxxdpi
使用 @mipmap/xxx 或 R.mipmap.xxx 存取
- value
- color 定義色碼 ex: #FFFFFF
- dimens 定義尺寸大小
- string 定義文字可用於製作多國語系
- style 定義樣式
Gradle
build.gradle(Module:app) 定義專案的相依關係
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "tw.andyang.firstproject"
minSdkVersion 19
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.1.1'
testCompile 'junit:junit:4.12'
}
來看幾個重要的部分
- compileSdkVersion 24 使用編譯的 SDK 版本
- minSdkVersion 19 支援的最低版本
- versionCode 1 app 的版本號碼 上架時會檢查,只能比上一次高
- versionName "1.0" 給使用者看的本版編號
- dependencies 指定使用的 library 及版本號碼