Android應用程式框架講解
在我們的android的程式中會有很多的檔案,那麼這些檔案到底是有什麼作用呢?
我們編譯android專案,可以使用eclipse和AS,首先介紹一下eclipse中的框架
1、src檔案:存放的是應用程式使用到的java檔案
2、gen檔案:系統自動生成的目錄。不需要程式設計師進行修改,包含了重要的R檔案。該檔案中包含了程式中使用到的資原始檔對應生成的唯一的資源id。需要注意的是,如果R檔案發生錯誤,一般都是資原始檔出現了問題。
3、assets檔案:存放應用程式使用的資源,在這個資料夾存放的資源需要讀取時需要使用的是二進位制流的形式進行讀取,存放在這個資料夾中的檔案會被原封不動的打包進入apk,
4、bin檔案:主要是邊編譯生成的目錄,主要是獲取裡面生成的apk檔案。
5、libs檔案:存放第三方的jar檔案的目錄
6、res檔案:資源存放的目錄
drawable中存放的是圖片,他有很多的drawable檔案,存放不同解析度對應使用的圖片資源,按照解析度的有效到大存放。
layout檔案中是我們的我們的activity,通俗講就是我們要顯示的介面。
然後是我們的AS的框架結構
1.gradle和.idea
這兩個目錄下放置的都是AS自動生成的一些檔案,我們無需關心,也不要去修改他們
2.app
專案中的程式碼、資源等內容幾乎都是放在這個目錄下的。
app目錄下又有很多的東西。
2.1build
這個目錄和外層的build目錄類似,主要也是包含了一些自動生成的一些目錄。
2.2libs
如果你想要使用第三方jar包,那麼就需要把這些包放到這個資料夾的下面。
2.3androidTest
此處是用來編寫androidTest測試用例的,可以對專案進行自動化測試。
2.4java
java檔案就是用來放我們的java程式碼的,開啟,你就會發現我們的最初的HelloWorldActivity檔案
2.5res
這裡是我們的資原始檔,裡面的定西很多,包括圖片,佈局,字串,等
2.6AndrioidManifest.xml
這裡是你整個android專案的配置,你在程式中定義的四大元件都要在這個檔案裡註冊。
2.7test
處是迎來編寫Unit Test測試用例的。
2.8.gitignore
和外層的作用相似
2.9app.iml
IntelliJ IDEA自動生成的檔案,不用關心
2.10build。gradle
APP模組的構建指令碼
3.build
這裡主要是包含了一些在編輯時自動生成的一些檔案。
4.gradle
這個目錄包含了gradle wrapper 這個檔案,使用gradle wrapper這個檔案
不需要提前將gradle下載好,而是會自動根據本地的快取情況決定是否需要下載gradle
、AS預設沒有啟動gradle wrapper的方法,如果想要開啟,點選導航欄,File---settings---build,
Execution,Deployment---Gradle
5..gitignore
這個檔案是用來將指定的目錄或檔案排除在版本控制之外的。
6.build.gradle
這是專案全域性的gradle構建指令碼,通常這個檔案中的內容是不需要修改的。
7..gradle,properties
這個檔案是去哪聚的gradle配置檔案,在這裡配置的屬性將會影響到專案中所有的gradle編譯指令碼。
8.gradlew和gradlew.bat
這兩個檔案是用來在命令列中執行gradle命令的,其中gradlew是在Linux和Mac系統中使用的,gradlew.bat是在window中使用的。
9.HelloWorld.iml
iml檔案是所有IntelliJ IDEA專案都會自動生成的一個檔案(AS是基於IntelliJ IDEA開發的),用於標識這是一個IntelliJ IDEA專案,我們不需要修改裡面的內容。
10.local.properties
這個檔案用於指定本機中的Android SDK路徑,通常內容都是自動生成的,我們並不需要修改,除非你的SDK的路徑變了。
11.setting.gradle
這個檔案用於指定專案中所有引入的模組。
下面詳細說一下app內部的build.gradle
apply plugin: 'com.android.application'//應用了一個外掛,一般有兩種選擇,com.android.application和com.android.library前者表示應用程式,後者表示一個庫模組 android { compileSdkVersion 28//專案的編譯版本,28表示用的是android9.0的sdk進行編譯 defaultConfig { applicationId "com.example.sunshunli.ssl"//專案的包名 minSdkVersion 28//專案最低相容的android版本 targetSdkVersion 28// versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false//是有對專案的程式碼進行混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { } }//這是一個大的android閉包, dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }