Android Dev – Eclipse GC overhead limit exceeded

 Android, Entwicklung  Kommentare deaktiviert für Android Dev – Eclipse GC overhead limit exceeded
Jul 242012
 

Was ich mich in den letzten paar Tagen genervt habe. Bei meinem Projekt kommen immer mehr externe Libraries hinzu. Es gibt solche die als *.jar Datei eingebunden werden und solche die man als Projekt einbindet. Um so mehr davon vorhanden sind um so häufiger kommt folgende Meldung.

Eclipse GC overhead limit exceeded

Und die nervt gewaltig. Wenn man Pech hat verhaut es einem das ganze Eclipse. Es startet einfach nicht mehr obwohl man die .lock Datei und die snap Datei gelöscht hat. Mir blieb dann meistens nichts anderes übrig als alles im .metadata Verzeichnis zu löschen. Allerdings kann man dann in Eclipse wieder alles neu einstellen.

Um diesen Fehler zu beseitigen kann man folgendes versuchen. Bei mir hat es zumindest funktioniert.

Im Installationsverzeichnis von Eclipse öffnet man die eclipse.ini.

Alles was fett ist habe ich angepasst.

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.mobile.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
1024M
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
1024m
–launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
Xms512m
Xmx1024m

Anwendbar auf eigenes Risiko.

Quelle: Unable to execute dex: GC overhead limit exceeded

Jul 212012
 

Heute war ich wieder mal ganz tüchtig. Habe einiges eingebaut was so gewünscht wurde.

Ein Wunsch war das man ein/ausschalten kann was protokolliert werden soll. Das habe ich umgesetzt. Man kann jetzt einstellen ob Com2Cal überhaupt etwas machen soll. Wenn ja, kann man noch einstellen welche Sachen genau protokolliert werden sollen. Jedes einzelne Protokoll kann nun ein- und ausgeschaltet werden.

Com2Cal Setting Dialog

Natürlich kann man auch das protokollieren ausgehender SMS ausschalten. Hatte nur keinen Platz mehr auf dem Printscreen.

Ein Feature was auch noch gewünscht wurde, vor allem wenn man den Kalender mit Exchange synchronisiert, ist die Möglichkeit einen Eintrag als privat zu markieren. Dann bleiben diese auch privat und können nicht von Anderen, die meinen Kalender öffnen dürfen, gelesen werden. Diese Einstellung ist aber per default nicht eingeschaltet.

Jemand meinte auch, die Icons in der ActionBar, dass Icon für die Einstellungen und für den Info-Dialog, seinen zu klein. Ich habe mich zwar an den Richtlinien von Google orientiert, aber irgend wie schienen die wirklich ein wenig sehr klein. Deshalb habe ich die zwei Icons um 20% vergrössert. Hoffentlich passt s jetzt besser.

Und wie immer! Bekommen tut man die App bei Google Play.

Get it on Google Play

PS: Bewertet die App doch bitte mal bei Google. Ach ja, ob die Werbung überhaupt funktioniert weiss ich gar nicht. Es hat noch keiner geklickt. Testet es doch mal. Smiley

Com2Cal – Update auf Version 1.0.6

 Com2Cal, Entwicklung  Kommentare deaktiviert für Com2Cal – Update auf Version 1.0.6
Jul 192012
 

Wie schon mal erwähnt sind noch einige Ideen vorhanden. Einen wichtigen Punkt habe ich nun mit der Version 1.0.4 umgesetzt. Seit dieser Version werden auch ausgehende SMS protokolliert. Damit habe ich einen der, für mich, wichtigsten Punkte umgesetzt.

Mit der Version 1.0.6 stellt ich auf die ActionBar um. Da Com2Cal auch auf Geräten vor der Android 3 Ära funktionieren soll musste ich dazu eine Library bemühen. Auswahl scheint es da nicht sehr viel zu geben. Deshalb nutze ich neu dafür die ActionBarSherlock.  Ich hoffe die tut so wie ich es mir vorstelle und macht mir nicht zu grosse Probleme. Leider wurde die APK Datei, also der Download der App, um einiges grösser. Ich war ziemlich überrascht. Von 348KB auf 811KB, was doch ziemlich viel ist.

Zudem habe ich in dieser Version auch sehr viel Code ausgemistet der nicht mehr benötigt wurde. Durch die Erfahrung mit der App, die ich bei der Arbeit machen kann, habe ich nun eine Basisklasse, der Entwickler weiss um was es geht, für die Activities gemacht um sehr viel redundanten Code zu eliminieren. Funktioniert wunderbar.

