Skip to content

如何引用

xuexiangjys edited this page Mar 23, 2022 · 10 revisions

添加Gradle依赖

1.先在项目根目录的 build.gradle 的 repositories 添加:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.然后在应用项目(一般是app)的 build.gradle 的 dependencies 添加:

以下是版本说明,选择一个即可。

  • androidx版本:2.0.0及以上
dependencies {
  ...
  implementation 'com.github.xuexiangjys:XHttp2:2.0.4'

  implementation 'com.google.code.gson:gson:2.8.5'
  implementation 'com.squareup.okhttp3:okhttp:3.10.0'
  implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
  implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
}
  • support版本:1.0.4及以下
dependencies {
  ...
  implementation 'com.github.xuexiangjys:XHttp2:1.0.4'

  implementation 'com.google.code.gson:gson:2.8.2'
  implementation 'com.squareup.okhttp3:okhttp:3.10.0'
  implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
  implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
}

3.在Application中初始化XHttpSDK

XHttpSDK.init(this);   //初始化网络请求框架,必须首先执行
XHttpSDK.debug("XHttp");  //需要调试的时候执行
XHttpSDK.setBaseUrl(SettingSPUtils.getInstance().getApiURL());  //设置网络请求的基础地址

4.全局初始化配置(非必要)

除了上述的操作以外,你还可以使用XHttp.getInstance()对网络请求框架进行全局性参数配置,配置一些公用默认的参数,这样我们就不需要为每个请求都进行设置。方法如下:

方法名 备注
debug 设置日志的打印模式
setBaseUrl 设置全局baseUrl
setSubUrl 设置全局subUrl
setReadTimeOut 设置全局读取超时时间
setWriteTimeOut 设置全局写入超时时间
setConnectTimeout 设置全局连接超时时间
setTimeout 设置全局超时时间
setRetryCount 设置全局超时重试次数
setRetryDelay 设置全局超时重试延迟时间
setRetryIncreaseDelay 设置全局超时重试延迟叠加时间
setCacheMode 设置全局的缓存模式
setIsDiskCache 设置是否是磁盘缓存
setMemoryMaxSize 设置内存缓存的最大数量
setCacheTime 设置全局的缓存过期时间
setCacheMaxSize 设置全局的磁盘缓存大小,默认50M
setCacheDirectory 设置全局缓存的路径,默认是应用包下面的缓存
setCacheDiskConverter 设置全局缓存的转换器
addCommonParams 添加全局公共请求参数
addCommonHeaders 添加全局公共请求参数
addInterceptor 添加全局拦截器
addNetworkInterceptor 添加全局网络拦截器
setOkproxy 全局设置OkHttpClient的代理
setOkconnectionPool 设置全局OkHttpClient的请求连接池
setOkclient 全局为Retrofit设置自定义的OkHttpClient
addConverterFactory 设置全局Converter.Factory,默认GsonConverterFactory.create()
addCallAdapterFactory 设置全局CallAdapter.Factory,默认RxJavaCallAdapterFactory.create()
setHostnameVerifier 设置https的全局访问规则
setCertificates 设置https的全局自签名证书
setCookieStore 设置全局cookie存取规则
setStrictMode 设置严格模式,在严格模式下,json返回的data数据不能为null

混淆配置

#XHttp2
-keep class com.xuexiang.xhttp2.model.** { *; }
-keep class com.xuexiang.xhttp2.cache.model.** { *; }
-keep class com.xuexiang.xhttp2.cache.stategy.**{*;}
-keep class com.xuexiang.xhttp2.annotation.** { *; }

#okhttp
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okio.**
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
-dontwarn javax.annotation.**

# Retrofit
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Exceptions

# RxJava RxAndroid
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

#如果用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错
-keepattributes Signature
-keep class com.google.gson.stream.** { *; }
-keepattributes EnclosingMethod
-keep class org.xz_sale.entity.**{*;}
-keep class com.google.gson.** {*;}
-keep class com.google.**{*;}
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.examples.android.model.** { *; }