Last active
May 17, 2023 06:40
-
-
Save VeiZhang/0af7b332e757362784467648fed7d7ef to your computer and use it in GitHub Desktop.
AndroidStudio常用配置脚本
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.text.SimpleDateFormat | |
import java.util.regex.Matcher | |
import java.util.regex.Pattern | |
ext { | |
// 上传bintray的配置 | |
bintray = [ | |
groupId : "com.excellence", | |
publishVersion: "1.0.0", | |
website : "https://github.com/VeiZhang", | |
licences : ['Apache-2.0'] | |
] | |
// Kotlin版本 | |
kotlin_version = "1.3.72" | |
// 插件 | |
plugins = [ | |
application : "com.android.application", | |
library : "com.android.library", | |
kotlin : "kotlin-android", | |
"kotlin-extensions" : "kotlin-android-extensions", | |
"kotlin-kapt" : "kotlin-kapt", | |
maven : "com.github.dcendents.android-maven", | |
bintray : "com.jfrog.bintray", | |
novoda : "com.novoda.bintray-release", | |
greendao : "org.greenrobot.greendao", | |
"greendao-gradle" : "org.greenrobot:greendao-gradle-plugin:3.2.2", | |
"safeargs" : "androidx.navigation.safeargs" | |
] | |
// 配置 | |
android = [ | |
/*************************原生配置*************************/ | |
// Android Studio 高版本才支持30+,否则报错AssertionError: annotationType() | |
compileSdkVersion : 30, | |
buildToolsVersion : "28.0.0", | |
minSdkVersion : 15, | |
targetSdkVersion : 19, | |
versionCode : getVersionCode(), | |
versionName : getVersionName(), | |
/*************************自定义配置*************************/ | |
androidSupportSdkVersion: "28.0.0", | |
navigationVersion : "2.1.0", | |
lifecycle : "2.2.0", | |
room : "2.3.0", | |
ktCoroutines : "1.3.2", | |
retrofit2 : "2.6.2", | |
leakcanary : "2.5", | |
exoplayer : "2.17.1", | |
ffmpeg : "1.2.6", | |
"imageloader" : "1.0.0", | |
"glide" : "4.11.0" | |
] | |
// 依赖 | |
dependencies = [ | |
// 旧版jre,新版使用jdk | |
"kotlin-stdlib" : "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version", | |
// Core KTX 模块为属于 Android 框架的通用库提供扩展程序 | |
"core-ktx" : "androidx.core:core-ktx:1.1.0", | |
// 协程依赖:coroutines-core协程核心,coroutines-android协程Android | |
"kt-coroutines-android" : "org.jetbrains.kotlinx:kotlinx-coroutines-android:${android["ktCoroutines"]}", | |
"kt-coroutines-core" : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${android["ktCoroutines"]}", | |
// kotlin反射 | |
"kt-reflect" : "org.jetbrains.kotlin:kotlin-reflect:${android["ktCoroutines"]}", | |
"kt-lifecycle-viewmodel" : "androidx.lifecycle:lifecycle-viewmodel-ktx:${android["lifecycle"]}", | |
"kt-lifecycle-livedata" : "androidx.lifecycle:lifecycle-livedata-ktx:${android["lifecycle"]}", | |
/*************************原生依赖*************************/ | |
"appcompat-v7" : "com.android.support:appcompat-v7:${android["androidSupportSdkVersion"]}", | |
"support-v4" : "com.android.support:support-v4:${android["androidSupportSdkVersion"]}", | |
"cardview-v7" : "com.android.support:cardview-v7:${android["androidSupportSdkVersion"]}", | |
"recyclerview-v7" : "com.android.support:recyclerview-v7:${android["androidSupportSdkVersion"]}", | |
"design" : "com.android.support:design:${android["androidSupportSdkVersion"]}", | |
"annotations" : "com.android.support:support-annotations:${android["androidSupportSdkVersion"]}", | |
"gridlayout-v7" : "com.android.support:gridlayout-v7:${android["androidSupportSdkVersion"]}", | |
"tv-provider" : "com.android.support:support-tv-provider:${android["androidSupportSdkVersion"]}", | |
"constraint-layout" : "com.android.support.constraint:constraint-layout:1.1.2", | |
"leanback" : "androidx.leanback:leanback:1.0.0", | |
"fragment" : "androidx.fragment:fragment:1.1.0", | |
"palette" : "androidx.palette:palette:1.0.0", | |
/*************************Jetpack*************************/ | |
// AndroidX: https://developer.android.google.cn/jetpack/androidx/versions | |
"androidx-appcompat" : "androidx.appcompat:appcompat:1.1.0", | |
"androidx-support-v4" : "androidx.legacy:legacy-support-v4:1.0.0", | |
"androidx-cardview" : "androidx.cardview:cardview:1.0.0", | |
"androidx-recyclerview" : "androidx.recyclerview:recyclerview:1.0.0", | |
"androidx-annotations" : "androidx.annotation:annotation:1.1.0", | |
"androidx-gridlayout" : "androidx.gridlayout:gridlayout:1.0.0", | |
"androidx-constraintlayout" : "androidx.constraintlayout:constraintlayout:1.1.3", | |
"androidx-navigation-fragment" : "androidx.navigation:navigation-fragment:${android["navigationVersion"]}", | |
"androidx-navigation-ui" : "androidx.navigation:navigation-ui:${android["navigationVersion"]}", | |
"androidx-lifecycle-extensions" : "androidx.lifecycle:lifecycle-extensions:${android["lifecycle"]}", | |
"androidx-lifecycle-compiler" : "androidx.lifecycle:lifecycle-compiler:${android["lifecycle"]}", | |
"androidx-lifecycle-reactivestreams": "androidx.lifecycle:lifecycle-reactivestreams:${android["lifecycle"]}", | |
"androidx-room-runtime" : "androidx.room:room-runtime:${android["room"]}", | |
"androidx-room-rxjava2" : "androidx.room:room-rxjava2:${android["room"]}", | |
"androidx-room-compiler" : "androidx.room:room-compiler:${android["room"]}", | |
// https://github.com/material-components/material-components-android | |
"material" : "com.google.android.material:material:1.0.0", | |
/*************************第三方依赖*************************/ | |
// https://github.com/square/retrofit | |
"retrofit2" : "com.squareup.retrofit2:retrofit:${android["retrofit2"]}", | |
"converter-scalars" : "com.squareup.retrofit2:converter-scalars:${android["retrofit2"]}", | |
"converter-gson" : "com.squareup.retrofit2:converter-gson:${android["retrofit2"]}", | |
"adapter-rxjava" : "com.squareup.retrofit2:adapter-rxjava:${android["retrofit2"]}", | |
"adapter-rxjava2" : "com.squareup.retrofit2:adapter-rxjava2:${android["retrofit2"]}", | |
// https://github.com/square/okhttp | |
"okhttp" : "com.squareup.okhttp3:okhttp:4.9.1", | |
"okhttp-logging" : "com.squareup.okhttp3:logging-interceptor:4.9.1", | |
// https://github.com/greenrobot/greenDAO | |
"greendao" : "org.greenrobot:greendao:3.2.2", | |
// https://github.com/yuweiguocn/GreenDaoUpgradeHelper | |
"greendao-helper" : "io.github.yuweiguocn:GreenDaoUpgradeHelper:2.2.1", | |
// https://github.com/bumptech/glide | |
"glide" : "com.github.bumptech.glide:glide:${android["glide"]}", | |
"glide-compiler" : "com.github.bumptech.glide:compiler:${android["glide"]}", | |
"glide-okhttp" : "com.github.bumptech.glide:okhttp3-integration:${android["glide"]}", | |
// https://github.com/square/picasso | |
"picasso" : "com.squareup.picasso:picasso:2.71828", | |
// https://github.com/facebook/fresco | |
"fresco" : "com.facebook.fresco:fresco:2.0.0", | |
// https://github.com/greenrobot/EventBus | |
"eventbus" : "org.greenrobot:eventbus:3.1.1", | |
// https://github.com/BuglyDevTeam/Bugly-Android | |
"bugly" : "com.tencent.bugly:crashreport:3.0.0", | |
"bugly-native" : "com.tencent.bugly:nativecrashreport:3.7.1", | |
"bulgy_tinker" : "com.tencent.tinker:tinker-android-lib:1.9.9", | |
"bugly_upgrade" : "com.tencent.bugly:crashreport_upgrade:1.3.7", | |
"multidex" : "com.android.support:multidex:1.0.1", | |
// https://bintray.com/android/android-utils/com.android.volley.volley | |
"volley" : "com.android.volley:volley:1.1.1", | |
// https://github.com/ReactiveX/RxJava | |
"rxjava" : "io.reactivex:rxjava:1.3.8", | |
"rxjava2" : "io.reactivex.rxjava2:rxjava:2.2.9", | |
"rxandroid" : "io.reactivex:rxandroid:2.1.1", | |
"rxandroid2" : 'io.reactivex.rxjava2:rxandroid:2.1.1', | |
// https://github.com/JakeWharton/RxBinding | |
"rxbinding" : 'com.jakewharton.rxbinding3:rxbinding-leanback:3.0.0', | |
// https://github.com/google/gson | |
"gson" : "com.google.code.gson:gson:2.8.5", | |
// https://github.com/alibaba/fastjson | |
"fastjson" : "com.alibaba:fastjson:1.1.70.android", | |
// https://github.com/apache/commons-lang | |
"commons-lang3" : "org.apache.commons:commons-lang3:3.9", | |
// https://github.com/apache/commons-net | |
"commons-net" : "commons-net:commons-net:3.8.0", | |
// https://github.com/square/leakcanary | |
"leakcanary" : "com.squareup.leakcanary:leakcanary-android:${android["leakcanary"]}", | |
// https://github.com/YoKeyword/Fragmentation | |
"fragmentation" : "me.yokeyword:fragmentation:1.3.7", | |
// https://github.com/DreaminginCodeZH/MaterialRatingBar | |
"materialratingbar" : "me.zhanghai.android.materialratingbar:library:1.3.2", | |
// https://github.com/airbnb/lottie-android,2.8.0+是为了兼容AndroidX,没有用到AndroidX,则使用版本2.7.0,否则莫名其妙会报错 | |
"lottie" : "com.airbnb.android:lottie:2.7.0", | |
// https://github.com/google/ExoPlayer,2.8.4+是为了兼容AndroidX | |
"exoplayer" : "com.google.android.exoplayer:exoplayer:${android["exoplayer"]}", | |
"exoplayer-core" : "com.google.android.exoplayer:exoplayer-core:${android["exoplayer"]}", | |
"exoplayer-dash" : "com.google.android.exoplayer:exoplayer-dash:${android["exoplayer"]}", | |
"exoplayer-hls" : "com.google.android.exoplayer:exoplayer-hls:${android["exoplayer"]}", | |
"exoplayer-smoothstreaming" : "com.google.android.exoplayer:exoplayer-smoothstreaming:${android["exoplayer"]}", | |
"exoplayer-ui" : "com.google.android.exoplayer:exoplayer-ui:${android["exoplayer"]}", | |
"exoplayer-extension-ima" : "com.google.android.exoplayer:extension-ima:${android["exoplayer"]}", | |
"exoplayer-extension-rtmp" : "com.google.android.exoplayer:extension-rtmp:${android["exoplayer"]}", | |
"exoplayer-extension-gvr" : "com.google.android.exoplayer:extension-gvr:2.15.1", | |
"exoplayer-extension-mediasession" : "com.google.android.exoplayer:extension-mediasession:${android["exoplayer"]}", | |
"exoplayer-extension-okhttp" : "com.google.android.exoplayer:extension-okhttp:${android["exoplayer"]}", | |
"exoplayer-extension-cast" : "com.google.android.exoplayer:extension-cast:${android["exoplayer"]}", | |
"exoplayer-extension-cronet" : "com.google.android.exoplayer:extension-cronet:${android["exoplayer"]}", | |
"exoplayer-extension-leanback" : "com.google.android.exoplayer:extension-leanback:${android["exoplayer"]}", | |
"exoplayer-extension-jobdispatcher" : "com.google.android.exoplayer:extension-jobdispatcher:${android["exoplayer"]}", | |
"exoplayer-extension-workmanager" : "com.google.android.exoplayer:extension-workmanager:${android["exoplayer"]}", | |
// https://www.alibabacloud.com/help/zh/apsaravideo-for-vod/latest/release-notes-of-apsaravideo-player-sdk-for-android | |
"aliyun-player" : 'com.aliyun.sdk.android:AliyunPlayer:5.4.6.0-full', | |
"alivc-conan" : 'com.alivc.conan:AlivcConan:0.9.5', | |
// https://github.com/videolan/vlc-android | |
// https://search.maven.org/artifact/org.videolan.android/libvlc-all | |
"vlc-player" : "org.videolan.android:libvlc-all:3.5.0-eap8", | |
// https://github.com/zaclimon/Tsutaeru | |
"xipl" : "com.zaclimon:xipl:0.2.2", | |
"tiflibrary" : "com.zaclimon:tiflibrary:0.2.2", | |
// https://github.com/SufficientlySecure/html-textview | |
"html-text" : "org.sufficientlysecure:html-textview:4.0", | |
// https://developers.google.com/youtube/android/player | |
// https://github.com/bertrandmartel/youtubetv.git | |
// https://github.com/VeiZhang/youtubetv | |
"youtubetv" : "com.excellence:youtubetv:1.0.4", | |
"smarttube" : "com.excellence:smarttube:1.1.2", | |
// https://github.com/averyzhong/SubtitleForAndroid | |
// https://github.com/VeiZhang/SubtitleForAndroid | |
"external-subtitle" : "com.excellence:external-subtitle:1.0.4", | |
"upgrader" : "com.excellence:upgrader:1.2.9", | |
"upgrader-pure" : "com.excellence:upgrader-pure:1.2.9", | |
"upgrader-downloader" : "com.tosmart:downloader:1.1.1", | |
"autodispose" : "com.uber.autodispose:autodispose:0.6.1", | |
"autodispose-android-arch" : "com.uber.autodispose:autodispose-android-archcomponents:0.6.1", | |
"zxing-core" : "com.google.zxing:core:3.4.1", | |
"xml-apis" : "xml-apis:xml-apis:2.0.2", | |
"jsch" : "com.jcraft:jsch:0.1.55", | |
/*************************个人依赖*************************/ | |
// https://github.com/VeiZhang/BaseToolsLibrary | |
"basetools" : "com.excellence:basetools:1.3.1-RC1", | |
// https://github.com/VeiZhang/Permission | |
"permission" : "com.excellence:permission:1.0.2", | |
// https://github.com/VeiZhang/RetrofitClient | |
"retrofit-client" : "com.excellence:retrofit:1.0.5", | |
"retrofit-client2" : "com.excellence.retrofit:retrofit2:2.0.0", | |
// https://github.com/VeiZhang/QSkinLoader | |
"skinloader" : "com.excellence:skinloader:1.2.2", | |
// https://github.com/VeiZhang/ToastKit | |
"toast" : "com.excellence:toast:1.1.0", | |
// https://github.com/VeiZhang/MailSender | |
"mailsender" : "com.excellence:mailsender:1.0.0", | |
// https://github.com/VeiZhang/Downloader | |
"downloader" : "com.excellence:downloader:1.2.0", | |
// https://github.com/VeiZhang/AppStatistics | |
"app-statistics" : "com.excellence:app-statistics:1.0.1", | |
// https://github.com/VeiZhang/AndroidExec | |
"exec" : "com.excellence:exec:1.1.2", | |
// https://github.com/VeiZhang/AndroidFFmpeg | |
"ffmpeg" : "com.excellence:ffmpeg:${android["ffmpeg"]}", | |
"ffmpeg-java" : "com.excellence:ffmpeg-java:${android["ffmpeg"]}", | |
"ffmpeg-armv7a" : "com.excellence:ffmpeg-armv7a:${android["ffmpeg"]}", | |
"ffmpeg-arm64-v8a" : "com.excellence:ffmpeg-arm64-v8a:${android["ffmpeg"]}", | |
"ffmpeg-x86" : "com.excellence:ffmpeg-x86:${android["ffmpeg"]}", | |
"ffmpeg-x86_64" : "com.excellence:ffmpeg-x86_64:${android["ffmpeg"]}", | |
"ffprobe-armv7a" : "com.excellence:ffprobe-armv7a:${android["ffmpeg"]}", | |
"ffprobe-arm64-v8a" : "com.excellence:ffprobe-arm64-v8a:${android["ffmpeg"]}", | |
"ffprobe-x86" : "com.excellence:ffprobe-x86:${android["ffmpeg"]}", | |
"ffprobe-x86_64" : "com.excellence:ffprobe-x86_64:${android["ffmpeg"]}", | |
// https://github.com/VeiZhang/ImageLoader | |
"imageloader" : "com.excellence:imageloader:${android["imageloader"]}", | |
"imageloader-fresco" : "com.excellence:imageloader-fresco:${android["imageloader"]}", | |
"imageloader-picasso" : "com.excellence:imageloader-picasso:${android["imageloader"]}", | |
"imageloader-glide" : "com.excellence:imageloader-glide:${android["imageloader"]}", | |
// http://192.168.1.239/common_library/timeshift | |
"timeshift" : "com.excellence:timeshift:2.0.6", | |
// https://github.com/orhanobut/logger | |
"logger" : "com.orhanobut:logger:2.2.0", | |
"work" : "androidx.work:work-runtime:2.3.3", | |
"work-rxjava2" : "androidx.work:work-rxjava2:2.3.3", | |
"guava" : "com.google.guava:guava:28.1-android", | |
// https://github.com/Dimezis/BlurView | |
"blurview" : "com.eightbitlab:blurview:1.6.3", | |
// https://github.com/SufficientlySecure/html-textview | |
"html-textview" : "org.sufficientlysecure:html-textview:3.9", | |
// https://github.com/VeiZhang/DIY-EpgView (Discard) | |
"diy-epgview" : "com.excellence:diy-epgview:1.0.2", | |
// http://192.168.1.232:10001/widget/LeanbackEpgView (Discard) | |
"leanbackepgview" : "com.excellence:leanback-epgview:1.0", | |
// http://192.168.1.232:10001/widget/epgview | |
"epgview" : "com.excellence:epgview:2.8", | |
// https://github.com/VeiZhang/OpenSubtitle | |
"open-subtitles" : "com.excellence:open-subtitles:1.0.0", | |
// https://github.com/NanoHttpd/nanohttpd | |
"nanohttpd" : "org.nanohttpd:nanohttpd:2.3.1" | |
] | |
} | |
/***********************APP版本控制的通用方法***********************/ | |
/** | |
* svn | |
* 直接读取svn版本号作为版本控制 | |
*/ | |
/** | |
* git | |
* | |
* git tag作为版本名称 | |
* git 版本号有两种方法 | |
* ①一种是把提交次数作为versionCode | |
* ②另外一种是把tag的数量作为versionCode | |
*/ | |
/** | |
* 获取版本 | |
* @return | |
*/ | |
def getVersionName() { | |
def date = getDate() | |
def version = getSvnVersionCode() | |
if (version != 0) { | |
return "1.0.${version} [${date}]" | |
} | |
version = getGitTag() | |
if (version != 0) { | |
return "${version} [${date}]" | |
} | |
if (version == 0) { | |
version = 1 | |
} | |
/** | |
* 错误的版本信息,请检查 | |
*/ | |
return "0.${version} [${date}]" | |
} | |
/** | |
* 获取版本号 | |
* @return | |
*/ | |
def getVersionCode() { | |
def versionCode = getSvnVersionCode() | |
if (versionCode == 0) { | |
versionCode = getGitVersionCode() | |
} | |
if (versionCode == 0) { | |
versionCode = 1 | |
} | |
return versionCode | |
} | |
/***********************读取Git信息***********************/ | |
/** | |
* 读取当前分支最近的一次git tag | |
* @return tag | |
*/ | |
def getGitTag() { | |
try { | |
def process = ("git describe --abbrev=0 --tags").execute() | |
def tag = process.text.trim() | |
return tag | |
} catch (e) { | |
println e.getMessage() | |
} | |
return 0 | |
} | |
/** | |
* HEAD所在的分支,以git提交的数量作为其版本号 | |
* @return git提交的数量 | |
*/ | |
def getGitVersionCode() { | |
try { | |
def process = ("git rev-list --count HEAD").execute() | |
def version = process.text.trim().toInteger() | |
return version | |
} catch (e) { | |
println e.getMessage() | |
} | |
return 0 | |
} | |
/***********************读取SVN信息***********************/ | |
/** | |
* 根据svn提交版本生成版本号 | |
* @return | |
*/ | |
def getSvnVersionCode() { | |
try { | |
def process = ("svnversion -c " + getBuildDir().parent).execute() | |
process.waitFor() | |
def version = process.in.text | |
Pattern pattern = Pattern.compile("(\\d+:)?(\\d+)\\D") | |
Matcher matcher = pattern.matcher(version) | |
if (matcher.find()) { | |
version = matcher.group(matcher.groupCount()) | |
} | |
return Integer.parseInt(version) | |
} catch (e) { | |
println e.getMessage() | |
} | |
return 0 | |
} | |
/** | |
* 获取日期 | |
* @return | |
*/ | |
def getDate() { | |
String date = new SimpleDateFormat("MMddyyyy").format(new Date()) | |
return date | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment