diff --git a/app/build.gradle b/app/build.gradle index d5f28629..ed2295f0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,276 +1,276 @@ -plugins { - id 'com.android.application' - id 'kotlin-android' - id 'kotlin-kapt' - id 'kotlin-parcelize' - id 'img-optimizer' - id 'com.yanzhenjie.andserver' -} - -def keyProps = new Properties() -def keyPropsFile = rootProject.file('keystore/keystore.properties') -if (keyPropsFile.exists()) { - keyProps.load(new FileInputStream(keyPropsFile)) -} - -//打包时,记得设置true启用 -if (isNeedPackage.toBoolean() && isUseBooster.toBoolean()) { - apply plugin: 'com.didiglobal.booster' -} - -android { - //noinspection GradleDependency - buildToolsVersion build_versions.build_tools - compileSdkVersion build_versions.target_sdk - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - buildFeatures { - viewBinding true - } - - defaultConfig { - applicationId "com.idormy.sms.forwarder" - minSdkVersion build_versions.min_sdk - targetSdkVersion build_versions.target_sdk - versionCode build_versions.version_code - versionName build_versions.version_name - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - multiDexEnabled true - vectorDrawables.useSupportLibrary = true - - javaCompileOptions { - annotationProcessorOptions { - arguments = [moduleName: project.getName()] - } - } - - ndk { - abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' - } - } - - signingConfigs { - release { - keyAlias keyProps['keyAlias'] - keyPassword keyProps['keyPassword'] - storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null - storePassword keyProps['storePassword'] - } - debug { - keyAlias keyProps['keyAlias'] - keyPassword keyProps['keyPassword'] - storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null - storePassword keyProps['storePassword'] - } - } - - buildTypes { - release { - minifyEnabled true - shrinkResources true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - if (isNeedPackage.toBoolean()) { - signingConfig signingConfigs.release - if (file('local.properties').exists()) { - Properties properties = new Properties() - properties.load(project.rootProject.file('local.properties').newDataInputStream()) - def appID = properties.getProperty("APP_ID_UMENG") - if (appID != null) { - buildConfigField "String", "APP_ID_UMENG", appID - } else { - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } else { - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } else { - signingConfig signingConfigs.debug - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } - debug { - minifyEnabled true - shrinkResources true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - if (isNeedPackage.toBoolean()) { - signingConfig signingConfigs.release - if (file('local.properties').exists()) { - Properties properties = new Properties() - properties.load(project.rootProject.file('local.properties').newDataInputStream()) - def appID = properties.getProperty("APP_ID_UMENG") - if (appID != null) { - buildConfigField "String", "APP_ID_UMENG", appID - } else { - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } else { - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } else { - signingConfig signingConfigs.debug - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - } - } - /*debug { - debuggable true - minifyEnabled false - - signingConfig signingConfigs.debug - buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' - }*/ - } - - //ABI配置——按CPU架构分别打包 - splits { - abi { - enable true - reset() - include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' - universalApk true - } - } - def abiCodes = ['universal': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'x86': 4, 'x86_64': 5] - packagingOptions { - //去除FrpcLib的so,用时下载并动态加载 - if (isNeedPackage.toBoolean()) { - exclude 'lib/armeabi-v7a/libgojni.so' - exclude 'lib/arm64-v8a/libgojni.so' - exclude 'lib/x86/libgojni.so' - exclude 'lib/x86_64/libgojni.so' - } - resources { - pickFirst 'META-INF/LICENSE.md' - pickFirst 'META-INF/NOTICE.md' - excludes += ['META-INF/DEPENDENCIES.txt', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/DEPENDENCIES', 'META-INF/notice.txt', 'META-INF/license.txt', 'META-INF/dependencies.txt', 'META-INF/LGPL2.1'] - } - } - android.applicationVariants.all { variant -> - // Assigns a different version code for each output APK. - variant.outputs.each { - output -> - def date = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08")) - //noinspection GrDeprecatedAPIUsage - def abiName = output.getFilter(com.android.build.OutputFile.ABI) - if (abiName == null) abiName = "universal" - output.versionCodeOverride = abiCodes.get(abiName, 0) * 100000 + variant.versionCode - output.outputFileName = "SmsForwarder_${variant.name}_${versionName}_${output.versionCode}_${date}_${abiName}.apk" - } - } - - - sourceSets { - main { - jniLibs.srcDirs = ['libs'] - } - } - lint { - abortOnError false - } - namespace 'com.idormy.sms.forwarder' - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - //frpc - implementation files('libs/frpclib.aar') - - testImplementation deps.junit - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation deps.espresso.core - - implementation 'androidx.core:core-ktx:1.9.0' - implementation "androidx.activity:activity-ktx:1.6.0" - implementation "androidx.fragment:fragment-ktx:1.5.3" - implementation "androidx.cardview:cardview:1.0.0" - implementation 'androidx.appcompat:appcompat:1.5.1' - implementation 'androidx.preference:preference-ktx:1.2.0' - - //分包 - implementation deps.androidx.multidex - - //vLayout:https://github.com/alibaba/vlayout - implementation 'com.alibaba.android:vlayout:1.3.0' - //下拉刷新 - implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-header:1.1.5' - implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-layout:1.1.5' - //WebView - implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0' - implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填 - //腾讯的键值对存储mmkv:https://github.com/Tencent/MMKV - implementation 'com.tencent:mmkv:1.2.14' - //屏幕适配AutoSize:https://github.com/JessYanCoding/AndroidAutoSize - implementation 'me.jessyan:autosize:1.2.1' - //umeng统计 - implementation 'com.umeng.umsdk:common:9.5.2' - implementation 'com.umeng.umsdk:asms:1.6.3' - - //预加载占位控件 - implementation 'me.samlss:broccoli:1.0.0' - - //RichText:https://github.com/zzhoujay/RichText - implementation 'com.zzhoujay.richtext:richtext:3.0.8' - - //美团多渠道打包 - //implementation 'com.meituan.android.walle:library:1.1.6' - - api("androidx.work:work-multiprocess:2.7.1") - api("androidx.work:work-runtime-ktx:2.7.1") - - //Android Room - def room_version = '2.4.3' - implementation "androidx.room:room-ktx:$room_version" - implementation "androidx.room:room-runtime:$room_version" - implementation "androidx.room:room-paging:$room_version" - implementation "androidx.room:room-rxjava2:$room_version" - kapt "androidx.room:room-compiler:$room_version" - - //CodeView:https://github.com/AmrDeveloper/CodeView - implementation 'com.github.AmrDeveloper:CodeView:1.3.5' - - //LiveEventBus:https://github.com/JeremyLiao/LiveEventBus - implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0' - - //MarkdownView:https://github.com/tiagohm/MarkdownView - implementation 'com.github.tiagohm.MarkdownView:library:0.19.0' - implementation 'com.github.tiagohm.MarkdownView:emoji:0.19.0' - - def retrofit2_version = '2.9.0' - implementation "com.squareup.retrofit2:retrofit:$retrofit2_version" - implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version" - implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit2_version" - - def paging_version = "3.1.1" - implementation "androidx.paging:paging-runtime-ktx:$paging_version" - // alternatively - without Android dependencies for tests - testImplementation "androidx.paging:paging-common-ktx:$paging_version" - - //权限请求框架:https://github.com/getActivity/XXPermissions - implementation 'com.github.getActivity:XXPermissions:16.2' - - def mail_version = '1.6.7' - implementation "com.sun.mail:android-mail:$mail_version" - implementation "com.sun.mail:android-activation:$mail_version" - - //Android Keep Alive(安卓保活),Cactus 集成双进程前台服务,JobScheduler,onePix(一像素),WorkManager,无声音乐 - //https://github.com/gyf-dev/Cactus - implementation 'com.gyf.cactus:cactus:1.1.3-beta13' - - //HTTP服务器:https://github.com/yanzhenjie/AndServer - implementation 'cn.ppps.andserver:api:2.1.11' - kapt 'cn.ppps.andserver:processor:2.1.11' - - //国密算法SM4 的JAVA实现(基于BC实现) - api "org.bouncycastle:bcprov-jdk15on:1.69" -} -//自动添加X-Library依赖 -apply from: 'x-library.gradle' -//walle多渠道打包 -//apply from: 'multiple-channel.gradle' - - +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-kapt' + id 'kotlin-parcelize' + id 'img-optimizer' + id 'com.yanzhenjie.andserver' +} + +def keyProps = new Properties() +def keyPropsFile = rootProject.file('keystore/keystore.properties') +if (keyPropsFile.exists()) { + keyProps.load(new FileInputStream(keyPropsFile)) +} + +//打包时,记得设置true启用 +if (isNeedPackage.toBoolean() && isUseBooster.toBoolean()) { + apply plugin: 'com.didiglobal.booster' +} + +android { + //noinspection GradleDependency + buildToolsVersion build_versions.build_tools + compileSdkVersion build_versions.target_sdk + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + buildFeatures { + viewBinding true + } + + defaultConfig { + applicationId "com.idormy.sms.forwarder" + minSdkVersion build_versions.min_sdk + targetSdkVersion build_versions.target_sdk + versionCode build_versions.version_code + versionName build_versions.version_name + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + multiDexEnabled true + vectorDrawables.useSupportLibrary = true + + javaCompileOptions { + annotationProcessorOptions { + arguments = [moduleName: project.getName()] + } + } + + ndk { + abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + } + } + + signingConfigs { + release { + keyAlias keyProps['keyAlias'] + keyPassword keyProps['keyPassword'] + storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null + storePassword keyProps['storePassword'] + } + debug { + keyAlias keyProps['keyAlias'] + keyPassword keyProps['keyPassword'] + storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null + storePassword keyProps['storePassword'] + } + } + + buildTypes { + release { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + if (isNeedPackage.toBoolean()) { + signingConfig signingConfigs.release + if (file('local.properties').exists()) { + Properties properties = new Properties() + properties.load(project.rootProject.file('local.properties').newDataInputStream()) + def appID = properties.getProperty("APP_ID_UMENG") + if (appID != null) { + buildConfigField "String", "APP_ID_UMENG", appID + } else { + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } else { + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } else { + signingConfig signingConfigs.debug + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } + debug { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + if (isNeedPackage.toBoolean()) { + signingConfig signingConfigs.release + if (file('local.properties').exists()) { + Properties properties = new Properties() + properties.load(project.rootProject.file('local.properties').newDataInputStream()) + def appID = properties.getProperty("APP_ID_UMENG") + if (appID != null) { + buildConfigField "String", "APP_ID_UMENG", appID + } else { + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } else { + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } else { + signingConfig signingConfigs.debug + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + } + } + /*debug { + debuggable true + minifyEnabled false + + signingConfig signingConfigs.debug + buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"' + }*/ + } + + //ABI配置——按CPU架构分别打包 + splits { + abi { + enable true + reset() + include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + universalApk true + } + } + def abiCodes = ['universal': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'x86': 4, 'x86_64': 5] + packagingOptions { + //去除FrpcLib的so,用时下载并动态加载 + if (isNeedPackage.toBoolean()) { + exclude 'lib/armeabi-v7a/libgojni.so' + exclude 'lib/arm64-v8a/libgojni.so' + exclude 'lib/x86/libgojni.so' + exclude 'lib/x86_64/libgojni.so' + } + resources { + pickFirst 'META-INF/LICENSE.md' + pickFirst 'META-INF/NOTICE.md' + excludes += ['META-INF/DEPENDENCIES.txt', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/DEPENDENCIES', 'META-INF/notice.txt', 'META-INF/license.txt', 'META-INF/dependencies.txt', 'META-INF/LGPL2.1'] + } + } + android.applicationVariants.all { variant -> + // Assigns a different version code for each output APK. + variant.outputs.each { + output -> + def date = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08")) + //noinspection GrDeprecatedAPIUsage + def abiName = output.getFilter(com.android.build.OutputFile.ABI) + if (abiName == null) abiName = "universal" + output.versionCodeOverride = abiCodes.get(abiName, 0) * 100000 + variant.versionCode + output.outputFileName = "SmsForwarder_${variant.name}_${versionName}_${output.versionCode}_${date}_${abiName}.apk" + } + } + + + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + } + } + lint { + abortOnError false + } + namespace 'com.idormy.sms.forwarder' + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + //frpc + implementation files('libs/frpclib.aar') + + testImplementation deps.junit + androidTestImplementation 'androidx.test.ext:junit:1.1.4' + androidTestImplementation deps.espresso.core + + implementation 'androidx.core:core-ktx:1.9.0' + implementation "androidx.activity:activity-ktx:1.6.1" + implementation "androidx.fragment:fragment-ktx:1.5.4" + implementation "androidx.cardview:cardview:1.0.0" + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.preference:preference-ktx:1.2.0' + + //分包 + implementation deps.androidx.multidex + + //vLayout:https://github.com/alibaba/vlayout + implementation 'com.alibaba.android:vlayout:1.3.0' + //下拉刷新 + implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-header:1.1.5' + implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-layout:1.1.5' + //WebView + implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0' + implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填 + //腾讯的键值对存储mmkv:https://github.com/Tencent/MMKV + implementation 'com.tencent:mmkv:1.2.15' + //屏幕适配AutoSize:https://github.com/JessYanCoding/AndroidAutoSize + implementation 'me.jessyan:autosize:1.2.1' + //umeng统计 + implementation 'com.umeng.umsdk:common:9.5.4' + implementation 'com.umeng.umsdk:asms:1.6.3' + + //预加载占位控件 + implementation 'me.samlss:broccoli:1.0.0' + + //RichText:https://github.com/zzhoujay/RichText + implementation 'com.zzhoujay.richtext:richtext:3.0.8' + + //美团多渠道打包 + //implementation 'com.meituan.android.walle:library:1.1.6' + + api("androidx.work:work-multiprocess:2.7.1") + api("androidx.work:work-runtime-ktx:2.7.1") + + //Android Room + def room_version = '2.4.3' + implementation "androidx.room:room-ktx:$room_version" + implementation "androidx.room:room-runtime:$room_version" + implementation "androidx.room:room-paging:$room_version" + implementation "androidx.room:room-rxjava2:$room_version" + kapt "androidx.room:room-compiler:$room_version" + + //CodeView:https://github.com/AmrDeveloper/CodeView + implementation 'com.github.AmrDeveloper:CodeView:1.3.7' + + //LiveEventBus:https://github.com/JeremyLiao/LiveEventBus + implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0' + + //MarkdownView:https://github.com/tiagohm/MarkdownView + implementation 'com.github.tiagohm.MarkdownView:library:0.19.0' + implementation 'com.github.tiagohm.MarkdownView:emoji:0.19.0' + + def retrofit2_version = '2.9.0' + implementation "com.squareup.retrofit2:retrofit:$retrofit2_version" + implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version" + implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit2_version" + + def paging_version = "3.1.1" + implementation "androidx.paging:paging-runtime-ktx:$paging_version" + // alternatively - without Android dependencies for tests + testImplementation "androidx.paging:paging-common-ktx:$paging_version" + + //权限请求框架:https://github.com/getActivity/XXPermissions + implementation 'com.github.getActivity:XXPermissions:16.6' + + def mail_version = '1.6.7' + implementation "com.sun.mail:android-mail:$mail_version" + implementation "com.sun.mail:android-activation:$mail_version" + + //Android Keep Alive(安卓保活),Cactus 集成双进程前台服务,JobScheduler,onePix(一像素),WorkManager,无声音乐 + //https://github.com/gyf-dev/Cactus + implementation 'com.gyf.cactus:cactus:1.1.3-beta13' + + //HTTP服务器:https://github.com/yanzhenjie/AndServer + implementation 'cn.ppps.andserver:api:2.1.11' + kapt 'cn.ppps.andserver:processor:2.1.11' + + //国密算法SM4 的JAVA实现(基于BC实现) + api 'org.bouncycastle:bcprov-jdk15on:1.70' +} +//自动添加X-Library依赖 +apply from: 'x-library.gradle' +//walle多渠道打包 +//apply from: 'multiple-channel.gradle' + + diff --git a/build.gradle b/build.gradle index aea894ef..e2f6ba45 100644 --- a/build.gradle +++ b/build.gradle @@ -1,51 +1,51 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - apply from: './versions.gradle' - addRepos(repositories) //增加代码仓库 - dependencies { - classpath deps.android_gradle_plugin - classpath deps.android_maven_gradle_plugin - //图片压缩 - classpath 'com.chenenyu:img-optimizer:1.2.0' - //美团多渠道打包 - classpath 'com.meituan.android.walle:plugin:1.1.6' - //滴滴的质量优化框架 - if (isNeedPackage.toBoolean() && isUseBooster.toBoolean()) { - classpath deps.booster.gradle_plugin - classpath deps.booster.task_processed_res - classpath deps.booster.task_resource_deredundancy - } - //AndServer - classpath 'cn.ppps.andserver:plugin:2.1.11' - } -} - -//allprojects { -// addRepos(repositories) -//} - -allprojects { - repositories { - google() - mavenCentral() - maven { url 'https://maven.aliyun.com/repository/google' } - maven { url 'https://maven.aliyun.com/repository/central' } - maven { url 'https://maven.aliyun.com/repository/public' } - maven { url 'https://repo1.maven.org/maven2/' } - maven { url 'https://oss.sonatype.org/content/repositories/public' } - maven { url "https://jitpack.io" } - } -} - -task clean(type: Delete) { - delete rootProject.buildDir - - FileTree tree = fileTree(dir: rootProject.getRootDir()) - tree.each { File file -> - if (file.toString().contains("ajcore") && file.toString().endsWith(".txt")) { - delete file - } - } -} - +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + apply from: './versions.gradle' + addRepos(repositories) //增加代码仓库 + dependencies { + classpath "com.android.tools.build:gradle:$versions.android_gradle_plugin" + classpath deps.android_maven_gradle_plugin + //图片压缩 + classpath 'com.chenenyu:img-optimizer:1.2.0' + //美团多渠道打包 + classpath 'com.meituan.android.walle:plugin:1.1.6' + //滴滴的质量优化框架 + if (isNeedPackage.toBoolean() && isUseBooster.toBoolean()) { + classpath deps.booster.gradle_plugin + classpath deps.booster.task_processed_res + classpath deps.booster.task_resource_deredundancy + } + //AndServer + classpath 'cn.ppps.andserver:plugin:2.1.11' + } +} + +//allprojects { +// addRepos(repositories) +//} + +allprojects { + repositories { + google() + mavenCentral() + maven { url 'https://maven.aliyun.com/repository/google' } + maven { url 'https://maven.aliyun.com/repository/central' } + maven { url 'https://maven.aliyun.com/repository/public' } + maven { url 'https://repo1.maven.org/maven2/' } + maven { url 'https://oss.sonatype.org/content/repositories/public' } + maven { url "https://jitpack.io" } + } +} + +task clean(type: Delete) { + delete rootProject.buildDir + + FileTree tree = fileTree(dir: rootProject.getRootDir()) + tree.each { File file -> + if (file.toString().contains("ajcore") && file.toString().endsWith(".txt")) { + delete file + } + } +} + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8d3ded4a..4edd971f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jun 28 16:23:16 CST 2019 +#Fri Jan 20 10:28:07 CST 2023 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/versions.gradle b/versions.gradle index 77159fe4..1b97b01a 100644 --- a/versions.gradle +++ b/versions.gradle @@ -30,9 +30,9 @@ versions.rxandroid = "2.1.1" versions.rxbinding = "2.2.0" versions.butterknife = "10.2.3" versions.runner = "1.4.0" -versions.gson = "2.9.1" //https://github.com/google/gson +versions.gson = "2.10.1" //https://github.com/google/gson versions.okhttp3 = "3.12.13" //不可升级,为了支持 API 19 -versions.leakcanary = "2.9.1" //https://github.com/square/leakcanary +versions.leakcanary = "2.10" //https://github.com/square/leakcanary versions.lifecycle = "2.2.0" versions.kotlin = '1.6.21'