Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moshi doesn't work with Android 2.3 #117

Closed
xizzhu opened this issue Dec 26, 2015 · 8 comments
Closed

Moshi doesn't work with Android 2.3 #117

xizzhu opened this issue Dec 26, 2015 · 8 comments

Comments

@xizzhu
Copy link
Contributor

xizzhu commented Dec 26, 2015

In ClassFactory.get(), it uses reflection to get method ObjectStreamClass.getConstructorId(). However, the method is not available in Android 2.3. Is there any workaround? Or should there be at least some documentation for this?

@JakeWharton
Copy link
Member

There is a fallback we could implement, but I don't think we ever really defined the minimum API level supported for Android. Do you really need to support such old devices still?

@xizzhu
Copy link
Contributor Author

xizzhu commented Dec 27, 2015

No, I can use GSON for that. But it's better if it's at least documented somehow.

@ligi
Copy link

ligi commented Apr 5, 2016

Also stumbled uppon this problem now:

D/PassAndroid( 1649): Writing unhandled exception to: /data/data/org.ligi.passandroid/files/3.0.0-1459881471007.tracedroid
D/PassAndroid( 1649): java.lang.IllegalArgumentException: cannot construct instances of org.ligi.passandroid.model.pass.PassImpl
D/PassAndroid( 1649):   at com.squareup.moshi.ClassFactory.get(ClassFactory.java:110)
D/PassAndroid( 1649):   at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:61)
D/PassAndroid( 1649):   at com.squareup.moshi.Moshi.adapter(Moshi.java:92)
D/PassAndroid( 1649):   at com.squareup.moshi.Moshi.adapter(Moshi.java:61)
D/PassAndroid( 1649):   at org.ligi.passandroid.model.AndroidFileSystemPassStore.save(AndroidFileSystemPassStore.kt:33)
D/PassAndroid( 1649):   at org.ligi.passandroid.ui.PassListActivity.onFABClick(PassListActivity.java:82)
D/PassAndroid( 1649):   at org.ligi.passandroid.ui.PassListActivity$$ViewBinder$2.doClick(PassListActivity$$ViewBinder.java:39)
D/PassAndroid( 1649):   at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
D/PassAndroid( 1649):   at android.view.View.performClick(View.java:2485)
D/PassAndroid( 1649):   at android.view.View$PerformClick.run(View.java:9080)
D/PassAndroid( 1649):   at android.os.Handler.handleCallback(Handler.java:587)
D/PassAndroid( 1649):   at android.os.Handler.dispatchMessage(Handler.java:92)
D/PassAndroid( 1649):   at android.os.Looper.loop(Looper.java:130)
D/PassAndroid( 1649):   at android.app.ActivityThread.main(ActivityThread.java:3683)
D/PassAndroid( 1649):   at java.lang.reflect.Method.invokeNative(Native Method)
D/PassAndroid( 1649):   at java.lang.reflect.Method.invoke(Method.java:507)
D/PassAndroid( 1649):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
D/PassAndroid( 1649):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
D/PassAndroid( 1649):   at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1649): FATAL EXCEPTION: main
E/AndroidRuntime( 1649): java.lang.IllegalArgumentException: cannot construct instances of org.ligi.passandroid.model.pass.PassImpl
E/AndroidRuntime( 1649):    at com.squareup.moshi.ClassFactory.get(ClassFactory.java:110)
E/AndroidRuntime( 1649):    at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:61)
E/AndroidRuntime( 1649):    at com.squareup.moshi.Moshi.adapter(Moshi.java:92)
E/AndroidRuntime( 1649):    at com.squareup.moshi.Moshi.adapter(Moshi.java:61)
E/AndroidRuntime( 1649):    at org.ligi.passandroid.model.AndroidFileSystemPassStore.save(AndroidFileSystemPassStore.kt:33)
E/AndroidRuntime( 1649):    at org.ligi.passandroid.ui.PassListActivity.onFABClick(PassListActivity.java:82)
E/AndroidRuntime( 1649):    at org.ligi.passandroid.ui.PassListActivity$$ViewBinder$2.doClick(PassListActivity$$ViewBinder.java:39)
E/AndroidRuntime( 1649):    at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
E/AndroidRuntime( 1649):    at android.view.View.performClick(View.java:2485)
E/AndroidRuntime( 1649):    at android.view.View$PerformClick.run(View.java:9080)
E/AndroidRuntime( 1649):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 1649):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 1649):    at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 1649):    at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( 1649):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1649):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 1649):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 1649):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 1649):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  852):   Force finishing activity org.ligi.passandroid/.ui.PassListActivity

I like these users ( all 4,641 of them :)

@swankjesse
Copy link
Member

Send a pull request?

@ligi
Copy link

ligi commented Apr 7, 2016

That was mainly an answer to:

There is a fallback we could implement, but I don't think we ever really defined the minimum API level supported for Android. Do you really need to support such old devices still?

Unfortunately I don't know which fallback he is talking about there - otherwise I would consider sending a pull request.

@xizzhu
Copy link
Contributor Author

xizzhu commented Apr 7, 2016

Did a quick search, and probably he means something like this? https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/internal/UnsafeAllocator.java

@swankjesse
Copy link
Member

Yep, that’s what we need.

@emartynov
Copy link

I bumped into it today with moshi 1.9.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants