Meine App lässt sich leider nicht installieren - "paket installer" wurde beendet

  • Antworten:12
Lukas
  • Forum-Beiträge: 6

24.09.2016, 22:42:52 via Website

Hallo zusammen,

ich habe einen kleinen Taschenrechner im Android Studio programmiert und wollte diesen jetzt auf meinem Medion Lifetab installieren. Das funktioniert aber leider nicht, hoffentlich könnt ihr mir helfen. :)

Erstmal hab ich eine signed apk meiner App im Android Studio erstellt und auf das Lifetab gezogen.
Auf dem Lifetab eingestellt: "Installation von Apps aus unbekannten Quellen zulassen".
In dem Moment in dem ich im apk Manager "installieren" anklicke kommt nur die Meldung: "Paket-Installer" wurde beendet - aber keine Fehlermeldung, es passiert einfach nichts.

Ich weis nicht ob es euch weiterhilft, aber meine App läuft im Emulator von Android Studio nicht komplett reibungsfrei. Fehlermeldungen gibt´s zwar nicht und letztlich läuft sie auch wie gewollt, aber beim starten poppt immer wieder ein Fenster auf in dem steht "Unfortunately, Google App has stopped". Mit einem Klick auf OK ist die Sache aber gegessen.

Schon mal im Vorraus vielen Dank für eure Mühe und alle Antworten.

Lukas

Antworten
swa00
  • Forum-Beiträge: 3.704

25.09.2016, 00:01:10 via Website

Hallo Lukas,

leider können wir von hieraus auch nicht gross helfen , da wir nicht den Code kennen der deine App zum Absturz bringt.
Um dies zu analysieren , solltest du dein Device direkt per ADB/USB anschliessen und dann dein Errorlog anaylsieren

Gerne kannst du dann den log hier posten , dann können wir auch weiterhelfen

lg
Stefan

Liebe Grüße - Stefan
[ App - Entwicklung ]

Lukas

Antworten
Lukas
  • Forum-Beiträge: 6

25.09.2016, 17:52:50 via Website

Hallo Ludy,

danke für die schnelle Antwort.
Das währ meine androidmanifest.xml:

< ?xml version="1.0" encoding="utf-8"?>
< manifest xmlns:android="http:ßßschemas.android.com/apk/res/android"
package="com.example.lukas.minirechner">

<application
    android:allowBackup="true"
    android:icon="@mipmap/jessie"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

< /manifest>

99% vom obigen Code stammen aber vom Android Studio selber. Ich hab eigentlich nur für das Icon ein eigenes Bild eingefügt.
Ich hab übrigens in der zweiten Zeile vom Manifest stadt zweimal backslash zwei ß gemacht, weil ich noch nicht berechtigt bin hier externe Links zu posten.

Antworten
Lukas
  • Forum-Beiträge: 6

25.09.2016, 18:43:56 via Website

Hallo Stefan,

auch an dich ein großes Dankeschön, dass du dich so schnell meinem Problem angenommen hast.

Meinst du mit dem Errorlog den "Android Device Monitor"?
Ich hab einen Filter mit meinem Applikationsnamen erstellt, auf "run" geklickt und mein Lifetab als device ausgewählt.
Leider hat das nicht funktioniert, es kam nur eine Meldung "apk wird installiert", der Installationsbalken hat sich aber minutenlang kein bisschen bewegt. Irgendwann hab ich das Ganze dann abgebrochen. Im log-Fenster kamen auch keine Nachrichten.

Wenn ich es mit einem virtual device (Nexus 5 API 23) versuche, erscheint im log-Fenster ganz oft hintereinander die gleiche Nachricht (in rot):

[2016-09-25 17:58:08 - ddmlib] Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
at com.android.ddmlib.Client.sendAndConsume(Client.java:684)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:349)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:523)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:564)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:539)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:501)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:397)
at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:64)
at com.android.ddmlib.DeviceMonitor$1.run(DeviceMonitor.java:320)

