標籤:
要執行命令列,首先,在環境變數裡面進行配置。
1、手動安裝Gradle,bin-->gradle.bat,這個目錄配置到環境變數path裡面,這樣才能在變數裡面進行運行。
2、Android studio 裡面有Gradle。這裡也有Gradle
每個工程下面都有一個Gradlew.bat這個批處理。有如下命令:
gradle tasks 列出所有命令。如果build.gradle是比較複雜的、我們可以對比一下
gradle build 編譯所有的任務
gradle assembleRelease 只編譯Release
gradle clean 命令清楚了APP下的這個包。
Android 在Terminal 裡面也提供了個shell環境。也可以在這裡進行編譯
理論上,只有 apply plugin 和android{}就可以進行編譯了,如果工程比較複雜,可以用dependencies{}引進依賴包,進行編譯
儘管已經在一個檔案夾裡面了,但是這裡,我們的APP並沒有引入library裡面的包
寫一些配置,知道在哪些模組下
在Eclipse 裡面也可以進行,我們可以指定某一個類型的檔案存在某一個目錄下面,可以用gradle指令碼來編譯
android { //這是一個Android模組 compileSdkVersion 19 buildToolsVersion "20.0.0" sourceSets { //這裡是區別。 main { manifest.srcFile ‘AndroidManifest.xml‘ java.srcDirs = [‘src‘] resources.srcDirs = [‘src‘] aidl.srcDirs = [‘src‘] renderscript.srcDirs = [‘src‘] res.srcDirs = [‘res‘] assets.srcDirs = [‘assets‘] } instrumentTest.setRoot(‘tests‘) debug.setRoot(‘build-types/debug‘) release.setRoot(‘build-types/release‘) }
依賴項目設定
1、引入架包
右鍵屬性,Open Module Settings F4 ,點擊+號,第二項。引入gson.jar和gcm.jar 之後,指令碼裡面的檔案多了兩行
dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) compile ‘com.android.support:appcompat-v7:22.2.1‘ compile files(‘libs/gcm.jar‘) compile files(‘libs/gson-2.3.1.jar‘)
當然,在我們修改了gson的版本之後,還是要來改這裡的名稱的,麻痹,不會自動改。用下面的一行代碼解決。以後只要有新的架包扔到libs裡面去,我們就直接引用了,不需要再寫代碼了
compile fileTree(include:‘*.jar‘,dir:‘libs‘)
}
2、引入本地項目,引入的剛才建立的moudle (library,)
右鍵屬性,Open Module Settings F4 ,點擊+號,第三項。
dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) compile ‘com.android.support:appcompat-v7:22.2.1‘ compile project(‘:library:mylibrary‘)}
表示引用的是個模組。
引用 v4包,v7包。
右鍵屬性,Open Module Settings F4 ,點擊+號,第一項。
compile ‘com.android.support:appcompat-v7:22.2.1‘
defaultConfig { applicationId "com.example.administrator.turnplatemenu" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" }
這個,如果不寫,manifast裡面會覆蓋它
3、引入遠程庫
右鍵屬性,Open Module Settings F4 ,點擊+號,第一項。搜尋gson庫,匯入之後,在APP下面的lib裡面是沒有的。只是會通過指令碼去遠程下載這個庫。
編譯時間候修改包資訊
真正強大的地方在於編譯時間還能修改定義,包名,versionCode versionName,
簽名檔案的設定
signingConfigs{//下面兩個名字可以自訂 releasekey{ storeFile file(‘MYKEY‘) storePassword ‘123456‘ keyAlias ‘androidrelease‘ 修改為--->andoridkey keyPassword(‘123456‘) } debugkey{ storeFile file(‘MYKEY.debug‘) storePassword ‘android‘ keyAlias ‘androidbugkey‘ keyPassword android } }
有了這個結點,如何使用?
defaultConfig { applicationId "com.example.administrator.turnplatemenu" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" signingConfig signingConfigs.releasekey }
在defaultConfig裡面加上最後一個結點,指定的簽名文檔。但是defaultConfig 必須定義在signingConfigs的下方。 這是指令碼語言,和類不一樣。
Failed to read key from keystore
這裡說我們的密碼有問題,這裡修改為Androidkey
編譯類型:buildType
用於編譯出來的包是用於做什麼的。一般系統預設就兩種,一種release 一種debug,但是下面自己定義了兩個。
buildTypes{ forrelease{ debuggable false } fordebug{ applicationIdSuffix ‘.debug‘ } fordailybuild{ //然後還有一個擴充,可持續繼承, applicationIdSuffix ‘.db‘ } formonkeytest{ //用monkey跑用的 applicationIdSuffix ‘.monkey‘ }
}
productFlavors {
phone{
applicationID ‘com.win16.nyapplicaiton‘
signingConfig signingConfigs.releasekey
}
pad{
applicationId ‘con.win16.myapplication.hd‘
signingConfig singingConfigs.debugkey
}
default_channel{} wandoujia{} _360{} yingyongbao{} xiaomi{} baidu{} huawei{} jifeng{} }
所謂ProductFlavors其實就是可定義的產品特性,配合 manifest merger 使用的時候就可以達成在一次編譯過程中產生多個具有自己特性配置的版本。
上面這個配置的作用就是,為每個渠道包產生不同的 UMENG_CHANNEL_VALUE 的值。
Android--Android studio 的編譯系統 Gradle(二)