Main Menu

Can't deserialize object

Started by Xar, January 07, 2017, 06:37:51 PM

Previous topic - Next topic

Xar

Guten Abend :)

hänge nun schon ein Weilchen an einem Problem und habe noch keine Lösung gefunden.
Ich möchte ein serialisiertes und geziptes Modell laden. Aktuelle ohne Texturen.
Auf einem Nexus Gerät mit Android 7 ist das auch kein Problem. Will ich den Code jedoch auf einem Gerät mit Android 6 ausführen klappt dies nicht und es wird ein Fehler geworfen.
Hier erstmal die Fehlermeldung:
"java.lang.RuntimeException: [ 1483810054193 ] - ERROR: Can't deserialize object: Premature end of file!"

Und das ist der Code:

private Object3D loadModel(String filename) throws Exception {

        stream = null;
        ZipInputStream zis= null;

        Log.d("LOADING", "In loadmodel():"+filename);

        stream = mContext.getAssets().open(filename);
        zis = new ZipInputStream(stream);
        zis.getNextEntry();

        Object3D tmpModel = Object3D.mergeAll(Loader.loadSerializedObject(zis));
        tmpModel.build();

        try {
            stream.close();
            zis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return tmpModel;
    }


Die Datei mit einer .mp3 Endung zu laden war leider auch keine Lösung.
Anfangs hatte ich nicht serialisierte .3ds Dateien geladen, was unter Android 6, als auch 7 funktionierte

EgonOlsen

Hmm...das sollte nichts mit der Android zu tun haben. Das funktioniert von 2.x an aufwärts eigentlich immer.

Die Fehlermeldung sieht irgendwie so aus, als wäre die Datei nicht ganz ok. Hast du mal geprüft, ob die richtig auf dem Gerät gelandet ist? Oder ist die in App mit "drin"?

Xar

Wenn du mit
Quote from: EgonOlsen on January 07, 2017, 11:14:30 PM
Oder ist die in App mit "drin"?
meinst, dass die Modelle innerhalb vom app Ordner liegen, dann ja.
Sie liegen unter "app/src/main/assets".
Die Modell Dateien an sich sollten in Ordnung sein, da sie unter Android 7 problemlos angezeigt werden.
Aber aufgefallen ist mir, dass die App unter Android 7 74.06MB gesamten Speicher belegt, wovon 29.77MB für die App und 44.30MB für die Daten sind. Unter Android 6 sind es nur 60.36MB gesamt, 29.92MB App und 30.44MB Daten.

Vielen Dank schon einmal für deine Hilfe!

Xar

Hier ist noch eine Fehlermeldung, welche nur ganz zu Beginn gezeigt wird:

I/OpenGLRenderer: Initialized EGL, version 1.4
I/jPCT-AE: GL context is 28320781
D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 24 - 0, 0) vi=Rect(0, 24 - 0, 0) or=2
I/jPCT-AE: Initializing GL20 render pipeline...
I/jPCT-AE: Accessing shaders via JAR!
I/jPCT-AE: Loading default shaders !
I/jPCT-AE: 0 shaders in replacement map!
I/jPCT-AE: Default fragment shader is: /defaultFragmentShader.src
I/jPCT-AE: Loading /defaultFragmentShader.src
W/art: Failed to open zip archive '/system/framework/qcom.fmradio.jar': I/O Error
I/jPCT-AE: Loading file from InputStream
I/jPCT-AE: Text file from InputStream loaded...2416 bytes
I/jPCT-AE: Default vertex shader is: /defaultVertexShader.src
I/jPCT-AE: Loading /defaultVertexShader.src

           [ 01-08 16:51:42.808 12352:12461 W/         ]
           Unable to open '/system/framework/qcom.fmradio.jar': No such file or directory
W/art: Failed to open zip archive '/system/framework/qcom.fmradio.jar': I/O Error
I/jPCT-AE: Loading file from InputStream

Mit Beginn meine ich, dass ich ein Android 6 Gerät angeschlossen habe und das erste Mal auf "Run app" drücke.
Bei jedem neuen starten über den Button erscheint die Meldung nicht

EgonOlsen

Weiß nicht...was hat irgendein Radio mit jPCT-AE zu tun? Also ich mache damit nix, ich denke nicht, dass es da einen Zusammenhang gibt. Deinstallier die App mal komplett und probiere es erneut.

Xar

App neu installieren habe ich schon probiert, habe sogar schon ein komplett neues Projekt erstellt und es mit diesem versucht, war aber leider auch keine Lösung.

EgonOlsen

Ich habe wirklich keine Ahnung. Es muss irgendwas mit dem Gerät sein oder der Datei selber sein. Das ist ja keinen Meldung von jPCT-AE, sondern vom Inputstream, der irgendwie vorzeitig beendet ist. Kannst du die Größe der Datei über die App auslesen? Stimmt die auf beiden Geräten überein?

Xar

Ich habe es jetzt erstmal zum laufen bekommen.
Allerdings lese ich jetzt keine gezippte Datei mehr ein, sondern einfach die serialisierte Datei.
Das laden dauert dadurch zwar etwas länger, aber das Model wird wenigstens überhaupt geladen.
Wenn ich zu zum Ende des Projekts noch Zeit haben sollte, werde ich mich nochmal mit dem Problem beschäftigen und falls ich die Lösung finde euch mitteilen ;)
Vielen Dank für die Hilfe

ruidge

can you get the solution, i meet the same problem.use serial file is OK, guess maybe ZIP tool are different between javaSE and AndroidLib ??

EgonOlsen

No, zip is zip. How large is your file?