Seiten

Samstag, 16. Juni 2012

Android: Admob-SDK (oder andere Bibliotheken) mit Maven nutzen

Wer Android-Entwicklung betreibt wird wissen das der komplette Build einer App standardmäßig auf Ant aufgebaut ist. Wer aber lieber (so wie ich) mit Maven arbeitet wird schnell auf das Problem stoßen, dass Bibliotheken nicht in den globalen Repositories zur Verfügung gestellt sind. Zum Beispiel das Admob SDK von Google steht nur als Jar zum Download bereit, welches ich hier als Beispiel nehme. Die Vorgehensweise funktioniert aber genauso mit jeder anderen Bibliothek. Prinzipiell hat man mehrere Möglichkeiten das mit Maven trotzdem hinzubekommen:

  1. Die Bibliothek auf ein eigenes Repository hochladen (ist für Firmen interessant die bspw. einen eigenen Artifactory- oder Nexus-Server zur Verfügung haben)
  2. Die Bibliothek ins Projekt mit aufnehmen und relativ mit dem Scope system und dem systemPath-Tag ins Projekt einbinden (ist imho ein Rückschritt was die Abhängigkeitenverwaltung in Maven angeht und muss außerdem für jedes Projekt wiederholt werden)
  3. Meine präferierte Möglichkeit ist die Installation in das lokale Repository auf die ich nun näher eingehen will. 
Zuallererst laden wir uns das Admob-SDK (zur Zeit ist Version 6.0.1 aktuell) und legen es in ein beliebiges Verzwichnis. In diesem Verzeichnis legen wir zusätzlich eine Datei mit dem Namen pom.xml an und füllen Sie mit folgendem Inhalt:


    4.0.0
    com.blogspot.problemexterminator
    install-admob
    1.0.0
    
    
        install:install-file
        
            
                org.apache.maven.plugins
                maven-install-plugin
                2.3.1
                
                    GoogleAdMobAdsSdk-6.0.1.jar
                    com.google.ads
                    admob
                    jar
                    6.0.1
                
            
        
    

Es wird in dieser Pom einfach nur das install-Plugin für die Installation in das lokale Repository konfiguriert. Wichtig ist, dass folgende Tags (innerhalb <configuration> richtig definiert sind:

  • <file> Dateipfad der heruntergeladenen Jar (relativ zur Pom)
  • <groupId> - frei wählbar, über diesen wird später in den anderen Poms das SDk referenziert
  • <artifactId>  - frei wählbar, über diesen wird später in den anderen Poms das SDk referenziert
  • <version> - ebenfalls frei wählbar, jedoch sollte dies mit der Version des SDK übereinstimmen
Jetzt muss einfach nur mit der Kommandozeile zum richtigen Ordner navigiert werden und "mvn" ausgeführt werden:



Da das Default-Goal in der Pom bereits auf install-file gesetzt ist, muss hier nichts weiter hinzugefügt werden und Admob ist in eurem lokalen Repository.

 Nun kann in jedem beliebigen Projekt und in jedem beliebigen Scope Admob ganz normal referenziert und verwendet werden:


....
   
        
        ....
            
                com.google.ads
                admob
                6.0.1
            
        
    
Wie bereits erwähnt ist wichtig, dass beim Referenzieren die artifactId, groupId und die Versionsnummer aus der vorherigen Pom übereinstimmt.

Das Beispiel für die Installation von Admob ins lokale Repository steht hier zum Download bereit, lediglich mvn muss noch selbst ausgeführt werden.

Viel Spaß damit. ;)


Montag, 11. Juni 2012

RamDisk Auf 64-Bit Windows und Temp-Verzeichnisse ändern

Eine RamDisk ist ein virtuelles Laufwerk in eurem Rechner das einzig und allein im Arbeitsspeicher abgelegt ist. Der Vorteil liegt darin, dass der Zugriff darauf extrem schnell ist (5-10mal schneller als bspw. der Zugriff auf eine SSD). Davon kann man bspw. profitieren, wenn man sein temporäres Verzeichnis darauf ablegt, weil viele Programme dies nutzen, um Dateien kurzzeitig zwischenzuspeichern. Die meisten Setups "parken" hier ihre Dateien zwischen, ebenso wie die meisten Packtools (7-zip, WinRAR). Ein weiterer Vorteil ist, dass dieses Laufwerk nach einem Neustart des Rechners immer automatisch geleert wird also kein Datenmüll übrig bleibt. Das kann man auch dafür nutzen, um die Cache-Verzeichnisse des Browsers darauf abzulegen (z.B. für Chrome) was wiederum auch Vorteile in Bezug auf Datensicherheit bringt.