Ach ja, und dann noch die ungeliebte Werbung. Bis anhin habe ich diverse Experimente mit diversen Werbeanbietern gemacht. Tauglich war NUR AdMob, ist halt Google und die wissen wie man es macht. Ich stolperte aber noch über Mobclix die ein sehr cooles Feature bieten. Auf der Webseite kann man noch andere Anbieter dazu schalten. Ich kann also noch AdMob einschalten und definieren wie viele % AdMob eingeblendet werden soll. Also sollte aktuell nur noch AdMob und Mobclix erscheinen. Mal schauen ob es was bringt.

Bekommen tut man die App bei Google Play.

Get it on Google Play

PS: Bewertet die App doch bitte mal bei Google. Ach ja, ob die Werbung überhaupt funktioniert weiss ich gar nicht. Es hat noch keiner geklickt. Testet es doch mal. Smiley

Jul 162012
 

Beim entwickeln einer Android Anwendung kommt es immer mal wieder vor, dass man in der Hitze des Gefechtes vergisst die Berechtigungen in der AndroidManifest.xml zu setzten. Man ärgert sich dann wenn das neu eingebaute Feature nicht funktionieren will. Wenn man sich dann, nach langem suchen, mal die mühe nimmt und das LocCat genauer anschaut kann es vorkommen, dass man es doch noch sieht. Das neue Feature braucht noch eine Permission die man noch nicht gesetzt hat, b.z.w. vergessen hat zu setzten. Wäre ja nicht schlimm wenn man das nicht erst nach 1’er Stunde merkt.

Aber es gibt ja so ein cooles Feature in Eclipse wo man das LocCat filtern kann. Wenn man nun den richtigen Filter baut wird man das Problem in Zukunft viel schneller bemerken.

Man erstellt einfach einen Filter wo man bei “by Log Message” auf “Permission Denail:” filtert. “by Log Leverl” setzt man noch auf “error”, und schon gibt es so schöne Einträge wie auf dem Printscreen zu sehen sind. In Zukunft sollten die Probleme also schneller entdeckt werden.

Filter im LocCat setzten um die Meldung Permission Denial schneller zu bemerken.

Com2Cal – Update auf Version 1.0.3

 Android, Com2Cal  Kommentare deaktiviert für Com2Cal – Update auf Version 1.0.3
Jul 112012
 

Für Android zu entwickeln macht Spass. Sehr viel Spass. Aber es gibt auch sehr viel neues zu lernen. Als ich am 8. Juni 2012 die Version 1.0.1 veröffentlichte zeigten sich die ersten Tücken der neuen Technik. Die App war gerade mal 15 Minuten Online, da habe ich einen gewaltigen Bug gefunden. Etwas was ich schlicht nicht getestet habe.

Mit der Version 1.0.1 konnte man einen neuen lokalen Kalender erstellen. Dieser wurde auch wunderbar erstellt. Man sah ihn in der Kalender App und konnte auch Termine erfassen. Grossartig dachte ich. Bei meinen Tests wurde also immer alles gespeichert und angezeigt. Was ich aber nie gemacht habe war, dass Gerät neu zu starten. Ich habe nie einen Reboot gemacht. Ausser an dem Tag als ich die App das erste mal veröffentlichte. Ich machte nach der Testinstallation von Google Play einen Reboot, und was musste ich mit erschrecken feststellen?! Der Kalender war weg. Tatsächlich!! Unter Android 2.3.5 und auch unter 4.0.4. Nach einem Neustart war der Kalender nicht mehr da.

Seit dem Tag habe ich nun nach einer Lösung gesucht. Diverse Foren abgeklappert und überall Fragen gestellt. Ohne Erfolg. Als Notlösung wollte ich dann das Google Kalender API nutzen und darüber einen Online Kalender erstellen. Aber selbst die Sample App konnte nicht erstellt werden.

Deshalb habe ich mich dazu entschlossen diese Funktion zu entfernen. Ich denke, ich weiss jetzt wieso das andere App’s dass auch nicht anbieten. Aber zur Not kann man ja auf den Google Kalender Seite einen eigenen neuen Kalender erstellen und diesen mit dem Android synchronisieren. Sobald Android diesen neuen Kalender synchronisiert hat kann dieser in Com2Cal ausgewählt werden.

