Archive for Wissenswert

Tutorial: Android Geräte USB-Treiber installieren

Der Titel mag einigen vielleicht merkwürdig vorkommen, “Das macht Windows7 doch schon alles automatisch!”.
Eigentlich sind Geräte schon lange kein Problem mehr, an den PC angeschlossen und in Null-Komma-Nix läuft es. Doch seitdem ich auf der Arbeit viel mit den unterschiedlichsten Android Geräten arbeite, musste ich zusehen wie dieser Grundsatz sich aufzulösen schien. Es wurde zwar oft soweit ein USB-Treiber installiert das ich auf die SD-Card zugreifen konnte, doch Debugging oder das Benutzen des DDMS-Tools war in den seltensten Fällen möglich.

Als Treiber-Pfad habe ich dann immer den Ordner usb-driver im Android-SDK verwendet, doch auch dies half nicht, bis ich auf eine Hilfe im Internet stieß, die die Lösung wusste.
Man muss oftmals nur 2-4 Zeilen pro Gerät in einer Datei im SDK-Treiber hinzufügen und schon geht alles reibungslos. Es konnte doch so einfach sein ^^

Damit vielleicht dem ein oder anderen dieser beschwerliche Weg erspart bleibt möchte ich die Lösung nun hier mit euch teilen. Damit ich regelmäßig die nötigen Zeilen für weitere Geräte hinzufügen kann ohne einen schon längst verschwundenen Post editieren zu müssen, habe ich eine Tutorial-Seite erstellt: Android USB Driver.

Wenn ihr noch weitere Geräte in der Liste vermisst oder die Zeilen für weitere Geräte habt, freu ich mich über einen Kommentar :)

Wissenswert: Boolean und die Größe

Jeder kennt es, jeder benutzt es und viele erschrecken sich, wenn sie merken wieviel Speicher eigentlich eine boolean Variable verwendet.
Ein Boolean kann 2 Status annehmen, True oder False, 1 oder 0. Da denkt man eigentlich das ein Bit völlig ausreichen würde oder wenn man in der kleinsten Einheit in vielen Programmiersprachen ausgeht, einem Byte.
Doch auf normalen Rechnern wird für einen boolean entweder 32 Bit oder 64 Bit verwendet, je nach Architektur. Das heißt ein boolean verwendet 4 oder 8 Byte! Begründet wird dies mit der besseren/schnelleren Verwendbarkeit der Variable im CPU.

Jetzt werden einige Sagen, wenn ich sizeof(bool) ausgeben lasse, kommt dort 1, also ein Byte. Das ist soweit richtig, da C# einen boolean wie ein byte handhabt, doch wenn man sich einmal die Größe einer boolean Variable mit Marshal.SizeOf anzeigen lässt, steht bei 32 Bit Systemen dort 4.

1
2
bool test = true;
Marshal.SizeOf(test);
bool test = true;
Marshal.SizeOf(test);

Der Unterschied hier ist, das sizeof(bool) die C# Variante der Größe wiedergibt und Marshal.SizeOf die Unmanaged Größe angibt. Demnach kann man davon ausgehen, das intern ein C# Boolean auch als 4/8 Byte gespeichert wird.

Auch Wikipedia sagt zu diesem Thema:

[...]Aus technischen Gründen wird jedoch in der Regel eine andere Repräsentation gewählt, meist abhängig von der Wortbreite des konkreten Systems.[...]
Quelle: Wikipedia

Daher muss man sich Gedanken machen, wenn es um die Größe von z.b. einem struct geht, ob man nicht lieber eine byte Variable verwendet. Dies ist zwar nicht so sicher da man mehr als nur 2 Status darin speichern kann, doch spart es recht viel Speicher. Und wenn man oft structs hin und her kopieren muss, oder neue Instanzen erstellen muss, kann das schonmal perfomance fressen.