Trotzdem läuft die App auf dem Emulator.

Ich weis nicht ob es euch weiterhilft, aber was ich auch schon ausprobiert hab, und was ordentlich in die Hose gegangen ist, war Debugging am Lifetab via USB.
Danach hat mein lifetab wieder und wieder die Meldung gebracht "UI wurde beendet". Da hat nur noch ein Zurücksetzen auf Werkseinstellungen geholfen.
Das kommt wohl davon, wenn man denkt, man könne nach einer Woche Android Studio in den Entwickleroptionen rumpfuschen. :D

Antworten
swa00
  • Forum-Beiträge: 3.704

25.09.2016, 20:27:53 via Website

Hallo Lukas,

das musst du unbedingt fixen - du brauchst eine stabile Verbindung zu deinem Device und
am besten lässt du den Emulator weg .
Erst wenn die Verbindung steht , android studio deine apk installiieren und ausführen kann , bekommst du einen
ordentlichen Log.

Ergo : wenn du der Meinung bist zuviel an AS rumgedrückt zu haben : dann installiere es neu ..
Achte auch darauf , dass du gültige Treiber von Medion hast.

Das A&O ist vernünftiges Werkzeug

P.S das was du oben geschickt hast ist die manifest , nicht dein Quellcode.

— geändert am 25.09.2016, 21:08:14

Liebe Grüße - Stefan
[ App - Entwicklung ]

Lukas

Antworten
Lukas
  • Forum-Beiträge: 6

27.09.2016, 19:08:58 via Website

Hallo Stefan,

ich habe deinen Rat beherzigt und sowohl Android Studio, als auch Java nochmal neu installiert.
Auf den Emulator möchte ich ehrlich gesagt nicht verzichten, da es bisher nach jedem Mal USB-Debuggen nötig war das Lifetab auf Werkseinstellungen zurück zu setzten. (Insgesamt schon 4 Mal :'()
Zudem zeigt der Emulator, nachdem ich im AVD-Manger mit den Ram und VM heap Einstellungen meines virtual Device rumgespielt hab endlich das, was mir auch mein Lifetab anzeigt bevor es den Geist aufgiebt.
Zum Test hab ich ein "Empty Project" erstellt (Wenn man keinen eigenen Code hinzufügt, sagt die App einfach nur Hello World). Im Emulator gabs kein Problem, also hab ich einfach Mal versucht diese Apk auf dem Lifetab zu installieren ,und das hat auch noch geklappt .:) (Nur blöd, das keine einzige Codezeile von mir stammt)
Bei meiner eigenen App schreibt der Emulator immer das sie gestoppt wurde und ich bekomme sogar ein ordentliches Log (glaub ich zumindest) :

              --------- beginning of crash

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lukas.minirechner, PID: 2697
java.lang.RuntimeException: Canvas: trying to draw too large(255744000bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
at android.view.View.getDrawableRenderNode(View.java:17311)
at android.view.View.drawBackground(View.java:17247)
at android.view.View.draw(View.java:17059)
at android.view.View.updateDisplayListIfDirty(View.java:16050)
at android.view.View.draw(View.java:16834)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16045)
at android.view.View.draw(View.java:16834)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16045)
at android.view.View.draw(View.java:16834)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16045)
at android.view.View.draw(View.java:16834)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16045)
at android.view.View.draw(View.java:16834)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.draw(View.java:17071)
at com.android.internal.policy.DecorView.draw(DecorView.java:751)
at android.view.View.updateDisplayListIfDirty(View.java:16050)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
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:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Device emulator-5554disconnected, monitoring stopped.
Application terminated.

lg
Lukas

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

27.09.2016, 19:54:04 via Website

Dein Bild (Bitmap) ist einfach zu groß:
Canvas: trying to draw too large(255744000bytes) bitmap.
Das kann nicht verarbeitet werden.
Aber das ist das Bitte für ein Bild in welcher Auflößung dass es 255mb entpackt benötigt?!
Importiere das bild bitte mal über AndroidStudio, da wird die Bild und Dateigröße passend skaliert.

