0

The latest update to the Microsoft Health application appears to have broken backwards compatibility with the SDK preview resulting in errors similar to the following for Android development:

04-28 20:02:09.001    8840-9755/org.hackerforhire.msbandlight E/AndroidRuntime﹕ FATAL EXCEPTION: f
    Process: org.hackerforhire.msbandlight, PID: 8840
    java.lang.RuntimeException: Parcel android.os.Parcel@1d1d95f2: Unmarshalling unknown type code 40 at offset 368
            at android.os.Parcel.readValue(Parcel.java:2228)
            at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
            at android.os.BaseBundle.unparcel(BaseBundle.java:221)
            at android.os.Bundle.getParcelable(Bundle.java:755)
            at com.microsoft.band.f.d(SourceFile:820)
            at com.microsoft.band.f.d(SourceFile:40)
            at com.microsoft.band.f$d.a(SourceFile:892)
            at com.microsoft.band.internal.e$3.handleMessage(SourceFile:137)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at com.microsoft.band.internal.e.run(SourceFile:148)

I previously assumed this was an issue with ProGuard rules per this stack overflow; however, that did not have any impact.

At this point, I'm really looking to see if anyone can suggest a good way to dig into the library JAR and see if there's something I can manually patch to get things working. Is there such a thing or is it best to just hope that Microsoft will release a new SDK soon?

Version information:

  • Microsoft Health Version: 1.3.10427.2
  • Microsoft Band SDK Version: 1.3.10215.1
  • Microsoft Band Firmware Version: 10.2.2810.0 09 R
  • Android Version: 5.1 (Nexus 6)

UPDATE 2015-04-30: Confirmed that the newest version of the SDK (1.3.10428.1) resolves this issue.

Community
  • 1
  • 1
Wyatt
  • 90
  • 12
  • Is it the Health app update or an SDK update that broke it? There also seems to have been a firmware update mid-april. If it's the SDK- one could (but it would break the lic. agreement) theoretically decompile the libs (new and old) and use a comparing tool such as Beyond Comare (free trial I believe) and/or do differential debugging to see where it breaks. A differential analysis could also be done with the app with some more work to access the code- in theory ;) – Iris Classon Apr 29 '15 at 12:01
  • Could you post some details in RE to where and how it breaks? – Iris Classon Apr 29 '15 at 12:02
  • @IrisClasson, I just got an email back from MS today. They confirmed that this is an issue with the SDK and that a new version should be dropping shortly for developers that will resolve the incompatibility issue. As to RE, I've not posted any of that information because it was purely relegated to my terminal screen; however, if you take the JAR provided and pass it through a Java decompiler, you'll basically see what I was seeing in that it was dying with some back unpacking. – Wyatt Apr 29 '15 at 18:34

1 Answers1

0

I'm afraid I don't have a solution, but can confirm the problem. I have hit the same problem today. My Xamarin.Forms Android build interfacing to Microsoft Band was working fine yesterday. Now it's dead - the call to BandClient.ConnectTaskAsync() never completes. Even the sample app fails to connect.

My app is using:

  • Microsoft.Band.Android 1.3.10215.1
  • Microsoft.Band.Portable 1.0.0.0

I am testing on a Motorola Moto E running Android 4.4.4 using a Microsoft Band with Firmware Version: 10.2.2810.0 09 R

The output from the debugger (from the sample app) follows: FATAL EXCEPTION: f Process: Microsoft.Band.Sample, PID: 9382 java.lang.RuntimeException: Parcel android.os.Parcel@4193eec8: Unmarshalling unknown type code 3473459 at offset 344 at android.os.Parcel.readValue(Parcel.java:2080) at android.os.Parcel.readSparseArrayInternal(Parcel.java:2363) at android.os.Parcel.readSparseArray(Parcel.java:1735) at android.os.Parcel.readValue(Parcel.java:2070) at android.os.Parcel.readArrayMapInternal(Parcel.java:2313) at android.os.Bundle.unparcel(Bundle.java:249) at android.os.Bundle.getParcelable(Bundle.java:1206) at com.microsoft.band.f.d(SourceFile:820) at com.microsoft.band.f.d(SourceFile:40) at com.microsoft.band.f$d.a(SourceFile:892) at com.microsoft.band.internal.e$3.handleMessage(SourceFile:137) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at com.microsoft.band.internal.e.run(SourceFile:148) CURRENT freed 23K, 17% free 36752K/43852K, paused 4ms+23ms, total 113ms Activity microsoft.band.sample.MainActivity has leaked ServiceConnection com.microsoft.band.f$1@41aa1438 that was originally bound here android.app.ServiceConnectionLeaked: Activity microsoft.band.sample.MainActivity has leaked ServiceConnection com.microsoft.band.f$1@41aa1438 that was originally bound here at com.micros04-29 17:21:27.607 E/ActivityThread( 9382): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:979) at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873) at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1690) at android.app.ContextImpl.bindService(ContextImpl.java:1673) at android.content.ContextWrapper.bindService(ContextWrapper.java:517) at com.microsoft.band.f.f(SourceFile:330) at com.microsoft.band.a.connect(SourceFile:106) at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method) at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:29) at android.view.View.performClick(View.java:4456) at android.view.View$PerformClick.run(View.java:18465) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) 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:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method)

Wyatt
  • 90
  • 12
John H
  • 63
  • 8
  • Yea, even though the offset is different (which I did have one magic field crash report for that same 3473459 value), the error is still a problem in the SDK. Microsoft says they're on it and a new SDK should be available soon. Set those F5 buttons to kill. – Wyatt Apr 29 '15 at 18:39
  • SDK update came out today, its out of preview. Hope it solves the problem :S – Iris Classon Apr 30 '15 at 23:55