這一節咱們來說解建立項目;說道你們可能就會說了,建立項目還有誰不會啊,還須要講嗎,別急聽我慢慢到來,確定有你不知道的。java
使用項目Android Studio建立項目咱們這裏就不講解了,主要是講解如何配置一個符合企業標準的項目。android
咱們這裏配置編譯SDK爲27,目標SDK版本爲22,V7依賴庫版本爲27.1.0,這裏咱們設置目標SDK版本爲22是爲了避免在這個項目中處理動態權限,由於這個超出了咱們課程初版的範圍,V7依賴庫版本第一個版本須要的編譯SDK版本同樣。git
一般狀況下在企業開發中咱們都會將每一個Module的版本等信息放到項目的build.gradle文件中,這樣作的好處能夠統一修改。詳細這部分咱們在《詳解Gradle》課程中講解到了。也能夠參考咱們的AndroidDownloader開源項目的配置:https://github.com/lifengsoft...github
本項目下的build.gradle文件:編程
ext { //最小版本 minSdkVersion = 15 //編譯版本 compileSdkVersion = 27 //目標版本 targetSdkVersion = 22 //V7版本 androidSupportVersion = '27.1.0' }
在這裏至關定義一個ext方法,而後裏面傳遞了多個命名參數,這個有點和Kotlin語言有點像,而後就能夠在每一個Module中引用這個變量就好了。例如:app下面的build.gradle文件:api
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" }
固然到這裏基本配置就完了,可是還有更多配置,例如:代碼測試覆蓋率,持續集成等。後面會在相應的課程講解,畢竟這裏咱們是作項目。app
<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" />
企業開發中一般都有三個環境,分別是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常量類引用:gradle
public static final String RESOURCE_PREFIX = BuildConfig.RESOURCE_PREFIX; public static final String ENDPOINT = BuildConfig.ENDPOINT;
若是感受咱們寫的不錯,能夠支持咱們一下,本項目提供的在線電子書和在線視頻教程,在官網購買能夠優惠5元喲,同時視頻課程也能夠在網易雲課程,騰訊課堂上購買。
有任何問題能夠添加咱們的QQ來討論:3469271680;也能夠掃描下面的二維碼添加Android開發交流羣和微信公衆號(愛學啊官網底部也有聯繫方式喲),咱們平均天天都會推送一篇優質文章;評論可能回覆不是很及時,還望你們體諒;購買課程後能夠得到一對一答疑服務,固然也能夠談人生談理想瞎扯淡;同時若是是零基礎想學編程的朋友也能夠聯繫咱們進行諮詢,咱們能夠提供一些建議和幫助,讓你在編程道路上更順暢。