項目結構分析:
該模式爲Android模式的項目結構,不是真實的目錄結構,但這種結構易於理解簡單明瞭,適合快速開發。
如果要對目錄進行解析,可以將模式轉換爲Project模式
點擊:
點擊後,project模式的目錄就展現在我們面前
依次對目錄進行分析:
gradle和idea內放置的是AS自動生成的一些文件,不需要手動編輯
app內包含了項目的絕大部分內容
libs用於存放第三方的jar包,需要把jar包放入到該目錄下
src指源文件,其中andoridTset用來編寫測試用例,可以對項目進行一些自動化測試;test用來編寫unit test;
mian目錄是最重要的目錄,沒有之一,內部結構如下:
1.Java主要是用來編寫代碼實現功能的地方,裏面保存了我們寫的各種類,adapter,Activity,fragment等
2.res用來存放資源,包括圖片,佈局,字符串等資源
drawable和mipmap主要用來存放圖片,但是兩者差別在於,mipmap-xxx/下的所有分辨率的圖片都會保留,而drawablexxx/下的圖片只有保留適配設備分辨率的圖片,其餘圖片會丟棄掉,所以在使用的時候需要根據使用條件來放置圖片,需要縮放的高質量圖片以及圖標應當放在mipmap中,其餘的放入到drawable中
Layout內部用來存放佈局文件,新建一個Activity會生成一個對應名稱的xml文件,該文件爲該活動對應的佈局文件,內部顯示了控件的位置關係等信息。一般來說Java實現功能,layout定義視圖
values用來存放字符串,例如我們想做一個地圖,可以定義一個xml文件來存儲所有的地名以適配到搜索列表中或者定義一系列顏色以方便我們使用
3.AndroidMainifest.xml
它是整個Android項目的配置文件,在這裏可以進行四大組件的註冊,權限的生命,修改啓動頁等操作。它的使用頻率在開發中相當高。
打開xml文件對內部的代碼進行分析:
<application
...
</application>
這兩行代碼的內部主要就是定義該項目各個配置,例如主題,名稱,標題等,當然也用於聲明各種各樣的權限和註冊組件
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這個用來對Activity進行註冊,註冊了一個名稱爲 “MainActivity的活動”它內部的四行代碼是用於規定項目運行時第一個加載的Activity是哪一個,當內部的幾行代碼放入至該活動,則項目運行時就會現行跳轉至MainActivity
4.gradle以及其他文件
4.1gradle
該文件主要用於自動配置gradle,有了它不需要我們在去手動配置gralde
打開gradle-warpper.properties就可以看到
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
就是可以根據該地址根據本地緩存的情況下載gradle.
4.2.gitignore
該文件用於將制定目錄或文件排除在版本控制之外
4.3build.gradle
4.3.1全局的gradle構建腳本
內容分析:
repositories聲明瞭jcenter代碼託管倉庫,有了它我們可以在項目中引用任何jcenter中的開源項目
dependencies閉包中使用了classpath聲明瞭gradle插件,聲明後我們就可以使用Gradle來構建項目
4.3.2 app中的build.gradle
app中的build.gardle相對於項目中的build.gradle更重要,後續開發中可能需要涉及到修改內部的一些內容,所以我們需要對其進行詳細的分析以便於理解和使用。
看一下內部代碼並對代碼進行解析,很重要:
apply plugin: 'com.android.application'//應用模塊
android {
compileSdkVersion 29 //項目的編譯版本
buildToolsVersion "29.0.3"//項目構建工具的版本
defaultConfig { //配置項目構建的各種屬性
applicationId "com.example.javaproject" //項目包的名稱
minSdkVersion 24 //最低兼容Andorid的版本
targetSdkVersion 29 //在該版本做過充分測試
versionCode 1 //項目版本號,後續更新項目版本號更新
versionName "1.0" //版本名稱
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes { //制定生成安裝文件的相關配置
release { //debug與release對應測試版和正式版的相關配置
minifyEnabled false //是否混淆代碼
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' //混淆時使用的規則文件
}
}
}
dependencies { //☆指定項目的依賴關係☆
implementation fileTree(dir: 'libs', include: ['*.jar'])//implementation fileTree爲本地依賴,將libs內的jar包添加到構建路徑中
implementation 'androidx.appcompat:appcompat:1.1.0'//implementation 爲遠程依賴聲明
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
repositories {
mavenCentral()
}
重點說一下targetSdkVersion,它指定的值代表了你已經在該系統版本上做過充分的測試,系統將會爲你開啓一些該版本對應的功能和特性,也就意味着你的值指定的越高,到目前的最新版本,你就能夠使用更新的功能和特性。
4.4proguard-rules.pro
該文件主要用於指定項目代碼的混淆規則,可以防止代碼被別人破解。
4.5gradle.properties
全局的gradle配置文件
4.6local.properties
用於指定本機的SDK路徑,如果我們的SDK路徑發生更改,可以在這裏進行修改
4.7settings.gradle
用於指定項目中所有引入的模塊