Schlagwort-Archive: facebook

Buck – Das neue Build-Tool von Facebook

Facebook hat sein Build-Tool Buck als Open Source veröffentlicht. Das Tool hat gewisse Ähnlichkeiten mit dem bei Google verwendeten Cloud-Basierten Buildsystem. Während es bei Buck keine Cloud mit verteiltem Dateisesystem gibt, sind die ähnlichkeiten doch groß. Die Konfigurationsdateien heißen bei Google BUILD, während sie bei Facebook BUCK heißen, die Syntax ist aber identisch. Auch bei den Features sind die Tools ähnlich, nur dass Buck halt auf meinem kleinen Rechner zu Hause laufen kann.

Ich habe das Tool mal ausprobiert und beschreibe hier meine Erlebnisse. Ausgehend von einem neuen Benutzer auf GitHub, auf einem System auf dem ich kein Root-Zugang habe und der Java-Compiler veraltet ist, sind einige Härtefälle enthalten ;)

Auf der Installationsseite von Facebook sind die drei Schritte, die benötigt werden, angegeben:

git clone git@github.com:facebook/buck.git
cd buck
ant
sudo ln-s ${PWD}/bin/buck /usr/bin/buck$

Wenn ihr Root-Zugang zu eurem System habt und die benötigte Software auf dem neuesten Stand ist, müsst ihr erstmal nicht weiterlesen ;)

GitHub-Account erstellen

weiter zum Installieren

Zunächst benötigt man einen GitHub-Account und ssh-Schlüssel, wie hier beschrieben.

Falls schon ein ssh-Schlüssel erstellt worden ist, liegt er in ~/.ssh/id_rsa.pub. Falls die datei nicht vorhanden ist, muss ein Schlüssel erstellt werden:

ssh-keygen -t rsa -C "mail@gmail.com"

Wenn man einfach Enter drückt, landet der Schlüssel im obigen Verzeichnis, man kann das hier aber ändern. Zum entschlüsseln des ssh-Schlüssels wird ein Passwort benötigt. Es gelten wie immer die gleichen Sicherheitsregeln.

Anschließend wird der Speicherort des Schlüssels und der Fingerprint angezeigt.

Den exakten Inhalt der Datei ~/.ssh/id_rsa.pub, die den öffentlichen Schlüssel enthält muss gleich bei GitHub eingegeben werden.

Erstellt einen (kostenlosen) Account bei GitHub und loggt euch ein. Wenn ihr einen Gravatar-Account habt, ist euer Avatar auch bereits eingestellt ;)

Klickt nun auf Account Settings (oben rechts, neben dem Ausgang) und dann im Menü links auf SSH Keys. Klickt auf Add SSH Key und gebt den Inhalt der Datei mit dem öffentlichen Schlüssel ein. Am Besten per Copy & Paste ^^

Zurück an der Kommandozeile könnt ihr testen, ob alles soweit gefunzt hat:

ssh -T git@github.com

Der Schlüssel von GitHub ist noch unbekannt, ihr müsst ihn nun verifizieren. Der Fingerprint ist 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Falls ihr keine Lust auf den Test habt, kommt die Abfrage des Keys gleich beim Holen der Buck-Daten aus dem Repository.

Buck installieren

weiter zum Einbinden

