Android-App starten

Hallo liebe Java-Gemeinde,

um es gleich vorwegzunehmen: ich möchte gar nicht Java programmieren lernen, muss mich aber damit auseinandersetzen, um ein simples Android-App mit WebView zu erstellen und brauche dazu kompetente Hilfe.

Die Datei android-src.jar.zip habe ich mir heruntergeladen und entpackt. Wenn ich sie (auf meinem Windows-XP Rechner) normal starten will (starten mit: Java(TM) Platform SE binary - Oracle Corporation), passiert gar nichts.

Wenn ich von der Kommandozeile aus starte (
Code:
java -jar android-src.jar
) bekomme ich die Fehlermeldung:
Code:
kein Hauptmanifestattribut, in android-src.jar

In entpacktem Zustand finde ich ein Verzeichnis namens
Code:
META-INF
eine Datei mit dem Namen
Code:
MANIFEST
, die ich offenbar ändern soll:

Code:
<uses-permission android:name="android.permission.INTERNET" />

Soweit OK, aber wie bekomme ich die zurück ins Executable Jar-File und wie das dann zum gewünschten lauffähigen App?

Daneben soll ich noch eine main.xml erzeugen, von der ich nicht weiss, wo die hingehört. Ausserdem eine MainActivity anpassen, von der ich überhaupt nicht weiss, in welcher Datei die angesiedelt ist.

Ich hoffe, hier kann (und will) mir jemand helfen, auch ohne einen künftigen Java-Programmierer heranziehen zu wollen. Meine Stammbaustelle ist nun mal eine andere, und ich wäre auch für hilfreiche Links dankbar.
 
Zuletzt bearbeitet von einem Moderator:
Code:
<uses-permission android:name="android.permission.INTERNET" />

hört sich an nach einer adroid app

das einfachste is das du auf android dir erstmal ein das entwicklungspacket lädst:
Android SDK | Android Developers

da is alles drin was du für den anfang benötigst.

leg da erstmal ein projekt an bzw binde ein den deine zip ein projekt ist
dann wirst du shcon mehr sehen
meiste ist recht logisch aufgebaut
bzw wird automatisch gemacht
 
hört sich an nach einer adroid app

So isset. iOS kommt später und bin ggf. auch dann für jeden Tipo dankbar.

das einfachste is das du auf android dir erstmal ein das entwicklungspacket lädst:
Android SDK | Android Developers

Bin gerade dabei.

da is alles drin was du für den anfang benötigst.

Ich werd' sehen, wie ich klarkomme. Danke für's erste! :rtfm:
 
iOS- und Android-Apps entwickeln wollen aber keinerlei Bereitschaft sich Programmierkenntnisse anzueignen? Du bist ja echt ein Spaßvogel ...
 
Html5 ist auch programmieren, jeder hat mal damit angefangen. Lass dich nicht entmutigen, TO.
 
iOS- und Android-Apps entwickeln wollen aber keinerlei Bereitschaft sich Programmierkenntnisse anzueignen? Du bist ja echt ein Spaßvogel ...

Ich will eben keine Android-Apps entwickeln, sondern ganz banale Webviews ohne irgendwelche Zusätze erzeugen können, die sich auf Wunsch direkt von der Homescreen per Icon aufrufen lassen. Mehr Ehrgeiz in dieser Richtung habe ich gar nicht.
 
Dann verstehe ich nicht, was hier die Anforderung "JAR" und manifest anpassen bedeutet.

Oder wofür du ein Android SDK benötigst.

Vielleicht wäre das PHP/HTML besser?

---

Du solltest dir bevor du damit anfängst überhaupt in klaren sein, was Andrioid / IOS überhaupt bedeutet. Momentan scheint das nicht vorhanden zu sein. Und dann wird hier alles mögliche durcheinander gewürfelt.
 
HTML ist keine Programmiersprache. CSS auch nicht. Beide kommen aus der Welt der Druck- und Satztechnik.

