From 52da1275de177484b7d512790d9fa03de523923b Mon Sep 17 00:00:00 2001 From: hewind <654313702@qq.com> Date: Thu, 22 Sep 2022 18:47:46 +0800 Subject: [PATCH] =?UTF-8?q?httptools=E5=8F=91=E5=B8=831.1.0=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 17 ++++++++++++++--- app/cymg_cy_key | Bin 0 -> 2065 bytes app/src/main/AndroidManifest.xml | 12 +++++++----- .../com/example/myhttputils/MainActivity.java | 11 ++++++----- gradle.properties | 5 +++-- httptools/build.gradle | 17 ++++++++++++++--- httptools/jar/httptools-v1.1.0.jar | Bin 0 -> 13674 bytes 7 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 app/cymg_cy_key create mode 100644 httptools/jar/httptools-v1.1.0.jar diff --git a/app/build.gradle b/app/build.gradle index 451eb35..beae6fd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,8 +3,16 @@ plugins { } android { - compileSdkVersion 31 - buildToolsVersion '31.0.0' + signingConfigs { + release { + storeFile file('cymg_cy_key') + storePassword 'cymgsdk' + keyAlias 'cymgsdk' + keyPassword 'cymgsdk' + } + } + compileSdkVersion 30 + buildToolsVersion '30.0.3' defaultConfig { applicationId "com.example.myhttputils" @@ -12,6 +20,7 @@ android { targetSdkVersion 30 versionCode 1 versionName "1.0" + signingConfig signingConfigs.release } @@ -19,6 +28,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } compileOptions { @@ -29,5 +39,6 @@ android { dependencies { implementation project(path: ':httptools') - implementation 'androidx.appcompat:appcompat:1.4.0' +// implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.android.support:appcompat-v7:28.0.0' } \ No newline at end of file diff --git a/app/cymg_cy_key b/app/cymg_cy_key new file mode 100644 index 0000000000000000000000000000000000000000..667aba7dc69a34d728682261af6d3bc50c26207a GIT binary patch literal 2065 zcmV+s2=4d(?f&fm0006200031000312V;3{XLDq00003-`Xj6)000F7FoFdBFb)O^ zD+U1s0V)C!0RaU71cC(WD^zm@PzLHrq7%ru#V;t21TNz8)iPBesHb6t-9@V?1@tv(v&&{jF#N%Ip&(dY*W<() zn^unBGk?TL|D_WnjU2idX9`P1P`^*4kx!GxBN!E5JLw7M8{z{WAV9sltBSh6+y$D3 z<>Px>v#Aj*v_S3eaUPQu8IN#41(UHmTAZ#@zT-voVn9>2GFc?*0kQ$)#f=FXz+ga) z)T>xi9KPy=3M9VzgW#&z5KRJMj1>*7RVLbGwt}#a&vN}>9^4+>ucIx5{u(jat~r^PQDl_pJjVDroIHtzY)`85Ef7m(8;|TXcRImE**{#m)|?qWiGBV6u&2{P zWMBs?$?*?^-+NX;4D6+L4vI5*O#^{Me17*96Bq^wpdy9;M)k_z%{$jQ45u{+S@}jT z&o1ixq=tWhWkF@VPKwYa*{YI%fMwBST}`>ZzKmi*A9Q(1e|5d08X@3J`#U}VHs>(i zW08Y|NZNoGjnr`{zN;Dw{4#T-H-(ZFXau%?&tzk#7rThy)!5T-qCQ0x7bmq1mzE;{ zp*$e0tUpP#c$3_~T_+t)*}GbPEjSvhY6i;o{3n*J#T3JH+jgkU*h<9!2zkHv4Z%$l zKlVXDF-SGA*BMA#!{$K_dSi@)4Q;gk$82Y$!&;|b9dK>t>2bhTwplhoa6mMfMVD@u zDO2ezD@P$z$Kgl~wk)h&^PPyoBYKqHJ>PA3l-=>8exXMbC5Z6(I+b(gz2X?5KUQuv z>y%MMz?dA&O_DB3-_q?LPZ9x8($_l}C|wUJM@5M*)JU3O=YsjGh4N9A#9>}N@||c8 zP1l94fZ=_jk-v(~(672QY4(@DRgBbtr64ww5q`Ye>H>k(KO>QZi*17#7w9X{8j~1or)i!W)?m z4Hmm8z_~~i`wJG+YaHvlZgApJFQ}O2=y0@X4z@UKr5W+VVLrIV0@napzhLZ!-PPEI zbOOHF-=zFm&?su{;MTN>OXG0+WI6Oy^w=1M6+#$jL*TrG_+TAnvItW-Uxc(dmWk`{ zb0Gp>g~szC+iXrt!?2|5!z3P)=I#9$r0Z>xC?PB&hvD2UiqJ%o8CoTO%Q$|w;-hhVn*W5>eC=+3e zylK`7iz)>JPS>mV#olhHXf`MlnNsXitSbNj00966SS~d%IRF3x$1s8d!!UvYtDpk{ z0RjR9Xa?NlFbxI?Duzgg_YDC73k3i$5-|`k4h92N1OpQXV|i_7b7X5U9v2NUG%zln%(nvlvOe3#9a+Lh86F!V1q$Bwxj=Gb@Vrl z_kh`@){lN>SCCxhf~YG2;LH#!jK!u^$ zqLa23Z?O=^#@|m`-uQR~I6p8`4yTn^w9C#WSdn*r%lax|wg(?B$6-jf2@csY$e-Wt zH~5zsie)UKv%-B#=YQMKi7?$m_&^+RSgoXaEn!?mF`0*Tmv!Vm%w`l;YLGmFtQBCK zzV(>cu6onWZxwqIBgx>Hs7w=qG@z`m3pC^TM1DOxEoQ?aZj-05s8_KkYm2_Tj7|m< zCbkqkAo@FvzA21yT163Uk1QrAo;9x)>iZ>{_q>|Eg z2tPZGs$X#*FbxI?Duzgg_YDC73k3iJf&l>l6H3EV^B%AVR+H4+4Ab{`!>1MumU4_B z;GG#TfUblX+`w9+3aiPUv5^DvrDmb1S^zVGXpCVGv6Sh7*R}#?MZ~K*9)`4&F~yyx z18yU)^?Xm-_x3QkaJqzEsL(t-##N@3eR9*Ma+rm+k5OXAO<0NcJP4%C88%veKcCB9 zF}@eco!+Ul?I2R}QUVFOJ;SUv%ZEIYs}Ky*c*B$nM;(1id4U9~Jgva(+x>w57raB=)2WrJuO{ZOe)s*Yi=$Kgp_k_UdX1E literal 0 HcmV?d00001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 07e8d3c..6563a6c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -11,17 +12,18 @@ android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true" - android:theme="@style/Theme.MyHttpUtils"> - + android:theme="@style/Theme.MyHttpUtils" + tools:targetApi="m"> + + + + - diff --git a/app/src/main/java/com/example/myhttputils/MainActivity.java b/app/src/main/java/com/example/myhttputils/MainActivity.java index 3d76da4..5048b6a 100644 --- a/app/src/main/java/com/example/myhttputils/MainActivity.java +++ b/app/src/main/java/com/example/myhttputils/MainActivity.java @@ -3,7 +3,6 @@ import android.app.Activity; import android.os.Bundle; -import android.view.View; import android.widget.Button; import android.widget.TextView; @@ -12,11 +11,13 @@ import com.common.tools.http.itl.OnHttpRequestListener; import com.common.tools.http.utils.HttpLog; + public class MainActivity extends Activity { private Button btn_http; private TextView content; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -29,7 +30,7 @@ private void initView() { content = findViewById(R.id.content); btn_http.setOnClickListener(view -> { - postTest(); + postTest2(); }); } @@ -38,7 +39,6 @@ private void initView() { */ private void postTest() { ParamsBuild params = ParamsBuild.build(); - params.put("group_id","710"); params.put("game_id","1394628137031"); params.put("role_id","123"); params.put("role_name","roleName"); @@ -58,8 +58,9 @@ private void postTest() { //添加header params.setHeader("Secret-Key","MUCVC-gdPpvhCtB.qKv8gaFi"); HttpRequest httpRequest = new HttpRequest(this); + httpRequest.setConnectType(HttpRequest.GET); httpRequest.setIsRetry(true); - httpRequest.sendRequest(params, "", new OnHttpRequestListener() { + httpRequest.sendRequest(null, "url", new OnHttpRequestListener() { @Override public void onStart() { HttpLog.log().i("onStart"); @@ -85,7 +86,7 @@ private void postTest2() { params.setHeader("Authorization", "APPCODE " + appCode); //创建一个request HttpRequest httpRequest = new HttpRequest(this); - httpRequest.setConnectType(HttpRequest.CONNECT_TYPE_GET); + httpRequest.setConnectType(HttpRequest.GET); httpRequest.sendRequest(params, "http://api01.aliyun.venuscn.com/ip", new OnHttpRequestListener() { @Override public void onStart() { diff --git a/gradle.properties b/gradle.properties index 52f5917..ad15189 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,6 +14,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app"s APK # https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true \ No newline at end of file + +#android.useAndroidX=true +#android.enableJetifier=true \ No newline at end of file diff --git a/httptools/build.gradle b/httptools/build.gradle index cd4b36b..ade918e 100644 --- a/httptools/build.gradle +++ b/httptools/build.gradle @@ -4,13 +4,12 @@ plugins { android { compileSdkVersion 30 - buildToolsVersion '30.0.3' defaultConfig { minSdkVersion 19 targetSdkVersion 30 - versionCode 2 - versionName "1.1" + versionCode 110 + versionName "v1.1.0" } buildTypes { @@ -28,4 +27,16 @@ android { } dependencies { +} + +task makeJar(type: Jar, dependsOn: ['compileReleaseJavaWithJavac']) { + destinationDir = file('jar/') + baseName = "httptools-" + android.defaultConfig.versionName // SDK名称 + from('build/intermediates/javac/release/classes/') + exclude('**/BuildConfig.class') + exclude('**/BuildConfig\$*.class') + exclude('**/R.class') + exclude('**/R\$*.class') + include('**/*.class') + group(build) } \ No newline at end of file diff --git a/httptools/jar/httptools-v1.1.0.jar b/httptools/jar/httptools-v1.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..4226906ccbaae2e3064cf9cc1baf2c8f6986ed8b GIT binary patch literal 13674 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 Ipa