相关疑难解决方法(0)

启用ProGuard时,Retrofit 2不发送数据

我尝试使用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)

android proguard retrofit retrofit2

20
推荐指数
5
解决办法
1万
查看次数

如何使用 jitpack 提供 AAR 文件

我想发布一个我一直在使用 jitpack 开发的 android 库。但我想在不发布源代码的情况下做到这一点。我不想让 jitpack 构建它,我将构建的输出(AAR 文件)上传到 github,我想让 jitpack 只提供这些文件。

https://jitpack.io/docs/PRIVATE/#artifact-sharing中的说明 不适用,因为 UI 不再具有允许共享工件的设置选项卡。

另外,有更好的方法吗?

任何帮助,将不胜感激。

android jitpack

8
推荐指数
1
解决办法
2034
查看次数

如何跳过基础包上的retrofit2使用的proguard模型?

我正在用Kotlin和Retrofit 2编写一个应用程序.当我使用proguard时,我遵循这里的规则:

https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-square-retrofit2.pro

此外,我还需要预测我的模型,如/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.** { *; },但它不起作用.

android proguard kotlin retrofit2

1
推荐指数
1
解决办法
3125
查看次数

标签 统计

android ×3

proguard ×2

retrofit2 ×2

jitpack ×1

kotlin ×1

retrofit ×1