Android Studio Gradle使用Tips

Gradle 獲取svn版本號

  1. Project層下的 * build.gradle * 文件
buildscript {
    repositories {
        maven{ url 'http://maven.oschina.net/content/groups/public/'}//OSC的maven倉庫鏡像
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11' //引入svn插件
    }
}
  1. Module層下的 ** build.gradle ** 文件 加入以下
  2. 第一行導(dǎo)包

import org.tmatesoft.svn.core.wc.*

  1. 定義函數(shù)
def getSvnRevision() {
    ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
    SVNClientManager clientManager = SVNClientManager.newInstance(options);
    SVNStatusClient statusClient = clientManager.getStatusClient();
    SVNStatus status = statusClient.doStatus(projectDir, false);
    SVNRevision revision = status.getCommittedRevision();
    return revision.getNumber();
}

自己項目中使用的Gradle文件

  1. project.build
buildscript {
    repositories {
        maven{ url 'http://maven.oschina.net/content/groups/public/'}
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'
    }
}
allprojects {
    repositories {
        maven{ url 'http://maven.oschina.net/content/groups/public/'}
        jcenter()
        mavenCentral()
        maven {
            url "https://jitpack.io"
        }
    }
}
  1. moudle.build
import org.tmatesoft.svn.core.wc.*

apply plugin: 'com.android.application'

//配置android annotations
//apply plugin: 'com.neenbedankt.android-apt'

def getSvnRevision() {
    ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
    SVNClientManager clientManager = SVNClientManager.newInstance(options);
    SVNStatusClient statusClient = clientManager.getStatusClient();
    SVNStatus status = statusClient.doStatus(projectDir, false);
    SVNRevision revision = status.getCommittedRevision();
    return revision.getNumber();
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "cn.mobilizer.wenxun"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0.2.${getSvnRevision()}"
        ndk {
            //設(shè)置支持的SO庫架構(gòu)
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
    }
    
    //簽名文件最好不放在這里
    signingConfigs {
        release {
            keyAlias 'release'
            keyPassword 'release'
            storeFile file('sign/release.keystore')
            storePassword 'release'
        }
    }

    buildTypes {
        release {
            println 'release  -- build'
            //自定義字段
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled false
            //移除無用的res文件(必須混淆)
            shrinkResources true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //簽名文件
            signingConfig signingConfigs.mobilizer
            //對生成的apk 進行重命名,及制定到相對目錄
            applicationVariants.all { variant ->
                println "release baseName --> ${variant.baseName}" //xxx-release,xxx-debug
                println "release name --> ${variant.name}"
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    println "release outputFile.name --> ${outputFile.name}"
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        def fileName;
                        if (variant.baseName.endsWith('release')) {
                            fileName = "xxxxx_${versionName}.apk"
                        } else if (variant.baseName.endsWith('debug')) {
                            fileName = "xxxxx_debug_${versionName}.apk"
                        }
                        def rootDir = (new File(outputFile.parent)).parentFile.parentFile.parentFile;
                        output.outputFile = new File("${rootDir}/apk/${getSvnRevision()}", fileName)
                        println "release after change outputFile.name --> ${outputFile}"
                    }
                }
            }
        }

        debug {
            buildConfigField "boolean", "LOG_DEBUG", "true"
            signingConfig signingConfigs.xxxxx
        }
    }

    sourceSets {
        main {
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res', 'src/main/res-lib', 'src/main/res-config']
        }
    }
    productFlavors {
        play {
        }
        gfan{
        }
        //...
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末后专,一起剝皮案震驚了整個濱河市矮锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖埂蕊,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碟刺,死亡現(xiàn)場離奇詭異旱易,居然都是意外死亡偏瓤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門恕汇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腕唧,“玉大人,你說我怎么就攤上這事瘾英≡娼樱” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵方咆,是天一觀的道長月腋。 經(jīng)常有香客問我,道長瓣赂,這世上最難降的妖魔是什么榆骚? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮煌集,結(jié)果婚禮上妓肢,老公的妹妹穿的比我還像新娘。我一直安慰自己苫纤,他們只是感情好碉钠,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卷拘,像睡著了一般喊废。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栗弟,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天污筷,我揣著相機與錄音,去河邊找鬼乍赫。 笑死瓣蛀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雷厂。 我是一名探鬼主播惋增,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼改鲫!你這毒婦竟也來了诈皿?” 一聲冷哼從身側(cè)響起林束,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稽亏,沒想到半個月后诊县,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡措左,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了避除。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怎披。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓶摆,靈堂內(nèi)的尸體忽然破棺而出凉逛,到底是詐尸還是另有隱情,我是刑警寧澤群井,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布状飞,位于F島的核電站,受9級特大地震影響书斜,放射性物質(zhì)發(fā)生泄漏诬辈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一荐吉、第九天 我趴在偏房一處隱蔽的房頂上張望焙糟。 院中可真熱鬧,春花似錦样屠、人聲如沸穿撮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悦穿。三九已至,卻和暖如春业踢,著一層夾襖步出監(jiān)牢的瞬間栗柒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工陨亡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留傍衡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓负蠕,卻偏偏與公主長得像蛙埂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遮糖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理绣的,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評論 6 342
  • 原文地址:Android Studio 簡單介紹和使用問題小結(jié) Google在2013的I/O開發(fā)者大會上引入的該...
    如若成楓閱讀 2,200評論 0 3
  • 轉(zhuǎn)至:http://blog.csdn.net/heqiangflytosky/article/details/5...
    kkgo閱讀 2,877評論 0 1
  • 我向來對這類懷舊的片子是毫無免疫力的屡江。時常覺得自己晚生了二十年芭概,如若能生活在那個舉手投足、眉間眼底都透露著讓人放松...
    念棠閱讀 361評論 5 7