jgilfelt / chuck Goto Github PK
View Code? Open in Web Editor NEWAn in-app HTTP inspector for Android OkHttp clients
License: Apache License 2.0
An in-app HTTP inspector for Android OkHttp clients
License: Apache License 2.0
JSON should be pretty print.
please add this line
String prettyJson = new JSONObject(bodyString).toString(2)
bodyText.setText(prettyJson)
I use chuck and I like it a lot.
One thing I have seen in another library I am using is the ability to start chuck from an app shortcut in an alpha/beta release - thus it is rather hidden from the user (good for testing) but still accessible for me as the developer
:-)
On the latest version when opening the notification I got the following crash:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.triple.verstappen.dev, PID: 6720 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference at com.readystatesoftware.chuck.internal.ui.TransactionListFragment.onCreateOptionsMenu(TransactionListFragment.java:107) at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2288) at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2984) at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:363) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454) at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I would like to show null
fields. Please, add serializeNulls()
or give the possibility to set my own Gson
in com.readystatesoftware.chuck.internal.support.JsonConvertor
It would be really easy to read the URL and request if it was decoded properly.
Not able to get any notifications using the logging interceptor for Chuck. I have Okhttp3.3.0 and Android 6.0. Not able to get any notifications to view network traffic.
I get the following SecurityException when using Chuck from a custom authenticator implementation:
java.lang.SecurityException: Permission Denial: writing com.readystatesoftware.chuck.internal.data.ChuckContentProvider uri content://com.myapp.debug.chuck.provider/transaction from pid=0, uid=1000 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:707)
at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:517)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:262)
at android.content.ContentResolver.insert(ContentResolver.java:1539)
at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:225)
at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:167)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall.execute(RealCall.java:77)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91)
at com.myapp.sync.MyappAuthenticator.obtainAuthToken(MyappAuthenticator.kt:118)
at com.myapp.sync.MyappAuthenticator.getAuthToken(MyappAuthenticator.kt:70)
at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:244)
at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
at android.os.Binder.execTransact(Binder.java:674)
If I had to guess, the authenticator is running with the permissions of the AccountManager (uid=1000 strikes me as the user's account, not the app's).
Obviously, this breaks the HTTP calls; the request is never made.
RequestBody and ResponseBody will be saved into database and later displayed on the Fragment if they are plain text. However, when uploading or downloading large text files, if Content-Type is text/* and serve responds with non-gzipped content, all the file content will be loaded into memory and saved into databse. In this situation, OOM occurs.
I don't think it is elegant to write all the plain text RequestBody or ResponseBody into database and memory ignoring content length. I add a threshold in ChuckInterceptor. When the content length is too large, we can write a String into database instead of all the content.
So, should I open a pull request?
Is there any proguard rules for release builds?
When using Chuck in our application, I found an issue when trying to log out and logging back in.
When logging out of our application, the databaseHelper should be closed.
It doesn't seem we get that free from Chuck. I have to kill my application and relaunch it in order for the in-memory reference for databaseHelper to be cleared.
Currently, the workaround I have for our app is to use reflection to close that dbHelper when we log out of our application. Please let me know if I'm missing something or if you acknowledge this as a bug or feature request.
ContentProvider contentProvider = getContentResolver().acquireContentProviderClient(ChuckContentProvider.TRANSACTION_URI).getLocalContentProvider();
if (contentProvider != null && contentProvider instanceof ChuckContentProvider) {
try {
ChuckContentProvider chuckContentProvider = (ChuckContentProvider) contentProvider;
Field databaseHelperField = chuckContentProvider.getClass().getDeclaredField("databaseHelper");
databaseHelperField.setAccessible(true);
SQLiteOpenHelper openHelper =
databaseHelperField.get(chuckContentProvider) instanceof SQLiteOpenHelper ? (SQLiteOpenHelper) databaseHelperField.get(chuckContentProvider)
: null;
if (openHelper != null) {
openHelper.close();
}
} catch (NoSuchFieldException e) {
logger.logp(Level.WARNING, TAG, STR_DO_CLEAN_UP, "Cannot get declared field", e);
} catch (IllegalAccessException e) {
logger.logp(Level.WARNING, TAG, STR_DO_CLEAN_UP, "Cannot access private field", e);
}
}
Content providers can help an application manage access to data stored by itself, stored by other apps, and provide a way to share data with other apps.But in this repository, the chuck is used only in our own application, so I think it's better to use SQLite database to manage database directly.
We are using android authenticator and Chuck is failing because ChuckContentProvider
is not available from different processes:
java.lang.SecurityException: Permission Denial: writing com.readystatesoftware.chuck.internal.data.ChuckContentProvider uri content://app.chuck.provider/transaction from pid=0, uid=1000 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:682)
at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:497)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:259)
at android.content.ContentResolver.insert(ContentResolver.java:1274)
at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:220)
at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:162)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)
at okhttp3.RealCall.execute(RealCall.java:63)
...
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy36.autoLogin(Unknown Source)
at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:244)
at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
at android.os.Binder.execTransact(Binder.java:565)
If someone is experiencing the same problem the quick fix is to set android:exported="true"
for ChuckContentProvider
. So just add this to your AndroidManifest.xml
:
<provider
android:name="com.readystatesoftware.chuck.internal.data.ChuckContentProvider"
android:authorities="${applicationId}.chuck.provider"
android:exported="true"
tools:replace="exported"
/>
Project not building when added debugCompile 'com.readystatesoftware.chuck:library:1.0.0'
in my dependencies.
Error log below:
> Error:Execution failed for task ':app:prepareComReadystatesoftwareChuckLibrary100Library'.
> > Could not expand ZIP '/Users/yutku/.gradle/caches/modules-2/files-2.1/com.readystatesoftware.chuck/library/1.0.0/9b35ca88dde54d309b52db9dccfc0a9486546eaa/library-1.0.0.aar'.
What have i tried?
Invalidate cache and restart.
Update gradle version and tools version.
History delete should require confirmation as it's really easy to wipe the history by accident. And there's no undo.
Are you open to PRs? if so, I am willing to work on this.
Issue: I often test on emulators, which have limited sharing options. Right now, to share info provided by Chuck, I have to share to an SMS app and then manually copy-paste the data, which is annoying.
Solution: add share option to allow sending data directly to device clipboard.
Do we have support for pretty json?
If not yet do we have plan to add it?
Hi, I was wondering is there any way to use with Volley?
It would be a complete experience if Chuk allowed us to search/filter requests/responses
P.S. Great job so far, btw!
07-12 17:10:59.095 20271-20271/com.sublink.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sublink.app, PID: 20271
java.lang.NoSuchFieldError: No field search of type I in class Lcom/readystatesoftware/chuck/R$id; or its superclasses (declaration of 'com.readystatesoftware.chuck.R$id' appears in /data/app/com.sublink.app-2/base.apk:classes20.dex)
at com.readystatesoftware.chuck.internal.ui.TransactionListFragment.onCreateOptionsMenu(TransactionListFragment.java:105)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2291)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:3011)
at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:363)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
When using an Android Wear device connected to the phone where the app is running, all Chuck notifications are mirrored on the watch. They do not anything on the Watch so I suggest adding setLocalOnly to the notification.
This prevents a lot of unwanted notifications on the watch:
https://developer.android.com/reference/android/app/Notification.Builder.html#setLocalOnly(boolean)
Caused by: java.lang.NoClassDefFoundError: nl.qbusict.cupboard.Cupboard
at com.readystatesoftware.chuck.internal.data.ChuckDbOpenHelper.onCreate(ChuckDbOpenHelper.java:33)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at com.readystatesoftware.chuck.internal.data.ChuckContentProvider.insert(ChuckContentProvider.java:83)
The project compiles perfectly, and when I use my application, no notification of each request appears. What should I check? What configuration do I need to do?
I'm trying this on an emulator with api 24 (Android 7)
Error:Execution failed for task ':lazada-app:compileReleaseDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
Error:(17, 36) error: package com.readystatesoftware.chuck does not exist
https does not work
(encoded or binary body moitted)
Trying to launch an intent using Chuck.getIntent fails with
ActivityNotFoundException: No Activity found to handle Intent { }
Does this library rely on minSdk 16? Our project still uses minSdk 15.
This is such an awesome library that I could not express how much I was excited to introduce this feature to our Quality Assurance Engineer. It brings us to a new level to distinguish issues from Client issue or Server issue. Currently, we only enable it in debug build. However, we are seriously thinking about enabling it in release build, which will bring certain security concerns as we are not allowed to save sensitive information like access token or password. I reckon we could add certain key words to filter before the data is to cached when we build the intercepter. I am not sure this is a proper feature request for such library but I would like to give it a try and integrate such feature into my forked library. If this feature is aligning with your thoughts, I would be happy to send a pull request once it is done. Let me know how you think of it.
I tried integrating Chuck into my playground app for CWAC-NetSecurity. Using Chuck either as a regular or network interceptor resulted in:
java.lang.NullPointerException: url
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:60)
at android.content.ContentResolver.insert(ContentResolver.java:1224)
at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:172)
at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:114)
This would result from TRANSACTION_URI
being null
, either because attachInfo()
is not being called at all or Uri.parse()
returning null
.
My playground app uses two processes. My launcher activity brings up a set of preferences to configure the scenario to try. It then starts another activity, running in a separate process, to actually test the scenario.
By default, your ChuckContentProvider
goes into the default process. When I try applying Chuck in the other process, ChuckContentProvider.TRANSACTION_URI
will be null
, because the provider is a natural system-wide singleton, and that singleton is in the other process. Hence, attachInfo()
is never called in this process to initialize TRANSACTION_URI
.
(this is one of the reasons why I don't recommend multiple processes for most apps...)
I could use manifest merger to shove ChuckContentProvider
into the other process, which in theory should get past this crash. However, then I suspect that your activities will fail, as the default process will not have TRANSACTION_URI
. I could further shove all of those into the other process using the same manifest merger approach, and perhaps get all this working. I'm not sure if that's what you want us to do.
Some possible alternatives:
Use a static initializer for TRANSACTION_URI
based off of BuildConfig.APPLICATION_ID
, and use a static initialization block for the UriMatcher
. You'd keep the attachInfo()
as is. So, in normal single-process cases, developers could rename the ChuckContentProvider
authority and you're covered. The limitation then is that multi-process apps would be required to leave the default authority alone, so the statically-initialized values are valid.
Dump ChuckContentProvider
entirely and do something else that does not require static
values that might not exist in all processes.
Thoughts?
Thanks!
New lint checks in Android 2.3 will sometimes return the following false-positive when using Chuck alongside support library dependencies:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.2.0, 25.1.1. Examples include com.android.support:animated-vector-drawable:25.2.0 and com.android.support:animated-vector-drawable:25.1.1
Workaround is to explicitly include the design
support library dependency in your project:
compile 'com.android.support:design:<version>'
See: https://code.google.com/p/android/issues/detail?id=231324
Refs #31
Hello
I am using Volley in my project to handle webservices.Is it possible to use this library with Volley?
if answer is negative, can you recommend me another library that is adaptive with Volley?
thanks in advance.
Hi,
First of all, I thank you for this library.
I got some issue on Android 4.4.x version. Here is the exception:
FATAL EXCEPTION: main Process: com.ross.android, PID: 9282 java.lang.RuntimeException: Unable to get provider com.readystatesoftware.chuck.internal.data.ChuckContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.readystatesoftware.chuck.internal.data.ChuckContentProvider" on path: DexPathList[[zip file "/data/app/com.ross.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.ross.android-1, /vendor/lib, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:5060) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4631) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4571) at android.app.ActivityThread.access$1500(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1406) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5341) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.readystatesoftware.chuck.internal.data.ChuckContentProvider" on path: DexPathList[[zip file "/data/app/com.ross.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.ross.android-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.ActivityThread.installProvider(ActivityThread.java:5045) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4631) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4571) at android.app.ActivityThread.access$1500(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1406) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5341) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646) at dalvik.system.NativeStart.main(Native Method)
Thanks any advice..
I forked this project, and change the miniSdkVersion to 14, still OK for sample....
Is there any reson that must miniSdkVersion 16?
I want to use chuck without passing context parameter to the constructor.
Because unnecessarily I have to pass constructor from presenter to Api class. If it supports then it is helpful for me.
My app just crashed due to bad response from server. But I couldn't capture what was wrong in the response because Chuck also disappeared from notification area. And I can't access logs from the previous session.
Would be nice to be able to access data captured in the previous session (before app crash)
When I upload a image, the REQUEST detail tab output the image's stream... It's huge.
I am facing some issue adding Chuck to my project because it use android support library 25.2.0
and the actual build uses Android Support Library 25.1.1
. Because it doesn't affect Chcuk it would be a good idea to upgrade.
I took the liberty to go ahead. See #30.
Hi , i use logan square as my primary json parsing library , this library is dependent on GSON , can i change this ?
I have integrated the chuck library as indicated in the documentation however the app is crashing as soon it is fired up. The logs aren't much help either as they don't show an explicit crash.
The only way to stop the crash is to remove the compile 'com.readystatesoftware.chuck from build.gradle. Commenting the code to add an interceptor doesn't help either. Only removing the library from the compile options works to successfully run the app.
Any suggestions on what I should be a on a lookout for, maybe popular libraries?
Am getting following error below after adding following to build.gradle.
debugCompile 'com.readystatesoftware.chuck:library:1.0.4'
releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.0.4'
LoggingInterceptor.java:35: error: cannot find symbol
import okhttp3.internal.Platform;
^
symbol: class Platform
location: package okhttp3.internal
Sometimes we get very large responses and having to look through full response is quite cumbersome.
It would be nice to have search functionality in Response Tab as it is in Main Screen. (Possibly in all tabs). It could work like in most browsers or IDEs - highlighting match and jumping between results.
Chuck works perfect with single-process. But when coming to multi-process, it crashes.
The cause is ChuckContentProvider.TRANSACTION_URI
. In another process, Conprovider.attachInfo(Context, ProviderInfo)
seems to be not called, thus ChuckContentProvider.TRANSACTION_URI
gets null. If we make a request in another process, NullPointerException occurs while saving data into database.
When I build in release mode and I cancel an OKHTTP call I get an exception as shown below.
The chuck.readystatesoftware.com.ChuckInterceptor.intercept should be full NO-OP but it is catching canceled calls and reporting them as IOExceptions. I turn around and catch those but I should not have to as I am already processing the isCanceled method on the original call.
at http.internal.okhttp3.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:114)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at chuck.readystatesoftware.com.ChuckInterceptor.intercept(ChuckInterceptor.java:56)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at logging.okhttp3.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:145)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
at okhttp3.RealCall.execute(RealCall.java:69)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91)
at activity.bless.lularoe.com.OpenOrdersActivity$requestOrders$1.call(166)
at activity.bless.lularoe.com.OpenOrdersActivity$requestOrders$1.call(37)
at flowable.operators.internal.reactivex.io.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:37)
at reactivex.io.Flowable.subscribe(Flowable.java:12995)
at reactivex.io.Flowable.subscribe(Flowable.java:12941)
at flowable.operators.internal.reactivex.io.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at schedulers.internal.reactivex.io.ScheduledRunnable.run(ScheduledRunnable.java:61)
at schedulers.internal.reactivex.io.ScheduledRunnable.call(ScheduledRunnable.java:52)
at concurrent.util.java.FutureTask.run(FutureTask.java:237)
at concurrent.util.java.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at concurrent.util.java.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at concurrent.util.java.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at lang.java.Thread.run(Thread.java:762)
my project compileSdkVersion is 14.when use change library compileSdkVersion to 14,the smaple project running normally.
Can you tell me why use compileSdkVersion 16?have some unpredictable bugs?
Large body data should be ignored and a simple string should be given instead
Would you consider a PR that updated from Gson to Moshi?
When targetting Android O (API level 26) the notifications do not work because the Notification Channels are not implemented.
https://developer.android.com/preview/features/notification-channels.html
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.