Android專案實戰之高仿網易雲音樂建立專案和配置

愛學啊發表於2018-07-05

這一節我們來講解建立專案;說道大家可能就會說了,建立專案還有誰不會啊,還需要講嗎,別急聽我慢慢到來,肯定有你不知道的。

使用專案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開發交流群和微信公眾號(愛學啊官網底部也有聯絡方式喲),我們平均每天都會推送一篇優質文章;評論可能回覆不是很及時,還望大家體諒;購買課程後可以獲得一對一答疑服務,當然也可以談人生談理想瞎扯淡;同時如果是零基礎想學程式設計的朋友也可以聯絡我們進行諮詢,我們可以提供一些建議和幫助,讓你在程式設計道路上更順暢。

Android開發交流群
愛學啊官方公眾號

相關文章