LG Pascal //It's not a bug, it's a feature. :) ;)

Lukas

Antworten
swa00
  • Forum-Beiträge: 3.704

27.09.2016, 20:42:14 via Website

Das Bitmap ist zu Gross, aber nicht ursprünglich 255 MB im RAW zustand .

Android scaliert DPI basierend das hoch , wenn draw ausgeführt wird und das würde dann 255 MB benötigen

Umgehen kann man dass , indem man schlicht nur das Bitmap im /res/drawable-nodpi ordener anstatt drawable ablegt - (Ordner händisch anlegen)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Lukas

Antworten
Lukas
  • Forum-Beiträge: 6

28.09.2016, 00:08:56 via Website

Danke für beide Tipps,

die Grafik hab ich jetzt in einem Ordner names "drawable-nodpi" und es funktioniert, aber warum?.(thinking)
Ich habe doch nichts anderes gemacht als einen weiteren Ordner erstellt, der Ordnername ist doch normalerweise absolut egal. Zudem lautet der Befehl für die Hintergrundgrafik in meinem Layout-Code immer noch
android:background="@drawable/Bildname". Warum bekomme ich keine Meldung in der Form "Die von ihnen gewählte Addresse existiert nicht". Denn der Ordner drawable ist doch jetzt leer.

Auf jeden Fall funktioniert die App im Emulator jetzt wirklich problemlos.
Aber mein Lifetab hat davon irgendwie nichts mitbekommen. :'(
- immer noch die Meldung "packet-installer wurde beendet".

Antworten
swa00
  • Forum-Beiträge: 3.704

28.09.2016, 07:00:53 via Website

Guten Morgen Lukas,

zu 1)
Android passt Background Images an, wenn du diese in einem Layout setzt - und zwar abhängig vom Display, dessen Größe / Auflösung und DPI. Das Image wird dann auf die tatsächlich benötigte Grösse transformiert.
Damit diese Berechnung nicht stattfindet und schlichtweg dein Original-Image gestreckt wird, plaziert man die
Images im "nodpi" ordner. Das kann bei feinen Grafiken natürlich zu einem grausamen Ergebnis führen.
Für Android Studio ist es erst mal nur der drawable Ordner - es schaut lediglich nach , was im Subfolder "nodpi" ist und weis : " aha, der will das nur gestreckt - nix mit scalieren" .

Zu 2)

Jetzt brauchen wir deinen Errorlog, wenn das Device dranhängt.

lg
Stefan

Liebe Grüße - Stefan
[ App - Entwicklung ]

Lukas

Antworten
Lukas
  • Forum-Beiträge: 6

30.09.2016, 15:08:49 via Website

Hallo zusammen,

endlich funktioniert es und ich glaube auch zu wissen woran es lag.
Ich hab ein Bild im drawable Ordner nicht als JPG, sondern als PNG abgespeichern. (angry)
Kann das der Grund sein?
Falls ja, warum ruiniert einem das das komplette User Image?

Auf jeden Fall nochmals vielen Dank an alle, die mir hier geholfen haben.

lg
Lukas

Antworten
swa00
  • Forum-Beiträge: 3.704

30.09.2016, 18:08:22 via Website

Hallo Lukas,

das muss was anderes sein , da ich alle meine Grafiken als png abspeichere.
Alleine aufgrund des Alpha-Channels

Da wir keinerlei informationen von dir haben , wie gross deine Dateien sind
(Filegröße, Abmasse und Farbtiefe) wage ich mal zu behaupten , dass der Grund woanders liegt und du
nur Glück hast , dass es funktioniert :-)

lg
Stefan

— geändert am 30.09.2016, 18:11:26

Liebe Grüße - Stefan
[ App - Entwicklung ]

Lukas

Antworten