====== AndroidStudio ====== Nachfolgend soll die Installation und Konfiguration von Android Studio unter DEBIAN Linux dokumentiert werden. Es wird kein Anspruch auf Vollständigkeit erhoben. \\ ===== Voraussetzungen ===== Es wird ein DEBIAN-Linux-System vorausgesetzt, sowie eine Verbindung zum Internet, um Pakete und das Android Studio selbst herunterzuladen. Sollte ein [[:debian-linux:minimalinstallation|Minimalinstallation]] als Voraussetzung genutzt worden sein, ist die Installation einer grafischen Benutzeroberfläche zwingend notwendig, da Android Studio ein grafisches Programm ist. \\ ==== JAVA ==== Sollte das distributionseigene JDK genutzt werden, muss folgendes Paket installiert werden: "''openjdk-8-jdk''". \\ Es gibt aber auch die Möglichkeit [[http://www.oracle.com/technetwork/java/javase/downloads/|Oracle JAVA]] zu installieren. Hierfür muss das JDK-Archiv (nachfolgend das Archiv: "''jdk-8u162-linux-x64.tar.gz''") heruntergeladen und mit Hilfe von "''make-jpkg''" in ein DEBIAN-Paket umgewandelt werden. \\ Installation des DEBIAN-Paketes, welches "''make-jpkg''" enthält: ~# apt install java-package \\ Umwandeln des heruntergeladenen JAVA-Archivs (als Benutzer): ~$ make-jpkg jdk-8u162-linux-x64.tar.gz Creating temporary directory: /tmp/make-jpkg.dhA9AOK2g4 Loading plugins: /usr/share/java-package/common.sh /usr/share/java-package/javase.sh /usr/share/java-package/jdk-doc.sh \ /usr/share/java-package/oracle-jdk-doc.sh /usr/share/java-package/oracle-jdk.sh /usr/share/java-package/oracle-jre.sh \ /usr/share/java-package/oracle-server-jre.sh Detected Debian build architecture: amd64 Detected Debian GNU type: x86_64-linux-gnu Detected product: Java(TM) Development Kit (JDK) Standard Edition, Version 8 Update 162 Oracle(TM) Is this correct [Y/n]: Y Checking free diskspace: done. In the next step, the binary file will be extracted. Probably a license agreement will be displayed. Please read this agreement carefully. If you do not agree to the displayed license terms, the package will not be built. Press [Return] to continue: Testing extracted archive... okay. Create debian package: dpkg-buildpackage: Information: Quellpaket oracle-java8-jdk dpkg-buildpackage: Information: Quellversion 8u162 ... dpkg-deb: Paket »oracle-java8-jdk-dbgsym« wird in »../oracle-java8-jdk-dbgsym_8u162_amd64.deb« gebaut. dpkg-deb: Paket »oracle-java8-jdk« wird in »../oracle-java8-jdk_8u162_amd64.deb« gebaut. dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../oracle-java8-jdk_8u162_amd64.changes dpkg-genchanges: Information: Binärpaket(e) hochzuladen (kein Quellcode enthalten) dpkg-source --after-build package dpkg-buildpackage: Information: Binärpaket(e) hochzuladen (keine Quelle enthalten) copy oracle-java8-jdk_8u162_amd64.deb into directory /home/service/Downloads/ The Debian package has been created in the current directory. You can install the package as root with: dpkg -i oracle-java8-jdk_8u162_amd64.deb Removing temporary directory: done \\ Bevor das Paket installiert werden kann, muss die Abhängigkeit "''java-common''" noch installiert werden: ~# apt install java-common \\ Das erstellte Paket ("''oracle-java8-jdk_8u162_amd64.deb''") kann, wie bereits oben vorgeschlagen, dann manuell installiert werden: ~# dpkg -i oracle-java8-jdk_8u162_amd64.deb \\ ===== Download ===== Das Programm "''Android Studio''" kann in einer aktuellen Version von der Seite [[https://developer.android.com/studio/index.html|android.com]] heruntergeladen. Das ZIP-Archiv ist über 700 MB groß, der Download dauert also je nach Anbindung eine Weile. Das Archiv kann an beliebiger Stelle im Dateisystem entpackt werden, nachfolgend ist es das Verzeichnis "''/data/AndroidStudio/AndroidStudio3.0''" (Das Verzeichnis "''/data/''" ist eine eigene Partition). \\ ===== Konfiguration ===== Leider bringt das Programm keinen eigenen "Launcher" mit (eine Datei mit der Endung "''*.desktop''"). Dieser kann aber relativ einfach erstellt werden. Dazu einfach eine Datei (zum Beispiel: "''AndroidStudio3.0.desktop''") mit folgendem Inhalt erstellen: [Desktop Entry] Version=1.0 Type=Application Name=Android Studio 3.0 Name[de_DE]=Android Studio 3.0 Exec="/data/AndroidStudio/AndroidStudio3.0/bin/studio.sh" %f Icon=/data/AndroidStudio/AndroidStudio3.0/bin/studio.png Categories=Development;IDE; Terminal=false StartupNotify=true //Der Pfad muss hier natürlich entsprechend den eigenen Gegebenheiten angepasst werden.// \\ Wird das Programm das erste Mal gestartet, können Einstellungen aus alten Versionen bei Bedarf importiert werden: {{:android:debian-android-studio-01.png?nolink}} \\ Der Willkommensbildschirm leitet durch die erste Konfiguration: {{:android:debian-android-studio-02.png?nolink}} \\ Der Benutzer kann entscheiden, ob Android Studio alle Einstellungen selbst vornehmen soll oder man die einzelnen Komponenten selbst auswählt: {{:android:debian-android-studio-03.png?nolink}} \\ Soll der Benutzer selbst entscheiden, kann als erstes ein gewünschtes Thema ausgewählt werden: {{:android:debian-android-studio-04.png?nolink}} \\ Im nächsten Schritt wird entschieden, welche zusätzlichen Komponenten mit installiert werden sollen: {{:android:debian-android-studio-05.png?nolink}} Hier wurde das Verzeichnis vom SDK in das Verzeichnis "''/data/''" verschoben, damit nicht alles im Benutzerverzeichnis landet. \\ Das Programm zeigt an, wie viel Daten heruntergeladen werden müssen: {{:android:debian-android-studio-06.png?nolink}} \\ Es kann vorkommen, dass Android Studio einen Hinweis auf die Nutzung eines beschleunigten Emulatormodus hinweist: {{:android:debian-android-studio-07.png?nolink}} \\ Nach einem Klick auf "''Finish''" beginnt der Download, was, je nach Anbindung, einige Zeit dauern kann: {{:android:debian-android-studio-08.png?nolink}} \\ Nach dem Download kann dann ein vorhandenes Projekt geöffnet oder ein neues gestartet werden: {{:android:debian-android-studio-09.png?nolink}} \\ Für ein neues Projekt müssen einige Angaben gemacht werden: {{:android:debian-android-studio-10.png?nolink}} Auch hier wurde der Pfad für das Projekt nach "''/data''" verschoben. \\ Im nächsten Schritt kann die Zielplattform ausgewählt werden: {{:android:debian-android-studio-11.png?nolink}} \\ Dann kann die Aktivität gewählt werden: {{:android:debian-android-studio-12.png?nolink}} \\ Die gewählte Zielplattform und die Aktivitäten werden installiert: {{:android:debian-android-studio-13.png?nolink}} \\ Dann beginnt automatisch das Bauen von Gradle: {{:android:debian-android-studio-14.png?nolink}} Im Hintergrund wird dafür das eingestellte Gradle-Paket aus dem Internet heruntergeladen, was einige Zeit in Anspruch nehmen kann. \\ Android Studio zeigt an, wenn weiter Komponenten nachinstalliert werden müssen: {{:android:debian-android-studio-15.png?nolink}} \\ Klickt der Benutzer auf den blau hinterlegten Link, erfolgt automatisch ein Download. Bei Bedarf müssen die Lizenzbedingungen akzeptiert werden: {{:android:debian-android-studio-16.png?nolink}} \\ {{:android:debian-android-studio-17.png?nolink}} \\ Nach dem Download aller fehlenden Komponenten, erscheint das Bearbeitungsfenster: {{:android:debian-android-studio-18.png?nolink}} \\ ==== Verzeichnisse verschieben ==== Das Android Studio und seine zugehörigen Komponenten (zum Beispiel "''Gradle''") legen die Daten im Verzeichnis des Benutzers ab. Da diese unter Umständen einigen Speicherplatz beanspruchen, erfolgt im nachfolgenden Fall eine Verschiebung in das Verzeichnis "''/data/AndroidStudio/''". \\ Verschiebung von "''.android''": ~$ cd ~$ mv .android /data/AndroidStudio/ && ln -s /data/AndroidStudio/.android \\ Verschiebung von "''.AndroidStudio3.0''": ~$ cd ~$ mv .AndroidStudio3.0 /data/AndroidStudio/ && ln -s /data/AndroidStudio/.AndroidStudio3.0 \\ Verschiebung von "''.gradle''": ~$ cd ~$ mv .gradle /data/AndroidStudio/ && ln -s /data/AndroidStudio/.gradle \\ ===== Emulator ===== Der Emulator, welcher ein Android-Gerät simuliert, kann wie folgt gestartet werden: {{:android:debian-android-studio-emulator-01.png?nolink}} \\ //In der Menüleiste auf "''Tools''" -> "''Android''" -> "''AVD Manager''" klicken.// \\ Hier ist bereits ein Telefon vorinstalliert, welches durch Drücken auf den Abspielknopf (rechts unter "''Actions''") gestartet werden kann: {{:android:debian-android-studio-emulator-02.png?nolink}} \\ == Probleme == Im vorliegenden Fall startete der Emulator nicht und zeigte im Android Studio an, dass er Probleme mit dem Grafiktreiber ("''Intel i965''"). Nach Recherche im Internet ergab sich, dass Android Studio Probleme mit der eigenen Bibliothek "''libstdc++.so.6''" hatte. Hier half dann ein Verknüpfen mit der systemeigenen Bibliothek: ~$ cd /data/AndroidStudio/Android/emulator/lib64/libstdc++ ~$ mv libstdc++.so.6 libstdc++.so.6.BAK ~$ ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 \\ ==== Konsolenbefehle ==== Der Emulator kann auch gut über die Konsolenbefehle benutzt werden. \\ Auflisten aller installierten virtuellen Geräte: ~$ /data/AndroidStudio/Android/tools/bin/avdmanager list avd Parsing /data/AndroidStudio/Android/build-tools/26.0.2/package.xmlParsing /data/AndroidStudio/Android/build-tools/27.0.3/package.xmlParsing /data/AndroidStudio/Android/emulator/package.xmlParsing /data/AndroidStudio/Android/extras/android/m2repository/package.xmlParsing /data/AndroidStudio/Android/extras/google/m2repository/package.xmlParsing /data/AndroidStudio/Android/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2/package.xmlParsing /data/AndroidStudio/Android/extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2/package.xmlParsing /data/AndroidStudio/Android/patcher/v4/package.xmlParsing /data/AndroidStudio/Android/platform-tools/package.xmlParsing /data/AndroidStudio/Android/platforms/android-26/package.xmlParsing /data/AndroidStudio/Android/platforms/android-27/package.xmlParsing /data/AndroidStudio/Android/sources/android-27/package.xmlParsing /data/AndroidStudio/Android/system-images/android-27/google_apis/x86/package.xmlParsing /data/AndroidStudio/Android/system-images/android-27/google_apis_playstore/x86/package.xmlParsing /data/AndroidStudio/Android/tools/package.xmlAvailable Android Virtual Devices: Name: Nexus_5X_API_27_x86 Device: Nexus 5X (Google) Path: /home/service/.android/avd/Nexus_5X_API_27_x86.avd Target: Google APIs (Google Inc.) Based on: Android API 27 Tag/ABI: google_apis/x86 Skin: 1920x1080 Sdcard: 800 MiB \\ Löschen der Datenpartition und anschließendes Starten des Gerätes: ~$ /data/AndroidStudio/Android/tools/emulator -avd -wipe-data //Der Gerätename entspricht dabei dem "''Namen''" bei den aufgelisteten Geräten.// \\ ==== Administrator-Zugriff ==== Es ist auch möglich, dass Gerät für Testzwecke zu "rooten", damit Apps installiert werden können, die Administrator-Zugriffe benötigen. Es wird dabei nach der Anleitung von [[https://github.com/0xFireball/root_avd|github.com]] vorgegangen. \\ === Vorbereitung === Folgende Vorbereitungen sollten getroffen werden: * wenn kein "''adb''" vorhanden ist, die Android-SDK-werkzeuge "''sdk-tools-linux-.zip''" (zum Beispiel von der [[https://developer.android.com/studio/index.html|Hersteller]]-Seite) * Herunterladen der APK-Datei "''SuperSU''" in der aktuellen Version (zum Beispiel von der [[http://www.supersu.com/download|Hersteller]]-Seite) * Herunterladen des installierbaren Recovery-Archives "''Recovery Flashable.zip''" (Dateiname: "''SuperSU-v.zip''") in der gleichen Version (zum Beispiel ebenfalls von der [[http://www.supersu.com/download|Hersteller]]-Seite) \\ Die Android-SDK-Werkzeuge müssen entpackt und es muss der Zugriff auf das Programm "''adb''" gewährleistet werden (zum Beispiel über Eintragen in die Pfadumgebungsvariable). \\ Das Recovery-Archiv "''Recovery Flashable.zip''" muss in einem Unterverzeichnis entpackt werden: ~$ mkdir SuperSU ~$ unzip SuperSU-v.zip -d SuperSU/ \\ === Emulator === Jetzt kann das emulierte Gerät eingerichtet werden, falls noch nicht geschehen. Wichtig ist, sich die verwendete Architektur (zum Beispiel "''x86''" oder "''arm64''") zu merken. Das Gerät wird dann über die Konsole mit beschreibbaren "''system.img''" und einem ausgeschalteten "''selinux''" gestartet: ~$ emulator -avd -writable-system -selinux permissive -qemu -enable-kvm emulator: WARNING: System image is writable \\ Nach dem Start des Gerätes kann die APK-Datei "''SuperSU''" installiert werden: ~$ adb install supersu.apk Success \\ Jetzt muss "''adb''" als Administrator gestaretet werden: ~$ adb root && adb remount restarting adbd as root remount succeeded \\ Jetzt wird die originale "''su''"-Datei mit der aus dem heruntergeladen Archiv überschrieben: ~$ adb push SuperSU//su.pie /system/xbin/su SuperSU/x86/su.pie: 1 file pushed. 23.6 MB/s (104012 bytes in 0.004s) \\ Anpassen der Rechte: ~$ adb shell chmod 0755 /system/xbin/su \\ Deaktivieren von SELinux: ~$ adb shell setenforce 0 \\ Das Program "''su''" im System installieren und als Daemon starten: ~$ adb shell su --install && adb shell su --daemon& [1] 23737 \\ Wird jetzt die App "''SuperSU''" auf dem Gerät gestartet, sollte es so aussehen: {{:android:debian-android-studio-rooted-emulator-01.png?nolink}} Das Aktualisieren der App, was angeboten wird, hat bei mir bisher nicht geklappt. \\ === Neustart === Leider überlebt diese Einstellung einen Neustart nicht bzw. mir fehlen noch die Informationen, wie ich das Ganze persistent machen kann. Bisher hilft es nur, dass Gerät wieder im beschreibbaren Modus und den Damon erneut zu starten: ~$ emulator -avd -writable-system -selinux permissive emulator: WARNING: System image is writable \\ Nach dem Gerätestart dann folgendes über "''adb''" ausführen: ~$ adb root && adb remount && adb shell su --daemon& restarting adbd as root remount succeeded [2] 24385 \\ \\ --- //[[steffen.bornemann@gmx.de|Steffen Bornemann]] 2018/02/06// \\ {{tag>DEBIAN JAVA AndroidStudio Emulator Konsole SDK}}