Aber die werden Programmierer wohl nie wirklich verstehen... 😀

Handbuch Programmiersprachen hervorkram... Liste gebräuchlicher Programmiersprachen... Hypertext Markup Language, deskriptive Sprache für Web-Seiten, vgl. blablabla...
 
Ich will eben keine Android-Apps entwickeln, sondern ganz banale Webviews ohne irgendwelche Zusätze erzeugen können, die sich auf Wunsch direkt von der Homescreen per Icon aufrufen lassen. Mehr Ehrgeiz in dieser Richtung habe ich gar nicht.

Dann solltest du dir phoneGap anschauen. Da entwickelst du komplett in HTML5, CSS3 und Javascript. Hast trotzdem Zugriff auf die Hardwarespezifischen Komponenten.
Das ganze kannst du über den Adobe PhoneGap Build Service für die verschiedenen Plattformen kompilieren lassen. Ausgeführt wird das ganze dann als native App in einem Webview.
 
Handbuch Programmiersprachen hervorkram... Liste gebräuchlicher Programmiersprachen... Hypertext Markup Language, deskriptive Sprache für Web-Seiten, vgl. blablabla...

Tja, deswegen, weil sich so ein weit verbreiteter Irrtum auch in (offenbar ernstgenommene) Handbücher einschleicht, wird er noch lange nicht richtig...

HTML ist eine Auszeichnungssprache für die innere Struktur von (Web-) Dokumenten, CSS als Ergänzung dazu das Setting für die Eigenschaften enthaltener Elemente.

Beides hat mit "Programmieren" erst mal gar nichts zu tun. Das einzige beteiligte Programm ist der Browser, der dieses Layout auswertet (ggf. auch der Druckertreiber). Dass der über die enthaltenen statischen (bzw. mit CSS auch teildynamischen) Deklarationen hinaus auch noch eine Skriptsprache kennt, tut nichts zur Sache. MS Word ist auch keine Programmiersprache, nur weil Worddokumente auch VB-Skript enthalten können.

servus & nix für ungut,
T.
 
Zuletzt bearbeitet:
Dann solltest du dir phoneGap anschauen. Da entwickelst du komplett in HTML5, CSS3 und Javascript. Hast trotzdem Zugriff auf die Hardwarespezifischen Komponenten.
Das ganze kannst du über den Adobe PhoneGap Build Service für die verschiedenen Plattformen kompilieren lassen. Ausgeführt wird das ganze dann als native App in einem Webview.

PhoneGap habe ich mir auch angeschaut, finde dort aber dasselbe Problem: furchtbar viel Holz dafür, dass ich gerade mal ein Blättchen vom Baum brauche.

Danke trotzdem für den Tip.
servus,
T.
 
Hm, das kann ich nicht nachvollziehen.
Innerhalb von 10min kannst du dir damit schon ne vollwertige App zusammenbauen. Das ist sehr leicht.
 
Hm, das kann ich nicht nachvollziehen.
Innerhalb von 10min kannst du dir damit schon ne vollwertige App zusammenbauen. Das ist sehr leicht.

Ich brauche aber eben keine "vollwertige App", sondern einen simplen WebView. Und überall steht, dass das ganz simpel ist, nur nirgendwo richtig, wie's Schritt für Schritt genau geht.

Ausserdem will ich möglichst schlanken und aufs nötigste reduzierten Code möglichst ohne Overhead. Performance rulez!
 
Du solltest dir bevor du damit anfängst überhaupt in klaren sein, was Andrioid / IOS überhaupt bedeutet.

Meines Wissens sind das zwei Betriebssysteme, die sich von meinem unterscheiden. Weisst Du es besser?

PS.: PHP = Hypertext Pre-Processor und HTML = Hypertext Markup Language sind's nicht. Mit denen kann ich das beschriebene Problem auch nicht lösen. Wäre dem so wäre ich nicht hier.

