這一節我們來講解建立專案;說道大家可能就會說了,建立專案還有誰不會啊,還需要講嗎,別急聽我慢慢到來,肯定有你不知道的。
使用專案Android Studio建立專案我們這裡就不講解了,主要是講解如何配置一個符合企業標準的專案。
SDK配置
我們這裡配置編譯SDK為27,目標SDK版本為22,V7依賴庫版本為27.1.0,這裡我們設定目標SDK版本為22是為了不在這個專案中處理動態許可權,因為這個超出了我們課程第一版的範圍,V7依賴庫版本第一個版本需要的編譯SDK版本一樣。
版本號統一配置
通常情況下在企業開發中我們都會將每個Module的版本等資訊放到專案的build.gradle檔案中,這樣做的好處可以統一修改。詳細這部分我們在《詳解Gradle》課程中講解到了。也可以參考我們的AndroidDownloader開源專案的配置:https://github.com/lifengsofts/AndroidDownloader/blob/master/build.gradle
本專案下的build.gradle檔案:
ext {
//最小版本
minSdkVersion = 15
//編譯版本
compileSdkVersion = 27
//目標版本
targetSdkVersion = 22
//V7版本
androidSupportVersion = '27.1.0'
}
複製程式碼
在這裡相當定義一個ext方法,然後裡面傳遞了多個命名引數,這個有點和Kotlin語言有點像,然後就可以在每個Module中引用這個變數就行了。例如:app下面的build.gradle檔案:
android {
//設定編譯版本
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.ixuea.android.courses.music"
//最小編譯版本
minSdkVersion rootProject.ext.minSdkVersion
//目標版本
targetSdkVersion rootProject.ext.targetSdkVersion
}
}
複製程式碼
同時依賴的版本,我們使用變數替換版本號,包括RecyclerView,只是現在我們還沒引用他而已:
dependencies {
implementation "com.android.support:appcompat-v7:$rootProject.androidSupportVersion"
}
複製程式碼
當然到這裡基本配置就完了,但是還有更多配置,例如:程式碼測試覆蓋率,持續整合等。後面會在相應的課程講解,畢竟這裡我們是做專案。
新增許可權
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
複製程式碼
API端點
企業開發中通常都有三個環境,分別是dev,qa,prod分別代表開發環境,測試環境,正式環境;部分企業還有一個預上線環境。對於我們App來說他們最大的不同就是端點(endpoint)不同,所以我們這裡要配置多個環境,配置有多種方法,可以通過渠道來配置,也可以通過建立多個java包,而我們這裡使用時在build.gradle中配置變數:
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//mock
//buildConfigField 'String', 'ENDPOINT', '"http://rap2api.taobao.org/app/mock/14520/"'
//buildConfigField 'String', 'RESOURCE_PREFIX', '"http://dev-courses-misuc.ixuea.com/%s"'
//local
//buildConfigField 'String', 'ENDPOINT', '"http://192.168.100.106:3000/v1/"'
buildConfigField 'String', 'ENDPOINT', '"http://10.0.2.2:3000/v1/"'
buildConfigField 'String', 'RESOURCE_PREFIX', '"http://dev-courses-misuc.ixuea.com/%s"'
//dev
//buildConfigField 'String', 'ENDPOINT', '"http://api-dev-courses-misuc.ixuea.com/v1/"'
//buildConfigField 'String', 'RESOURCE_PREFIX', '"http://dev-courses-misuc.ixuea.com/%s"'
/qa
//buildConfigField 'String', 'ENDPOINT', '"http://api-qa-courses-misuc.ixuea.com/v1/"'
//buildConfigField 'String', 'RESOURCE_PREFIX', '"http://res-qa-courses-misuc.ixuea.com/%s"'
//prod
//buildConfigField 'String', 'ENDPOINT', '"http://api-courses-misuc.ixuea.com/v1/"'
//buildConfigField 'String', 'RESOURCE_PREFIX', '"http://res-courses-misuc.ixuea.com/%s"'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//prod
buildConfigField 'String', 'ENDPOINT', '"http://api-courses-misuc.ixuea.com/v1/"'
buildConfigField 'String', 'RESOURCE_PREFIX', '"http://res-courses-misuc.ixuea.com/%s"'
}
}
複製程式碼
然後我們就可以在Java程式碼中通過通過BuildConfig常量類引用:
public static final String RESOURCE_PREFIX = BuildConfig.RESOURCE_PREFIX;
public static final String ENDPOINT = BuildConfig.ENDPOINT;
複製程式碼
如果感覺我們寫的不錯,可以支援我們一下,本專案提供的線上電子書和線上視訊教程,在官網購買可以優惠5元喲,同時視訊課程也可以在網易雲課程,騰訊課堂上購買。
有任何問題可以新增我們的QQ來討論:3469271680;也可以掃描下面的二維碼新增Android開發交流群和微信公眾號(愛學啊官網底部也有聯絡方式喲),我們平均每天都會推送一篇優質文章;評論可能回覆不是很及時,還望大家體諒;購買課程後可以獲得一對一答疑服務,當然也可以談人生談理想瞎扯淡;同時如果是零基礎想學程式設計的朋友也可以聯絡我們進行諮詢,我們可以提供一些建議和幫助,讓你在程式設計道路上更順暢。