Eine RamDisk unter Windows einzurichten ist vom Prinzip her keine große Sache und es gibt auch einige kostenlose Programme dafür. Die meisten unterliegen aber Beschränkungen wie bspw. nur lauffähig auf 32-Bit Betriebssystemen, Werbung oder Beschränkung auf 4 GB. Gerade wer ein 64-Bit Windows installiert hat und viel Arbeitsspeicher zur Verfügung hat kann von einer großen RamDisk profitieren. Das beste Programm für diesen Zweck ist meiner Meinung nach ImDisk. Keine Werbung, keine Größenbeschränkung, auf 64-Bit lauffähig und skriptfähig. Außerdem ist für das Anlegen/Ändern kein Neustart notwendig. ImDisk hat außer der RamDisk-Funktion noch einiges mehrt zu bieten auf das ich aber hier nicht näher eingehen will.

Die folgende Anleitung funktioniert genau so auch unter 32-Bit Betriebssystemen, jedoch kann leider nicht so viel Speicher verwendet werden.

Ladet euch den Installer herunter ("Download ImDisk install package") und installiert das Programm. Nun findet man in der Systemsteuerung einen neuen Eintrag für ImDisk, welches die grafische Oberfläche zur Verfügung stellt:

Für einen Anfänger und zum Ausprobieren ist dies ganz gut, hat jedoch den Nachteil das nach einem Neustart das virtuelle Laufwerk weg ist und das neu angelegte virtuelle Laufwerke formatiert werden muss. Aus diesem Grund beziehe ich mich hier auf die Kommandozeile von ImDisk, die automatisch dabei ist.

Zuerst starten wir eine Konsole mit Adminstratorrechten und legen ein Laufwerk R mit bspw. 5 Gigabyte an. Die Größe und der Laufwerksbuchstabe kann natürlich frei gewählt werden:

imdisk -a -s 5G -m R: -p "/fs:ntfs /q /y"

Zur Erklärung:

  • -a legt ein neues virtuelles Laufwerk an
  • -s 5G legt die Größe auf 5Gigabyte fest
  • -m R: weist den Laufwerksbuchstaben R: (für RamDisk) zu
  • -p "/fs:ntfs /q /y" übergibt die Parameter an den Windows-Format-Befehl (als NTFS formatieren, schnelles Formatieren und ohne Rückfrage)
Wenn das geklappt hat, ist nun im Explorer ein neues Laufwerk mit 5 Gigabyte Speichergröße vorhanden und kann genutzt werden. Nachdem wir nun den richtigen Befehl gefunden haben müssen wir ImDisk nur noch dazu bringen dies immer automatisch nach einem Neustart einzubinden. Im Autostart-Ordner funktioniert leider nicht, da für das automatisch Formatieren Adminrechte benötigt werden. Als Ersatz kann hierfür die Aufgabenplanung genutzt werden.
In der Aufgabenplanung erstellen wir eine neue Aufgabe (nicht die einfache Aufgabe erstellen, da diese zu wenig Optionen hat) und füllen die erforderlichen Felder aus:



Der Name ist frei wählbar, wichtig ist aber das "mit höchsten Privilegien" ausgewählt ist.
Beim Reiter Trigger erstellen wir einen neuen Trigger so das die Aufgabe bei jedem Systemstart ausgeführt wird:


Nun folgt der Reiter Aktion, wo wir nun das eigentliche Anlegen der RamDisk durchführen:


Der Pfad zur imdisk.exe ist normalerweise C:\Windows\System32\imdisk.exe und wird hier ausgewählt. Wichtig sind zudem die Argumente, die wir vorher in der Kommandozeile bestimmt haben. (im Bsp. ist das -a -s 5G -m R: -p "/fs:ntfs /q /y" )

Nun legen wir noch die temporären Ordner auf diese RamDisk um von der eben angelegten RamDisk zu profitieren. Wichtig ist vorher einen Neustart durchzuführen, um zu überprüfen, ob das automatische Anlegen der RamDisk funktioniert hat.

Um alle Temp-Verzeichnisse auf die RamDisk zu legen müssen wir nur ein paar Umgebungsvariablen anpassen. Dazu starten wir die Systemeigenschaften (Win+Pause) und klicken auf "Erweiterte Systemeinstellungen". Beim Reiter "Erweitert sehen wir nun ganz unten den Knopf "Umgebungsvariablen":


Bei den Umgebungsvariablen ändern wir nun die Benutzervariablen TEMP und TMP und auch die Systemvaraiblen TEMP und TMP auf das neue Laufwerk ab (hier: R:\). Im Anschluss sollte das dann folgendermaßen aussehen:


Ein letzter Neustart, um zu überprüfen, ob Alles funktioniert und schon sind wir fertig.