標籤:manifest intellij pre values 版本控制 ide 工作 技術 一個
Android系統架構
Android程式結構
建立一個Android項目,為初學便於理解,將程式項目結構切換為Project模式,項目結構如下
.gradle和.idea:這兩個目錄下放的都是Android Studio自動產生的檔案,無需我們關心,也不需要手動編輯。
app:項目中的代碼、資源等內容幾乎都放在這個目錄下,開發工作基本在這個目錄下進行。
libs:如果項目引用了第三方jar包,就需要吧這些jar包放在libs目錄下,此目錄下的jar包都會自動添加到構建目錄中。
androidTest:此處是用來編寫Android Test測試案例的,可以對項目進行一些自動化測試。
java:此目錄防止我們所有Java代碼的位置,展開此目錄可看到建立此項目適的MyApplicationActivity檔案就在裡面。
res:這個目錄下存放項目使用到的所有圖片、布局、字串等資源。
drawable開頭:放圖片,drawable和mipmap一樣,只是沒有自動產生,如果為了相容各種裝置,則需要自己建立drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等檔案夾,開發程式時最好將一張圖片提供不同解析度版本,分別放在這些檔案夾下,運行時會自動根據當前裝置解析度高低選擇載入哪個檔案夾圖片。如果只有一張圖片,則將所有圖片放在drawable-xxhdpi下也可以。
layout開頭:放布局檔案
mipmap開頭:放應用表徵圖。(有很多mipmap開頭的檔案,主要是為了讓程式能更好相容各種裝置)
values開頭:放字串、樣式、顏色等配置。
AndroidManifest.xml:整個Android項目設定檔,在程式中定義的所有四大組件都要在這個檔案中註冊,並還可以在檔案中給應用程式加許可權聲明。
test:用來編寫Unit Test測試案例,對項目自動化測試的另一種方式
.gitignore:用於將app模組指定的目錄或檔案排除在版本控制外,作用和外層的類似。
build.gradle:app木塊的gradle構建指令碼,此檔案中會指定很多項目構建相關的配置。
prohiard-rules.pro:用於指定項目代碼的混淆規則,當開發完成後打包成安裝包檔案,如果不希望代碼被別人破解,通常會將代碼進行混淆,從而讓破解這難以閱讀。
build:無需關心,包含了編譯時間自動產生的一些檔案
gradle:包含gradle wrapper的設定檔,使用gradle wrapper的方式不需要提前將gradle下載好,而是會自動根據本地的緩衝情況決定是否連網下載gradle,編譯器預設沒有啟動,如果需要開啟,可點擊File--Settings--Build Execution,Deployment-Gradle進行配置更改。
.gitignore:這個檔案是用來將制定的目錄或檔案排除在版本控制之外。
build.gradle:項目全域的gradle構建指令碼,通常這個檔案的內容不需要修改。
.gradle.properties:全域的gradle設定檔,此處配置的屬性會影響項目中所有的gradle編譯指令碼。
gradlew和gradlew.bat:這兩個檔案用來在命令列介面執行gradle命令,其中gradlew是在Linux或Mac系統中使用的,gradle.bat實在windows系統中使用的。
local.properties:這個檔案用於指定本機中的Android SDK路徑,通常是自動產生的,不需要修改。除非本機中的Android SDK位置發生了變化。
MyApplication.iml:iml檔案是所有IntelliK IDEA項目都會產生一個檔案,(Android Studio是基於IntelliJ IDEA開發的),用於標識這是一個IntelliJ IDEA項目,不需要修改這個檔案的任何內容。
settings.gradle:這個檔案用於指定項目中所有引用的木塊。由於項目只有一個app模組,因此此檔案也只引用了app這個模組。
Android專案檔分析
首先運行一下剛剛建立的項目。
開啟AndroidManifest.xml項目設定檔,可以看到如下代碼
<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
此段xml代碼錶示對MainActivity這個活動進行註冊,沒有在此檔案中註冊的活動是不能使用的,其中intent-filter中的兩行代碼最為重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示此活動是這個項目的主活動,開啟程式首先看到的就是這個活動。
然後我們在main-java-中看看MainActivity.java類,可以看到繼承自AppCompatActivity,這是一個向下相容的Activity,可將各個系統版本增加的特性和功能最低相容到Android2.1版本,Activity是Android系統提供的一個活動基類,項目中用到的所有活動都必須繼承它或它的子類才能擁有活動的特性。然後可以看到有一個onCreate方法,這個方法是在活動唄建立時必定要執行的方法,其中只有兩行代碼,並沒有看到Hello word!字樣,那麼運行時顯式的Hello word!是怎麼來的呢?
Android程式的設計講究邏輯和視圖分離,因此不推薦直接在活動中直接編寫介面,而是在布局檔案中編寫介面,然後在活動中引用進來。如下代碼,在onCreate方法第二行調用了setContentView(R.layout.activity_main),表示當前活動引入一個R/layout目錄activity_main布局。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
開啟res/layout目錄,可以看到activity_main.xml檔案,然後切換到Text模式,可以看到一個<TextView>標籤下,有一行android:text="Hello World!"。
(1)-Android學習筆記之:初識Android系統架構和項目結構