Als ausgewiesener "blutiger Anfänger" bitte ich die stümperhafte sprachliche Terminologie zu entschuldigen. Kundig gemacht habe ich mich, so gut ich kann, und tue es weiter.
 
Es bleibt schlussendlich dir überlassen wie du es machen willst.
Ich würde mir die Mühe aber nicht machen und das Rad nochmal neu erfinden. Mit PhoneGap gibt es ja schon genau die Plattform die du suchst.
 
Es bleibt schlussendlich dir überlassen wie du es machen willst.

Schon klar.

Ich würde mir die Mühe aber nicht machen und das Rad nochmal neu erfinden. Mit PhoneGap gibt es ja schon genau die Plattform die du suchst.

Nicht ganz. Zuviel Overhead. Lieber mache ich mir die Mühe, wühl' mich einmal ordentlich durch und weiss danach, was genau ich tue. Für künftige Projekte muss ich dann nur noch die Url und das Icon ändern. 😛opcorn:
 
So, jetzt habe ich mich soweit durchgewühlt, dass ich die Android App mit Java erzeugen und auf mein Tablett laden kann. Das funktioniert auch soweit ganz gut und die App wird ins Lager aufgenommen und korrekt installiert.

Nur: sie startet dann bei Aufruf durch und bedauert anschließend, dass sie "leider beendet" wurde.

Im Prinzip ist mir glaube ich klar, woran das liegt: der WebView wird eingerichtet und anschließend hat das Programm nichts mehr zu tun. Laufzeit beendet.

Wie also bring' ich ihm bei, dass es bitteschön warten soll, bis es von außen beendet wird?

Danke schon mal im voraus!

servus,
T.
 
Hi,

ein "leider beendet" deutet auf einen Fehler hin, und nicht auf eine untätige view.

Du müsstest mit LogCat das Programm debuggen und prüfen, woran das liegt.

Gruß,

Martin
 
Du müsstest mit LogCat das Programm debuggen und prüfen, woran das liegt


Hab' ich jetzt getan. Hier der gefilterte Code (mit Zeilennummern):