Nun können wir nochmal versuchen, den Buck-Quellcode runterzuladen. Wir können das in einem Verzeichnis unserer Wahl machen (ich wähle das Verzeichnis /local/programs als Basis:

cd /local/programs
git clone git@github.com:facebook/buck.git
cd buck
ant

Zumindest die ersten drei Schritte sollten nun ohne Probleme funktionieren.

Falls eure Java-Installation up-to-date ist, klappt alles, ansonsten gibt ant eine Fehlermeldung aus.

Es kann verschiedene Fehlermeldungen geben, je nach aktueller Java-Version. Eine Möglichkeit ist Unrecognized option: -Werror, die von einem veralteten javac ausgegeben wird.

Java 1.5 genügt nicht, ich hab das Oracle JDK 1.7 genutzt. Wie es mit 1.6 aussieht, weiß ich nicht. Das JDK müsst ihr irgendwo installieren und den Pfad in der Umgebungsvariable JAVA_HOME setzen, dann wird die neue Version automatisch von ant benutzt:

export JAVA_HOME=/local/programs/jdk/

Ein neuer Versuch, buck zu kompilieren sollte nun erfolgreich sein.

Buck im System einbinden

Wenn man Root-Zugriff hat, kann man nun einfach einen symbolischen Link auf buck anlegen:

sudo ln -s /local/programs/buck/bin/buck /usr/bin/buck

Ohne Root-Zugriff kann man zum Beispiel den Pfad erweitern:

export PATH=$PATH:/local/programs/buck/bin

Die Zeile kann man bei Bedarf in die .bashrc einfügen, so dass buck bei jedem Systemstart verfügbar ist.

Nun sollte Buck erfolgreich eingerichtet sein und funktionieren :) Ein erstes Beispiel (zur Android-Programmierung) gibts bei Facebook. Sobald ich es für Java ausprobiert habe, werde ich hier einen weiteren Beitrag dazu schreiben.

Geschrieben von Kap. Zuletzt geändert am 6. Mai 2013.

Das böse hat mich erwischt ;)

Ich habe mich lange gewehrt und nun ist es doch passiert, ich habe mir einen Facebook-Account zugelegt (schließlich muss ja „jeder“ bei Facebook sein ;) ). Aber keine Angst, ich habe nicht vor den Account zu benutzen.

Durch einen Post von Sergio Amaro bin ich auf die Idee gekommen, auf Facebook für Google+ Werbung zu machen. Das hat auch den Vorteil, dass ich gefunden werde, falls jemand nach mir suchen sollte.

Das ganze sieht dann so aus:

Facebook-Profil

Die Vorlage habe ich etwas abgeändert, da ich nur auf G+ aktiv sein möchte. Hier sind noch die Assets, die ich selbstversändlich zur Benutzung freigebe (in Deutsch und Englisch):


Ich bin nur bei Google+

I'm only at Google+

Geschrieben von Kap. Zuletzt geändert am 20. November 2013.

Unendlich Leben in Candy Crush Saga

Einige von euch kennen es wohl, das Spiel Candy Crush Saga von King.com. Zunächst ein bei Facebook beliebtes Spiel, gibt es Candy Crush nun auch für Handys und Tablets. Nachdem ich dem Phänomen zunächst wie bei FarmVille und anderem Krams  eher beobachtend gegenüber gestanden habe, hat es mich nun auch erwischt.

Das Spielprinzip von Candy Crush ist süchtigmachend, bei der sonstigen Ausführung gibt es aber einiges zu bemängeln. Synchronisierung mit mehreren Devices ist nur über Facebook möglich. Das ist auch nicht so leicht zu umgehen, da die Savegames nicht auf der SD-Karte sondern im geschützen Ordner /data/data/com.king.candycrushsaga/app_storage gespeichert werden, auf den man nur auf gerooteten Geräten Zugriff hat.
Weiterer Minuspunkt sind die Nutzungsmodalitäten des Spiels. Zusätzlich zum nervenden „Feature“ der In-App-Käufe von Boni wie zusätzliche Züge, ist die Anzahl der Versuche auf 5 begrenzt. Immerhin regenerieren sich die Leben alle 30 Minuten. Alternativ kann man seinen noch-Freunden bei Facebook auf den Sack gehen und um Leben betteln. Das lässt sich jedoch recht einfach ändern. Es gibt hingegen keine Bezahlvariante des Spiels, in der man ganz Normal wie gewohnt spielen kann.

Ich übernehme keine Garantie dafür, dass das Folgende Vorgehen funktioniert. Ich übernehme keine Haftung für eventuell auftretende Schäden. Zur Durchführung muss das Gerät auf eigenes Risiko gerootet werden.

Es ist ratsam, vor dem Start eine Sicherung des Systems, zumindest von Candy Crush Saga durchzuführen (zum Beispiel mit Titanium Backup).

Manuelle Synchronisation

