- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用改造 2.0.0-beta2 并且调试构建工作正常,但我在使用 Proguard 发布构建时遇到以下错误。
这是更新后的 logcat 错误。
11-17 18:23:22.751 16274-16274/ph.reggis.FEDT D/AndroidRuntime: Shutting down VM
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: FATAL EXCEPTION: main
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: Process: ph.reggis.FEDT, PID: 16274
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {ph.reggis.FEDT/ph.reggis.FEDT.view.activity.NotificationListActivity}: java.lang.IllegalArgumentException: Unable to create call adapter for class b.a
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: for method InsularFMService.getNews
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for class b.a
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: for method InsularFMService.getNews
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.Utils.methodError(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.MethodHandler.createCallAdapter(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.MethodHandler.create(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.Retrofit.loadMethodHandler(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.Retrofit$1.invoke(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at java.lang.reflect.Proxy.invoke(Proxy.java:393)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at $Proxy0.getNews(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at ph.reggis.FEDT.b.C.d(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at ph.reggis.FEDT.view.fragment.NotificationListFragment.t(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at ph.reggis.FEDT.view.fragment.NotificationListFragment.l(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.B.a(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.B.a(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.B.a(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.B.i(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.y.i(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v4.b.t.onPostResume(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.support.v7.a.B.onPostResume(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.Activity.performResume(Activity.java:6336)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: Caused by: java.lang.IllegalStateException: Observable return type must be parameterized as Observable<Foo> or Observable<? extends Foo>
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.RxJavaCallAdapterFactory.get(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.Retrofit.nextCallAdapter(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: at retrofit.Retrofit.callAdapter(Unknown Source)
11-17 18:23:22.752 16274-16274/ph.reggis.FEDT E/AndroidRuntime: ... 28 more
接口(interface):
@GET("news")
Observable<News> getNews();
fragment :
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.WS_URL_BASE)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
InsularFMService fmService = retrofit.create(InsularFMService.class);
//Observable<News> observable = fmService.getNews();
//subscription = observable. - ALSO NOT WORKING
subscription = fmService.getNews().
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(appController.getDefaultScheduler())
.subscribe(new Subscriber<News>() {...
Gradle :
compile "com.squareup.retrofit:retrofit:2.0.0-beta2"
compile "com.squareup.retrofit:converter-gson:2.0.0-beta2"
compile "com.squareup.retrofit:adapter-rxjava:2.0.0-beta2"
混淆器:
# Fixed: Caused by: java.lang.NoSuchFieldException: No field producerIndex
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
long producerNode;
long consumerNode;
}
最佳答案
现在它通过将这些属性放入 Proguard 来工作。
# Application classes that will be serialized/deserialized over Gson
-keep class ph.reggis.FEDT.model.api.** { *; }
这里是完整的设置
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class ph.reggis.FEDT.model.api.** { *; }
##---------------End: proguard configuration for Gson ----------
关于android - Observable 返回类型必须参数化为 Observable<Foo> 或 Observable<?扩展 Foo>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755077/
public class Foo : IFoo ... 和有什么区别 IFoo foo = new Foo(); 和 Foo foo = new Foo(); 最佳答案 区别仅在于变量的声明类型。每当
class Foo { public: explicit Foo() {} explicit Foo(Foo&) {} }; Foo d = Foo(); error: no matc
是 foo as? Foo完全等同于 foo as Foo? ? 如果是,那为什么两者都有? 如果不是,那么有什么区别? 最佳答案 as?是 safe cast operator . 通常,如果您尝试
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
这个问题在这里已经有了答案: Why is there an injected class name? (1 个回答) 关闭5年前。 一位同事不小心写了这样的代码: struct foo { fo
我遇到了这些关键字::foo、::foo、::bar/foo 和 :bar/foo 您能举例说明差异吗? 最佳答案 :foo 是一个非完全限定的关键字。它没有关联的命名空间。 (name :foo)
有人问我如何简化这个 lambda (Foo foo) -> foo.getName() 还有更好的写法吗? 最佳答案 Foo::getName。 假设getName是一个实例方法,其签名中的参数列表
编写此规则集的 CSS 组合器或简写是什么? foo bar, foo biz, foo gaz > boo, foo tar { ... } 我很确定我在 MDN 的某处读到过有一个。是不是: f
我有一个用这个字符串填充的输入文本 "foo foo"但插入后字符串看起来像这样 "foo foo" .我该如何解决?我想以第一种格式显示字符串! 最佳答案 你可能有这样的事情: " /> 更改 va
假设我有一个不可复制类Foo,它的构造函数之一恰好接收到对 Foo 的引用。 class Foo { public: Foo(Foo& parent) {...} private: v
class Artist @@song_count = [] attr_accessor :name, :songs def initialize(name) @name = name
请解释为什么这些 Perl 函数的调用方式在函数定义之上决定了它们是否运行。 print "Why does this bare call to foo not run?\n"; foo; print
文件名分为三种类型 首先( Root 于某种“当前工作目录”之下) ../foo ./foo bar/foo # really in this group? 和( Root 于绝对路径,独立于 CWD
我想自动连接 foo: @Autowired Foo foo 但我无法修改类 Foo 并将其标记为 @Component。 Autowiring foo 最干净的方法是什么? 顺便说一句,如果您需要使
我一直在使用 Python 的 ElementTree 创建 XML 文档,到目前为止一切顺利。然而我现在面临的问题是,由于项目要求,我需要生成一个 XML 文档,其中包含带有开始和结束标签的元素以及
class Foo { public: Foo(){} private: Foo(const Foo &); }; Foo f(); Foo f1 = Foo(); 我发现当我将 Fo
我有一个 jquery 对话框,上面有一个按钮(我的按钮,不是对话框按钮之一)。 设置对话框后,我有以下代码: $('#bar').click(foo('baz')); 当我加载页面并显示对话框时,f
我遇到了以下变量的情况: var foo: Foo | Foo | Foo; 动态生成(使用 keyof 和 stuff),这在代码的那个点是完全有意的。但是,我需要调用像这样定义的对象内部的方法:
clang 3.5.0 和 gcc 4.9.1 从代码生成的可执行文件 #include struct Foo { Foo() { std::cout << "Foo()" << std::e
对于声明为 Foo& foo = ...; 的 foo,lambdas 的按值捕获和按引用捕获语义之间有什么区别吗? 最佳答案 我认为你已经陷入了一个常见的误解......引用是对真实对象的别名。初始
我是一名优秀的程序员,十分优秀!