Code:
[61]  02-03 20:55:58.970 I/ActivityManager(  168): START {act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT] dat=/sdcard/www/cricketclub/and/CCI.01.App.apk cmp=com.android.packageinstaller/.PackageInstallerActivity} from pid 12644
[70]  02-03 20:56:02.880 I/ActivityManager(  168): START {dat=/sdcard/www/cricketclub/and/CCI.01.App.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras)} from pid 13452
[71]  02-03 20:56:02.930 W/InstallAppProgress(13452): Replacing package:de.cricketclub_irsee.cci.app
[72]  02-03 20:56:02.950 W/ActivityManager(  168): No content provider found for permission revoke: /sdcard/www/cricketclub/and/CCI.01.App.apk
[73]  02-03 20:56:02.960 W/ActivityManager(  168): No content provider found for permission revoke: /sdcard/www/cricketclub/and/CCI.01.App.apk
[74]  02-03 20:56:03.010 I/PackageManager(  168): Removing non-system package:de.cricketclub_irsee.cci.app
[75]  02-03 20:56:03.010 I/ActivityManager(  168): Force stopping package de.cricketclub_irsee.cci.app uid=10020
[78]  02-03 20:56:03.110 I/PackageManager(  168): Running dexopt on: de.cricketclub_irsee.cci.app
[79]  02-03 20:56:03.110 I/PackageManager(  168): Package de.cricketclub_irsee.cci.app codePath changed from /data/app/de.cricketclub_irsee.cci.app-1.apk to /data/app/de.cricketclub_irsee.cci.app-2.apk; Retaining data and using new
[140] 02-03 20:56:03.490 I/ActivityManager(  168): Force stopping package de.cricketclub_irsee.cci.app uid=10020
[141] 02-03 20:56:03.490 W/PackageManager(  168): Code path for pkg : de.cricketclub_irsee.cci.app changing from /data/app/de.cricketclub_irsee.cci.app-1.apk to /data/app/de.cricketclub_irsee.cci.app-2.apk
[142] 02-03 20:56:03.490 W/PackageManager(  168): Resource path for pkg : de.cricketclub_irsee.cci.app changing from /data/app/de.cricketclub_irsee.cci.app-1.apk to /data/app/de.cricketclub_irsee.cci.app-2.apk
[143] 02-03 20:56:03.580 D/PackageManager(  168): New package installed in /data/app/de.cricketclub_irsee.cci.app-2.apk
[144] 02-03 20:56:03.740 I/ActivityManager(  168): Force stopping package de.cricketclub_irsee.cci.app uid=10020
[156] 02-03 20:56:04.050 D/BackupManagerService(  168): Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:de.cricketclub_irsee.cci.app flg=0x10000010 (has extras) }
[158] 02-03 20:56:04.060 D/AvApplicationsMonitor(12854): intent de.cricketclub_irsee.cci.app
[161] 02-03 20:56:04.080 D/AvApplicationsMonitor(12854): intent /data/app/de.cricketclub_irsee.cci.app-2.apk
[162] 02-03 20:56:04.080 D/BackupManagerService(  168): Received broadcast Intent { act=android.intent.action.PACKAGE_ADDED dat=package:de.cricketclub_irsee.cci.app flg=0x10000010 (has extras) }
[163] 02-03 20:56:04.080 V/BackupManagerService(  168): updatePackageParticipantsLocked: de.cricketclub_irsee.cci.app
[167] 02-03 20:56:04.300 D/BackupManagerService(  168): Received broadcast Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:de.cricketclub_irsee.cci.app flg=0x10000010 (has extras) }
[168] 02-03 20:56:04.300 V/BackupManagerService(  168): updatePackageParticipantsLocked: de.cricketclub_irsee.cci.app
[227] 02-03 20:56:05.750 I/ActivityManager(  168): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]  flg=0x10000000 pkg=de.cricketclub_irsee.cci.app cmp=de.cricketclub_irsee.cci.app/.MainActivity} from pid 13452
[228] 02-03 20:56:05.890 I/ActivityManager(  168): Start proc de.cricketclub_irsee.cci.app for activity de.cricketclub_irsee.cci.app/.MainActivity: pid=13890 uid=10020 gids={3003}
[233] 02-03 20:56:05.990 E/AndroidRuntime(13890): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.cricketclub_irsee.cci.app/de.cricketclub_irsee.cci.app.MainActivity}: java.lang.NullPointerException
[247] 02-03 20:56:05.990 E/AndroidRuntime(13890): 	at de.cricketclub_irsee.cci.app.MainActivity.onCreate(MainActivity.java:12)
[252] 02-03 20:56:05.990 W/ActivityManager(  168):   Force finishing activity de.cricketclub_irsee.cci.app/.MainActivity
[271] 02-03 20:56:06.550 W/ActivityManager(  168): Activity pause timeout for ActivityRecord{41468788 de.cricketclub_irsee.cci.app/.MainActivity}
[289] 02-03 20:56:08.170 I/ActivityManager(  168): Process de.cricketclub_irsee.cci.app (pid 13890) has died.

Ich sehe in Zeile 233 eine RuntimeException, von der ich aber nicht weiss, wie sie zustandekommt.

servus,
T.
 
Durch eine NullPointer Exception


Die ist mir auch aufgefallen. Aber was bedeutet die für meinen Code in der MainActivity?

Code:
package de.cricketclub_irsee.cci.app;

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;

public class MainActivity extends Activity {
     private WebView webView;
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         webView.loadUrl("http://cricketclub_irsee.com/icc.html");         
     }
}

servus,
T.
 
