android studio3.0build.gradle包含的svn信息apk名称写法等

import java.text.SimpleDateFormat
import java.util.regex.Matcher
import java.util.regex.Pattern

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.excellence.netlink"
        minSdkVersion 17
        targetSdkVersion 26

        versionCode = getSvnVersion()
        versionName = "V2.0." + versionCode + ' [' + getDate()+ "]"
        println 'versionCode: '+versionCode + '\n' + 'versionName: '+versionName
        creatVersionInfo()
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    applicationVariants.all{ variant->
        variant.getPackageApplication().outputDirectory = new File(outputDir())
        variant.outputs.all { output->
            if (variant.buildType.name.equals('release') || variant.buildType.name.equals('debug')) {
                outputFileName= "m3u8Player"+versionName+".apk"
            }
        }
    }
}

def outputDir(){
    return project.buildDir.absolutePath+"/outputs/apk"
}

def getSvnVersion() {
    def proc = ("svnversion -c " + getBuildDir().parent).execute();
    proc.waitFor();
    def version = proc.in.text;
    Pattern p = Pattern.compile("(\\d+\\:)?(\\d+)\\D?");
    Matcher m = p.matcher(version);
    if (m.find()) {
        version = m.group(m.groupCount());
    }
    try
    {
        return Integer.parseInt(version);
    }
    catch (e)
    {
        println e.getMessage()
    }
    return 0;
}

def getDate() {
    SimpleDateFormat sdf = new SimpleDateFormat('MMM d yyyy', Locale.US);
    return sdf.format(new Date());
}

def creatVersionInfo() {
    try
    {
        FileOutputStream outStream = new FileOutputStream(getBuildDir().parent + '/assets/verson_config.properties');
        Properties properties = new Properties();
        properties.put("svn_ver", '' + getSvnVersion());
        properties.put("build_time", getDate());
        properties.store(outStream, null);
        outStream.flush();
        outStream.close();
    }
    catch (e)
    {
        println e.getMessage()
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.jakewharton:butterknife:8.7.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
    implementation 'com.vise.xiaoyaoyou:viselog:1.1.2'
    implementation 'com.orhanobut:hawk:2.0.1'
}

你可能感兴趣的:(移动开发,Android)