App läuft auf Emulator aber nicht auf dem Handy

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von spike78, 30.11.2011.

  1. spike78, 30.11.2011 #1
    spike78

    spike78 Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2011
    Hallo zusammen,

    ich habe mir eine App geschrieben, die Einträge aus einer SQLLite DB ausliest und diese in einer Liste ausgibt. In meinem Emulator läuft die Anwendung ohne Problem. Jetzt habe ich mir über Eclipse ein APK File erstellt und das dann auf meinem Handy installiert. Die Anwendung startet auch noch, aber sobald ich an die Stelle komme wo die Datenbank geöffnet werden soll und die Einträge in die Liste kommen, bricht meine App ab. Kann es sein das meine DB nicht installiert wurde oder muss ich noch was bestimmtes einstellen?

    Danke und Gruß

    Spike
     
  2. kleinerkathe, 30.11.2011 #2
    kleinerkathe

    kleinerkathe Android-Lexikon

    Beiträge:
    1,365
    Erhaltene Danke:
    219
    Registriert seit:
    23.01.2010
    Wie "installierst" du den deine DB?
    Die muss ja irgendwie angelegt werden ...
     
  3. swordi, 30.11.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wie wärs, wenn du mal den fehler posten würdest? ( => logcat )
     
  4. Tom299, 30.11.2011 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    wenn du in deinem handy auf einstellungen -> anwendungen -> entwicklung gehst und bei USB-Debugging ein häkchen setzt, dann kannst du deine app über eclipse auf dem handy installieren / starten und brauchst keine apk zu erstellen. den fehler hab ich anfangs auch gemacht ;-)

    wie hast du deine DB auf den emulator bekommen? mit adb gepusht? das wird auf dem handy nicht funktionieren, keine root-rechte. wenn deine db anfangs keine werte hat, kannst du sie mit create table scripts anlegen. ansonsten ins assets-verzeichnis kopieren und beim starten der app mußt du dann die db aufs handy kopieren.

    hier noch ein link dazu: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
     
  5. spike78, 30.11.2011 #5
    spike78

    spike78 Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2011
    Hi,

    folgendes hab ich gemacht: Ich habe in meiner Anwendung eine Tabelle mit CREATE TABLE... erzeugt. Wenn ich den Emulator starte, sehe ich meine DB im File Explorer im Data Verzeichnis. Dann habe ich mir diese DB mit dem File Explorer auf meine Platte kopiert und dann mit dem SQLLite Administrator die Tabelle mit Inhalt gefüllt.
    Danach habe ich die Tabelle wieder mit dem File Explorer zurück ins Data Verzeichnis kopiert.

    Das CREATE TABLE Statement habe ich wieder entfernt, da die Tabelle ja schon existiert. Es sollen nur noch Felder mit DB Inhalten gefüllt werden.
    In Eclipse über den Emulator läuft das auch alles top.

    Wenn ich auf meinem Handy direkt debugge wie Tom299 vorgeschlagen hat, bekomme ich auf meinem Handy die Meldung, Die Anwendung wurde unerwartet beendet (genau dort wo die Liste mit den DB Einträgen erstellt werden soll), aber im Logcat stehen keine Meldungen drin??

    Gruß

    Spike
     
  6. spike78, 30.11.2011 #6
    spike78

    spike78 Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2011
    Noch ein Nachtrag: Nun bekomme ich Ausgaben im Logcat wenn ich auf meinem Handy debugge.

    11-30 12:24:40.139: ERROR/AndroidRuntime(31051): Caused by: android.database.sqlite.SQLiteException: no such table: Tab1: , while compiling: SELECT _id, BESCHREIBUNG, BILDPFAD, ZUTATEN FROM Tab1 WHERE KATEGORIE_ID = 0

    Fehler ist wohl das die DB nicht auf meinem Handy ist?
    Wie bekomme ich dadrauf und wo muss die hin?

    Danke und Gruß
    Spike
     
  7. Tom299, 30.11.2011 #7
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    wie man die DB kopiert hatte ich oben schon erwähnt bzw. den Link gepostet.

    beim Pfad kannste dich hieran orientieren:
    String DB_PATH = "/data/data/de.test/databases/";
    String DB_NAME = "test.db";

    also nach /data/data den packagenamen gefolgt von /databases. das kannst du aber auch in deinem EMU abschaue, die pfade sind ja gleich ;-)
     
  8. kleinerkathe, 30.11.2011 #8
    kleinerkathe

    kleinerkathe Android-Lexikon

    Beiträge:
    1,365
    Erhaltene Danke:
    219
    Registriert seit:
    23.01.2010
    Du hast dir die Datenbank also NUR auf dem Emulator eingerichtet... Dein Handy bekommt jetzt eine Anwendung, die versucht auf eine Datenbank zurückzugreifen, die nicht da ist ...

    ergo entweder auf dem Handy per Root oder durch entsprechende Create Table etc. in der Anwendung die DB erzeugen lassen
     
  9. spike78, 30.11.2011 #9
    spike78

    spike78 Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2011
    So nun geht es endlich... DANKE an Euch!!!


    Grüße

    Spike
     

Diese Seite empfehlen