From 6169310e9ddb4b6585064366ec2b070879c41645 Mon Sep 17 00:00:00 2001 From: wseemann Date: Tue, 11 Oct 2022 23:17:55 -0700 Subject: [PATCH] - Upgrade project to Android API 33 - Added Android X support - Update project to Gradle 7.4 - Update to use maven publishing - Move HttpUtils out of library to avoid Unsafe SSL TrustManager and Unsafe HostnameVerifier Google Play warnings - Upgrade to OkHttp 4.10.0 --- build.gradle | 17 ++--- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 6 +- okhttputils/build.gradle | 70 +++++++++++++------ publishing.gradle | 20 ++++++ sample-okhttp/build.gradle | 26 +++---- sample-okhttp/src/main/AndroidManifest.xml | 10 +-- .../com/zhy/sample_okhttp}/HttpsUtils.java | 13 +--- .../com/zhy/sample_okhttp/MainActivity.java | 3 +- .../com/zhy/sample_okhttp/MyApplication.java | 1 - settings.gradle | 19 ++++- 11 files changed, 125 insertions(+), 64 deletions(-) create mode 100644 publishing.gradle rename {okhttputils/src/main/java/com/zhy/http/okhttp/https => sample-okhttp/src/main/java/com/zhy/sample_okhttp}/HttpsUtils.java (95%) diff --git a/build.gradle b/build.gradle index ddc3d23..6dd6122 100644 --- a/build.gradle +++ b/build.gradle @@ -1,23 +1,24 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - repositories { - jcenter() - - } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' - classpath 'com.novoda:bintray-release:0.3.4' - + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } +plugins { + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false + id 'org.jetbrains.kotlin.android' version '1.7.10' apply false +} + allprojects { repositories { - jcenter() + google() + mavenCentral() maven { url "https://www.jitpack.io" } } } diff --git a/gradle.properties b/gradle.properties index 1d3591c..e3164b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,6 @@ # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true + +android.useAndroidX=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 56c50dd..c6488eb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jun 01 11:58:20 GMT+08:00 2016 +#Tue Oct 11 16:36:34 PDT 2022 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/okhttputils/build.gradle b/okhttputils/build.gradle index 015912f..abdc547 100644 --- a/okhttputils/build.gradle +++ b/okhttputils/build.gradle @@ -1,16 +1,18 @@ -apply plugin: 'com.android.library' -apply plugin: 'com.novoda.bintray-release'//添加 +plugins { + id 'com.android.library' +} +apply from: "$rootProject.projectDir/publishing.gradle" android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 33 + buildToolsVersion "33.0.0" defaultConfig { - minSdkVersion 9 - targetSdkVersion 23 + minSdkVersion 14 + targetSdkVersion 33 versionCode 1 - versionName "1.0" + versionName "2.6.3" } buildTypes { release { @@ -23,9 +25,11 @@ android { warning 'InvalidPackage' } + publishing { + singleVariant('release') + } } - task clearJar(type: Delete) { delete 'build/outputs/okhttputils.jar' } @@ -39,20 +43,46 @@ task makeJar(type: Copy) { makeJar.dependsOn(clearJar, build) +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + from components.release + groupId = 'com.zhy' + artifactId = 'okhttputils' + version = "$project.android.defaultConfig.versionName" -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.squareup.okhttp3:okhttp:3.3.1' + pom { + name = 'okhttputils' + description = 'Oh hi, this is a nice description for a project, right?' + url = 'https://github.com/hongyangAndroid/okhttputils' + packaging = 'aar' + licenses { + license { + name = 'Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0' + distribution = 'repo' + } + } + developers { + developer { + id = 'hongyangandroid' + name = 'Hongyang Android' + } + } + scm { + connection = 'scm:hg:https://github.com/hongyangAndroid/okhttputils' + developerConnection = 'scm:hg:https://github.com/hongyangAndroid/okhttputils' + url = 'https://github.com/hongyangAndroid/okhttputils' + } + } + } + } + } } -//添加 -publish { - userOrg = 'hongyangandroid'//bintray.com用户名 - groupId = 'com.zhy'//jcenter上的路径 - artifactId = 'okhttputils'//项目名称 - publishVersion = '2.6.2'//版本号 - desc = 'Oh hi, this is a nice description for a project, right?' - website = 'https://github.com/hongyangAndroid/okhttp-utils' +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.squareup.okhttp3:okhttp:4.10.0' } - diff --git a/publishing.gradle b/publishing.gradle new file mode 100644 index 0000000..16d7b11 --- /dev/null +++ b/publishing.gradle @@ -0,0 +1,20 @@ +apply plugin: 'maven-publish' +apply plugin: 'signing' + +publishing { + repositories { + // Enter bintray.com info here + /*maven { + name "sonatype" + url "https://oss.sonatype.org/service/local/staging/deploy/maven2" + credentials { + username = project.properties["sonatype_username"] + password = project.properties["sonatype_password"] + } + }*/ + } +} + +signing { + sign publishing.publications +} \ No newline at end of file diff --git a/sample-okhttp/build.gradle b/sample-okhttp/build.gradle index 0e6e0ad..31d5c96 100644 --- a/sample-okhttp/build.gradle +++ b/sample-okhttp/build.gradle @@ -1,13 +1,15 @@ -apply plugin: 'com.android.application' +plugins { + id 'com.android.application' +} android { - compileSdkVersion 22 - buildToolsVersion "22.0.1" + compileSdkVersion 33 + buildToolsVersion "33.0.0" defaultConfig { applicationId "com.zhy.sample_okhttp" - minSdkVersion 10 - targetSdkVersion 22 + minSdkVersion 14 + targetSdkVersion 33 versionCode 1 versionName "1.0" } @@ -25,11 +27,11 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.2.1' - compile project(':okhttputils') -// compile 'com.zhy:okhttputils:2.6.1' - compile 'com.google.code.gson:gson:2.3.1' - compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0' - compile 'com.github.franmontiel:PersistentCookieJar:v0.9.3' + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation project(':okhttputils') + + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0' + implementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1' } diff --git a/sample-okhttp/src/main/AndroidManifest.xml b/sample-okhttp/src/main/AndroidManifest.xml index 139a927..964bf1f 100644 --- a/sample-okhttp/src/main/AndroidManifest.xml +++ b/sample-okhttp/src/main/AndroidManifest.xml @@ -2,20 +2,20 @@ - - + + + android:theme="@style/AppTheme" + android:usesCleartextTraffic="true"> - android:theme="@style/AppTheme" > + android:exported="true"> diff --git a/okhttputils/src/main/java/com/zhy/http/okhttp/https/HttpsUtils.java b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/HttpsUtils.java similarity index 95% rename from okhttputils/src/main/java/com/zhy/http/okhttp/https/HttpsUtils.java rename to sample-okhttp/src/main/java/com/zhy/sample_okhttp/HttpsUtils.java index 513e884..0b31ad8 100644 --- a/okhttputils/src/main/java/com/zhy/http/okhttp/https/HttpsUtils.java +++ b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/HttpsUtils.java @@ -1,4 +1,4 @@ -package com.zhy.http.okhttp.https; +package com.zhy.sample_okhttp; import java.io.IOException; import java.io.InputStream; @@ -11,11 +11,9 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import javax.net.ssl.HostnameVerifier; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; @@ -64,15 +62,6 @@ public static SSLParams getSslSocketFactory(InputStream[] certificates, InputStr } } - private class UnSafeHostnameVerifier implements HostnameVerifier - { - @Override - public boolean verify(String hostname, SSLSession session) - { - return true; - } - } - private static class UnSafeTrustManager implements X509TrustManager { @Override diff --git a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java index ec7fb40..a3508d8 100644 --- a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java +++ b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MainActivity.java @@ -3,7 +3,6 @@ import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; -import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.ImageView; @@ -11,6 +10,8 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; + import com.google.gson.Gson; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.BitmapCallback; diff --git a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MyApplication.java b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MyApplication.java index 581ca0e..04fb29d 100644 --- a/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MyApplication.java +++ b/sample-okhttp/src/main/java/com/zhy/sample_okhttp/MyApplication.java @@ -7,7 +7,6 @@ import com.franmontiel.persistentcookiejar.cache.SetCookieCache; import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; import com.zhy.http.okhttp.OkHttpUtils; -import com.zhy.http.okhttp.https.HttpsUtils; import com.zhy.http.okhttp.log.LoggerInterceptor; import java.util.concurrent.TimeUnit; diff --git a/settings.gradle b/settings.gradle index 686d3c5..2118d54 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,18 @@ -include ':okhttputils', ':sample-okhttp' +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +/*dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +}*/ + + +include ':okhttputils' +include ':sample-okhttp'