Wie erstellt man nun einen Kalender.

  1. Gehe auf https://www.google.com/calendar und melde dich an wenn das noch nicht der Fall sein sollte.
  2. Klicke auf das Dreieck, dass das auf dem Kopf steht, und wähle “Neuen Kalender erstellen”.
    Google Kalender - Neuen Kalender
  3. Gebe dem Kalender einen Namen und wenn gewünscht auch eine Beschreibung. Dann nur noch auf “Kalender einrichten” klicken und warten bis Android alles synchronisiert hat.
    Google Kalender - Neuen Kalender

Unter Android muss unter der Synchronisierung das Google Konto so eingestellt sein das der Kalender synchronisiert wird.

Android 2.3.5

Android 2.3.5 SettingsAndroid 2.3.5 Accounts and syncAndroid 2.3.5 Sync Settings

Android 4.0.4

Android 4 SettingsAndroid 4 Accounts and syncAndroid 4 Sync Settings

Je nach dem wie oft synchronisiert wird kann es eine Weile dauern bis der neue Kalender auf dem Android vorhanden ist. Aber danach …

Com2Cal SettingsLGO3D KalenderS3 Kalender

… kann man den Kalender auswählen.

Somit kann ich mich jetzt ein paar neuen Features zuwenden. Das wären z.B. das versenden von SMS noch erfassen, auswählen was man geloggt haben möchte oder wie von jemandem gewünscht, EMail auch erfassen. Mal schauen was noch alles kommen wird.

Bekommen tut man die App bei Google Play.

Get it on Google Play

PS: Die App ist kostenlos blendet aber Werbung ein. Deshalb sind auch einige Berechtigungen nötig die nicht in direkten Zusammenhang mit der Funktionalität der App stehen. Da ich noch keine Erfahrung mit den Werbenetzwerken habe nutze ich aktuell drei Verschiedene. Per Zufall wird gewählt welches Netzwerk genutzt wird. Genutzt werden AdMob, Smaato und Madvertise. Welches Netzwerk was taugt weiss ich noch nicht. Aber Reich wird man dabei nicht. Smiley mit geöffnetem Mund

Jun 082012
 

128x128Vor etwa einem halben Jahr hatte ich mit Hans-Peter Schelian eine Diskussion zum Thema Android und IOS. Irgendwie hat er mir damals was von einer App erzählt die er auf dem Android vermisst. Das hat mich dazu bewogen diese als erstes Android Projekt umzusetzen. So langsam ist die Zeit reif eine erste Version zu veröffentlichen.

Die Idee der App ist eigentlich sehr einfach. Im Kalender werden Einträge erstellt wenn irgend eine Kommunikation via Telefon oder SMS stattgefunden hat.

Bei einem Telefonanruf wird die Dauer, wenn möglich der Name des Anrufers oder des Angerufenen und die Zeit erfasst. Es gibt eingehende-, ausgehende- und verpasste Anrufe. Man sieht also im Kalender wann man was gemacht hat.

Bei den SMS werden zur Zeit nur die eingehenden erfasst. Hier wird im Kalendereintrag auch gleich die Nachricht des SMS gespeichert.

In einem Android Kalender kann das dann so aussehen.

Kalender TagesübersichtAusgehender Anruf im DetailSMS im Detail

Seit einiges Zeit kann man auch den Kalender frei wählen wo man die Einträge erstellen möchte. Wenn gewünscht kann ein neuer Kalender für das Protokollieren erstellt werden. Dieser hat zur Zeit den fixen Namen “Com2Cal”.
Settings von Com2Cal

Ein schöner Nebeneffekt, wenn man die Android Kalender mit z.B. Outlook synchronisiert, ist, man sieht diese Einträge auch dort.
Ansicht in Outlook wenn die Termine synchronisiert werden.

Die App hat noch den Status BETA. Habe noch VIELE Ideen und muss / darf noch einiges machen. Wer sie haben möchte kann sie bei Google Play besorgen.

Zu finden ist die App zur Zeit auf dem BETA Test App Center von AndroidPIT. Mal schauen wie viele BETA Tester ich dort erreiche. Paranoid darf ein BETA Tester nicht sein. Vor allem nicht die Berechtigungen kappen. Macht für mich keinen Sinn User testen zu lassen wenn ich dann bei einem Fehler keine Infos bekomme.