Zuletzt bearbeitet:
Die ist mir auch aufgefallen. Aber was bedeutet die für meinen Code in der MainActivity?
Dass du mit deinem durch
ich möchte gar nicht Java programmieren lernen
geäußerten Lernunwillen bereits früh ganz erbärmlich auf die Schnauze fliegen wirst, da Programmieren nunmal ein durchdachtes Vorgehen und kein Rumgerate ist. Jedes weitere Wort ist da nur noch Perlen vor die Säue, da du wie gesagt nix lernen und nur fertige Lösungen willst...
 
Du initialisierst nirgends die Variable webView.

Und wenn ich's so mache?

Code:
WebView webView = (WebView) findViewById(R.id.webview);

So jedenfalls ist's beschrieben bei developer.android.com, aber dann passiert dasselbe:

Code:
 [40] 02-03 23:33:56.909 I/ActivityManager(  171): START {act=android.intent.action.VIEW cat=[android.intent.category.DEFAULT]  dat=/sdcard/www/cricketclub/and/CCI.04.App.apk cmp=com.android.packageinstaller/.PackageInstallerActivity} from pid 1450
 [67] 02-03 23:34:01.609 I/ActivityManager(  171): START {dat=/sdcard/www/cricketclub/and/CCI.04.App.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras)} from pid 1973
 [70] 02-03 23:34:01.709 W/InstallAppProgress( 1973): Replacing package:de.cricketclub_irsee.icc.app
 [71] 02-03 23:34:01.729 W/ActivityManager(  171): No content provider found for permission revoke: /sdcard/www/cricketclub/and/CCI.04.App.apk
 [72] 02-03 23:34:01.739 W/ActivityManager(  171): No content provider found for permission revoke: /sdcard/www/cricketclub/and/CCI.04.App.apk
 [73] 02-03 23:34:01.789 I/PackageManager(  171): Removing non-system package:de.cricketclub_irsee.icc.app
 [74] 02-03 23:34:01.789 I/ActivityManager(  171): Force stopping package de.cricketclub_irsee.icc.app uid=10020
 [77] 02-03 23:34:01.909 I/PackageManager(  171): Package de.cricketclub_irsee.icc.app codePath changed from /data/app/de.cricketclub_irsee.icc.app-1.apk to /data/app/de.cricketclub_irsee.icc.app-2.apk; Retaining data and using new
 [78] 02-03 23:34:01.919 I/PackageManager(  171): Running dexopt on: de.cricketclub_irsee.icc.app