Nutzer ohne Facebook-Account haben ein Problem, wenn sie ihre Spielstände auf mehreren Geräten synchron halten wollen. Wenn man jedoch Root-Zugriff hat, ist das ganz einfach. Mit einem geeigneten Root-Dateimanager (zum Beispiel dem Datei Manager (HD-Version für Tablets) oder dem (kostenpflichtigen) Root Explorer kann man auf die Dateien save_0.dat und save_0.bak im Verzeichnis /data/data/com.king.candycrushsaga/app_storage zugreifen und sie so zwischen den Geärten austaustauschen, zum Beispiel via DropBox oder Wuala.

Extraleben

Nur etwas schwieriger stellt sich die Sache mit den Leben heraus. Als Voraussetzung benötigt man ein installiertes Candy Crush Saga. Wenn man seinen Spielstand behalten möchte, sichert man zunächst wie oben beschrieben die Spielstände. Zur Durchführung der Änderung wird einige Software benötigt:

  1. 7zip (oder vergleichbares Tool)
  2. ein Java JDK
  3. den apk-signer
  4. das Tool zipalign, das zum Beispiel im Android SDK enthalten ist

Nun muss man folgendes machen:

  1. Die Datei com.king.candycrushsaga.apk dem Verzeichnis /data/app/ auf den PC kopieren. Sie kann dabei zum Beispiel auf der SD-Karte zwischengespeichert werden.
  2. Das Spiel löschen.
  3. Die Datei mit 7zip als zip öffnen und aus dem Ordner assets/res die Datei tweakdata.prop extrahieren (zum Beispiel in ein Explorerfenster ziehen.
  4. Die Datei mit einem Editor öffnen und den Wert für lives.base.max auf 1337 ändern und speichern.
  5. Die geänderte Datei wieder in das 7zip-Fenster ziehen und die bestehende Datei ersetzen.
  6. Im Hauptverzeichnis in der .apk-Datei muss das Verzeichnis META-INF gelöscht werden. Hier ist die Signatur der unveränderten Datei gespeichert.
  7. den apk-signer öffnen und einen Schlüssel generieren. Dazu muss zunächst der Speicherort des Schlüssels gewählt werden, Passwörter und Aliase festgelegt werden. Da wir diese Änderung nur für uns selbst durchführen und die .apk-Datei nicht veröffentlichen, können wir hier irgendwas eintragen, solange das Passwort 8 Zeichen lang ist. Ein Name muss auch eingetragen werden. Ein Klick auf „Generate Keyfile“ erzeugt den Schlüssel.
  8. Mit diesem Schlüssel wird nun die geänderte .apk des Spiels signiert. Falls die Datei jarsigner.exe nicht im Suchpfad enthalten ist, muss der Pfad zum JDK-bin-Ordner gesetzt werden. (Das ist unter Windows bei Standardinstallationen der Fall). Die Schlüsseldatei muss ausgewählt werden, Passwörter und Aliase wie oben eingegeben und die unsignierte, veränderte .apk-Datei gewählt werden. Ein Klick auf „Sign!“ signiert dann die Datei. Falls der Pfad zur jarsigner.exe falsch ist, erscheint eine entsprechende Fehlermeldung.
  9. Die .apk-Datei muss nun noch ausgerichtet werden. Dafür muss auf der Kommandozeile das tool zipalign.exe aufgerufen werden. Der Aufruf sieht zum Beispiel so aus: D:adt-bundle-windows-x86_64sdktoolszipalign.exe -v 4 com.king.candycrushsaga.apk com.king.candycrushsaga-signed.apk. Der Pfad zum Android-SDK muss natürlich angepasst werden. Der zweite Dateiname ist die Ausgabedatei.
  10. Nun muss die signierte .apk auf das Android-Gerät zurückgespielt und installiert werden.
  11. Vorher erstellte Sicherheitskopieen können nach einem ersten Start in den alten Ordner zurückgespielt werden.

Mit 1337 Versuchen gibt es keinen Grund mehr, das Spiel aus der Hand zu legen.

Das Ergebnis: Viele Leben in Candy Crush

Bei diesem Vorgehen ist zu beachten, dass ab diesem Zeitpunkt keine Updates des Spiels mehr installiert werden. Nach einem manuellen Update muss man das Ganze nochmal durchführen.

Geschrieben von Kap. Zuletzt geändert am 20. November 2013.