Hier geht’s zum Download. Wer sich bei AndroidPIT nicht registrieren möchte kann die App auch über diesen Link runterladen.

Com2Cal - Android Market

Viel Spass beim Testen. Smiley

Android Source Code einfach in Projekten einbinden

 Android, Entwicklung  Kommentare deaktiviert für Android Source Code einfach in Projekten einbinden
Apr 162012
 

Bei meinen Experimenten mit der Android Entwicklung stiess ich immer wieder auf das selbe Problem. Android ist Open Source aber der Debugger konnte nie in den Source rein springen. Ist auch logisch, denn den müsste ich zuerst runterladen.

Um es richtig zu machen müsste ich den Source Code für alle Versionen runterladen. Irgend wie nicht praktikabel.

Auf den Webseite von Lars Vogel gibt es einige Tutorials zu Android. Eines davon beschäftigt sich mit dem organisieren des Android Source Codes. Eine Lösung ist klassisch via Git. Die Andere via, und das finde ich absolut cool, einem Eclipse Plug-In.

Dieses Plug-In fügt einem Android Projekt automatisch den passenden Source Code hinzu. Auf der Seite sind ein paar andere Plug-Ins zu finden, von Interesse für mich ist zur Zeit nur das Android Sources.

Man füge die Angegebene URL in Eclipse unter “Hilfe -> Neue Software installieren” ein und lade das Plug-In runter. Achtung. Hier ist Geduld angesagt. Das Plug-In ist aktuell 240MB mächtig. Das dauerte so seine Zeit. Und in dieser Zeit tut sich nicht viel. Also Geduld, Eclipse ist nicht abgestürzt oder so. Es dauert halt nur lange.

Neue Software installieren in Eclipse

Wenn man, nach einem Neustart von Eclipse, im Source Code auf eine Klasse des Android Frameworks klickt, und mit F3 in die Definition springt …

Activity Klasse

… sollte in etwa so was hier auftauchen.

Activity Souce Code

Somit ist es also möglich in den Source Code von Android hinein zu debuggen. Cool.

Und einfacher geht es wohl nicht mehr.

PS: Direkt nach dem Neustart von Eclipse konnte ich noch nicht in den Source Code von bestehenden Projekten springen. Aus lauter Frust habe ich mir dann kurz ein neues Android Projekt erstellt. Im neuen Projekt konnte ich dann in den Source Code springen. Danach ging es auch bei bestehenden Projekten.

Apr 072012
 

Wenn man Tag täglich mit der selben Entwicklungsumgebung arbeitet gewöhnt man sich so einiges an. Unter anderem auch das Tastaturlayout der Entwicklungsumgebung. Nutzt man dann einmal eine Andere,  zum Beispiel um Android App’s zu machen, läuft man immer wieder auf. Es ist so ärgerlich wenn man beim debuggen immer wider die falschen F-Tasten drückt.

Oder nur schon das rauslöschen einer Zeile Code. Man gewöhnt sich das Ctrl-Shift-l einfach an. Macht man das dann in Eclipse ist das Ergebnis nicht wie erwartet.

Aber alle Shortcuts selber zu erstellen tut sich wohl niemand einfach so an. Wenn man dann nur die Java Umgebung installiert hat kann man das Visual Studio Keymap schon gar nicht auswählen.

Beim Suchen nach einer Lösung bin ich auf dieses Posting gestossen.

Eclipse Ganymede: Install Visual Studio keymapping

Siehe da, danach hat man ansatzweise ein Visual Studio Keymap.

Visual Studio Keymap unter Eclipse

Der Trick an der Sache ist das man die C/C++ Eclipse Umgebung auch noch installiert. Dass kann man einfach über das Menü “Hilfe -> neue Software installieren” machen.

Man wählt das Repo (Indigo – http://download.eclipse.org/releases/indigo) aus und installiert die “C/C++ Development Tools”. Nach dem abschliessenden Neustart von Eclipse kann man dann das Keymap laden.

Die zu installierenden C/C++ Development Tools

Das debuggen mit F10 ist schon mal angenehm und funktioniert auch. Der Rest wird sich noch zeigen.

PS: Ctrl+Shift+l um eine Zeile zu löschen ist hier nicht drin.

PSS: Auf der Suche nach einem Keymap für ReSharper unter Eclipse bin ich auf das hier gestossen. Testen tue ich es aber nicht. Zu alt. Aber scheinbar ein Bedürfnis.