[141] 02-03 23:34:02.439 W/PackageManager(  171): Code path for pkg : de.cricketclub_irsee.icc.app changing from /data/app/de.cricketclub_irsee.icc.app-1.apk to /data/app/de.cricketclub_irsee.icc.app-2.apk
[142] 02-03 23:34:02.439 I/ActivityManager(  171): Force stopping package de.cricketclub_irsee.icc.app uid=10020
[143] 02-03 23:34:02.439 W/PackageManager(  171): Resource path for pkg : de.cricketclub_irsee.icc.app changing from /data/app/de.cricketclub_irsee.icc.app-1.apk to /data/app/de.cricketclub_irsee.icc.app-2.apk
[144] 02-03 23:34:03.259 D/PackageManager(  171): New package installed in /data/app/de.cricketclub_irsee.icc.app-2.apk
[145] 02-03 23:34:04.049 I/ActivityManager(  171): Force stopping package de.cricketclub_irsee.icc.app uid=10020
[151] 02-03 23:34:04.229 D/AvApplicationsMonitor(  700): intent de.cricketclub_irsee.icc.app
[152] 02-03 23:34:04.239 D/AvApplicationsMonitor(  700): intent /data/app/de.cricketclub_irsee.icc.app-2.apk
[162] 02-03 23:34:04.339 D/BackupManagerService(  171): Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:de.cricketclub_irsee.icc.app flg=0x10000010 (has extras) }
[166] 02-03 23:34:04.379 D/BackupManagerService(  171): Received broadcast Intent { act=android.intent.action.PACKAGE_ADDED dat=package:de.cricketclub_irsee.icc.app flg=0x10000010 (has extras) }
[167] 02-03 23:34:04.379 V/BackupManagerService(  171): updatePackageParticipantsLocked: de.cricketclub_irsee.icc.app
[178] 02-03 23:34:04.769 D/BackupManagerService(  171): Received broadcast Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:de.cricketclub_irsee.icc.app flg=0x10000010 (has extras) }
[179] 02-03 23:34:04.769 V/BackupManagerService(  171): updatePackageParticipantsLocked: de.cricketclub_irsee.icc.app
[266] 02-03 23:34:06.159 I/ActivityManager(  171): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]  flg=0x10000000 pkg=de.cricketclub_irsee.icc.app cmp=de.cricketclub_irsee.icc.app/.MainActivity} from pid 1973
[268] 02-03 23:34:06.279 I/ActivityManager(  171): Start proc de.cricketclub_irsee.icc.app for activity de.cricketclub_irsee.icc.app/.MainActivity: pid=2157 uid=10020 gids={3003}
[277] 02-03 23:34:06.369 E/AndroidRuntime( 2157): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.cricketclub_irsee.icc.app/de.cricketclub_irsee.icc.app.MainActivity}: java.lang.NullPointerException
[292] 02-03 23:34:06.369 E/AndroidRuntime( 2157): 	at de.cricketclub_irsee.icc.app.MainActivity.<init>(MainActivity.java:8)
[298] 02-03 23:34:06.379 W/ActivityManager(  171):   Force finishing activity de.cricketclub_irsee.icc.app/.MainActivity
[310] 02-03 23:34:07.009 W/ActivityManager(  171): Activity pause timeout for ActivityRecord{412ea7f8 de.cricketclub_irsee.icc.app/.MainActivity}
[351] 02-03 23:34:08.639 I/ActivityManager(  171): Process de.cricketclub_irsee.icc.app (pid 2157) has died.

...zur Abwechslung bei [277]...

servus,
T.
 
Dass du mit deinem durch geäußerten Lernunwillen bereits früh ganz erbärmlich auf die Schnauze fliegen wirst, da Programmieren nunmal ein durchdachtes Vorgehen und kein Rumgerate ist. Jedes weitere Wort ist da nur noch Perlen vor die Säue, da du wie gesagt nix lernen und nur fertige Lösungen willst...

Ich habe nun mal nur ein ganz bestimmtes Problem zu lösen. Auch wenn sowohl Java als auch Android für mich Neuland ist, das ich nicht weiter zu erforschen beabsichtige, dürfte ich angesichts Deiner Kommentare einiges mehr in Petto haben als z.B. Du. Es wäre deshalb nett, wenn Du Dein unqualifiziertes Dazwischenpupen bleiben lassen könntest.

Ich danke für's Gespräch. :autsch:
 
Ich habe mein Problem für's erste lösen können dank anderweitiger Hilfe in einem kooperativeren Forum ohne dogmatische Missionierungsanwandlungen (hat kaum eine Minute gedauert) und werde Euch entsprechend weiterempfehlen. Wenn ich um ein Glas Milch bitte, erwarte ich schließlich auch nicht, dass man mir ein Landwirtschaftsstudium anbietet und mich womöglich gar noch anpöbelt, wenn das nicht meine Absicht war und ist.

Die nun funktionsfähig geänderte Klasse MainActivity sieht folgendermaßen aus:

Code:
public class MainActivity extends Activity {
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
x    	 WebView webView = (WebView) findViewById(R.id.webview);
         webView.loadUrl("http://cricketclub_irsee/cci.html");         
     }
}

Grund für den Laufzeitfehler war die falsch positionierte Zeile ( hier mit "x" gekennzeichnet) vor der Layout-Zuweisung mit onCreate.

servus,
T.
 
Zuletzt bearbeitet:

Zurück
Oben