我尝试使用Retrofit 2登录我的用户.(基本上是使用基本标题对登录URL进行GET)它运行良好但是一旦我ProGuard它,标题授权就不再发送了.(见日志输出)
示例代码:
用户模型:
public interface UserService {
@GET(GET_LOGIN)
Observable<User> login(@Header("Authorization") String basic);
}
Run Code Online (Sandbox Code Playgroud)
登录活动:
public void onClick(View v) {
mRetrofit.create(UserService.class)
.login(Credentials.basic(email, password))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> {
UserHelper.save(LoginActivity.this, user);
}, throwable -> Dog.d);
}
Run Code Online (Sandbox Code Playgroud)
Proguard文件:
# Retrofit
-dontwarn retrofit2.**
-dontwarn org.codehaus.mojo.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*
-keepclasseswithmembers class * {
@retrofit.* <methods>;
}
-keepclasseswithmembers interface * {
@retrofit.* <methods>;
}
Run Code Online (Sandbox Code Playgroud)
日志(proguard):
D/OkHttp: --> GET http://passport-supercairos.rhcloud.com/users/login HTTP/1.1
D/OkHttp: User-Agent: VirtualPassport-Client {Android-23} {Aquaris_E5}
D/OkHttp: …Run Code Online (Sandbox Code Playgroud) 我想发布一个我一直在使用 jitpack 开发的 android 库。但我想在不发布源代码的情况下做到这一点。我不想让 jitpack 构建它,我将构建的输出(AAR 文件)上传到 github,我想让 jitpack 只提供这些文件。
https://jitpack.io/docs/PRIVATE/#artifact-sharing中的说明 不适用,因为 UI 不再具有允许共享工件的设置选项卡。
另外,有更好的方法吗?
任何帮助,将不胜感激。
我正在用Kotlin和Retrofit 2编写一个应用程序.当我使用proguard时,我遵循这里的规则:
此外,我还需要预测我的模型,如/sf/answers/2879520521/中所述
如果我把我的模型放在一个包中,它就可以正常工作了 -keep class com.elyeproj.wikisearchcount.model.** { *; }
package com.elyeproj.wikisearchcount.model
object Model {
data class Result(val query: Query)
data class Query(val searchinfo: SearchInfo)
data class SearchInfo(val totalhits: Int)
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将我的模型保存在基础包中作为下面的代码,但我不想保留整个包,即-keep class com.elyeproj.wikisearchcount.** { *; },因为这会破坏proguard的目的
package com.elyeproj.wikisearchcount
object Model {
data class Result(val query: Query)
data class Query(val searchinfo: SearchInfo)
data class SearchInfo(val totalhits: Int)
}
Run Code Online (Sandbox Code Playgroud)
我怎么能保留我的模型类?
我试过-keep class com.elyeproj.wikisearchcount.Model.** { *; },但它不起作用.