[Tutorial] Wie erstellt man ein ROM aus den Sourcen (AOSP, CM, AOKP, AOSPA usw...)

  • 197 Antworten
  • Letztes Antwortdatum
Registrierung ist doch nicht Pflicht, schadet aber nix;) licence accept ist Pflicht. Du kannst es auch einfach so machen:
sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update
sudo apt-get install oracle-java6-installer

sudo apt-get install oracle-java6-set-default

Sent from Google N5...
 
  • Danke
Reaktionen: Steb
Wichtig ist, es muss das Oracle Jdk 6 sein, früher ging das durch die von Dir beschrieben Schritte zu installieren.

Da Oracle das Jdk 6 jedoch als deperecated erklärt hat muss man heute gucken, wie man dran kommt.

Ich hatte es mir damals auf einem kompexeren Weg geholt, daher würde ich Dir erst mal den von Stefan oder Dirk beschriebenen Weg empfehlen.

MfG Uwe
 
Die Lösung von Dirk64 habe ich zufällig auch bei den xda's gefunden. Hat funktioniert.
Ich habe nun den ganzen Source Tree runtergeladen.
Leider treten noch an anderer Stelle Fehler auf, und zwar beim make-Kommando.
Code:
external/bluetooth/bluedroid/Android.mk:8: NO BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR, using only generic configuration
find: "../../vendor/unbundled_google/libs/gcm/gcm-client/src": Datei oder Verzeichnis nicht gefunden
find: "../../vendor/unbundled_google/libs/gcm/gcm-server/src": Datei oder Verzeichnis nicht gefunden
find: "../../vendor/unbundled_google/libs/gcm/gcm-client/src": Datei oder Verzeichnis nicht gefunden
find: "../../vendor/unbundled_google/libs/gcm/gcm-server/src": Datei oder Verzeichnis nicht gefunden
find: "src": Datei oder Verzeichnis nicht gefunden
PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg ignored.
Die fehlenden Dateien/Verzeichnisse wurden bisher aber noch nicht aktiv erstellt oder benutzt, und dann fehlen sie. Was genau hat es damit auf sich?
 
Das sollte zunächst kein Problem sein, es gibt optionale Komponenten, nach denen wird mit find gesucht und nur bearbeitet, wenn sie gefunden werden.

Fehler werden durch:

Code:
error: ...

ausgegeben.

MfG Uwe
 
  • Danke
Reaktionen: Steb
@ steb, Du hast Dich als Linux Anfänger beschrieben. Wenn Du was für Ubuntu suchst, kann ich Dir nur ans Herz legen, immer mal bei webupd8 und noobslab vorbeizuschauen.
 
  • Danke
Reaktionen: Steb
Danke u.k-f und Dirk64, ich werde mir eure Hinweise mal genauer anschauen.
Wenn man von Windows kommt sieht es auf den ersten Blick verwirrend aus.
Ich werde mich mal durch die ganzen Ausgabezeilen beim Build und durch die Terminalbefehle arbeiten.
Bisher hat sich mir z.B. noch nicht ganz erschlossen, welche Rolle z.B python dabei spielt.
 
Hallo,

u.k-f schrieb:
Wichtig ist, es muss das Oracle Jdk 6 sein, früher ging das durch die von Dir beschrieben Schritte zu installieren.
Nein, es wird gar kein Java 6von Oracle/SUN benötigt.
Das openjdk funktioniert auch, es gibt nur eine Warnung, weil es nicht das von Oracle/SUN ist. Es funktioniert aber.
Installieren kann man es mit folgendem Kommando:
sudo apt-get install openjdk-6-jdk openjdk-6-jre
Hoffe dir damit geholfen zu haben,
MfG,

Android4.4KitKat
 
Android4.4KitKat schrieb:
Hallo,


Nein, es wird gar kein Java 6von Oracle/SUN benötigt.
Das openjdk funktioniert auch, es gibt nur eine Warnung, weil es nicht das von Oracle/SUN ist. Es funktioniert aber.

Dann sollte man sich allerdings nicht wundern, wenn man in eine Menge Probleme reinläuft.

Nur weil der Buildprozess durchläuft hat man noch kein brauchbares Ergebnis...

MfG Uwe
 
Hey u.k-f und die Restliche Community!
ich hab ebenfalls mal versucht, die AOSP source n zu builden, das läuft auch ziemlich gut, bis zu einem Punkt, ab dem der Prozess abbricht. Ich pack die Fehler mal rein:
Code:
host C++: validatekeymaps <= frameworks/base/tools/validatekeymaps/Main.cpp
host C++: libinput <= frameworks/native/libs/input/Input.cpp
prebuilts/tools/gcc-sdk/g++: Zeile 40: prebuilts/tools/gcc-sdk/-g++: Datei oder Verzeichnis nicht gefunden
host C++: libinput <= frameworks/native/libs/input/InputDevice.cpp
make: *** [out/host/linux-x86/obj/EXECUTABLES/validatekeymaps_intermediates/Main.o] Fehler 127
make: *** Warte auf noch nicht beendete Prozesse...
host C++: libinput <= frameworks/native/libs/input/Keyboard.cpp
prebuilts/tools/gcc-sdk/g++: Zeile 40: prebuilts/tools/gcc-sdk/-g++: Datei oder Verzeichnis nicht gefunden
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/Input.o] Fehler 127
prebuilts/tools/gcc-sdk/g++: Zeile 40: prebuilts/tools/gcc-sdk/-g++: Datei oder Verzeichnis nicht gefunden
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/InputDevice.o] Fehler 127
prebuilts/tools/gcc-sdk/g++: Zeile 40: prebuilts/tools/gcc-sdk/-g++: Datei oder Verzeichnis nicht gefunden
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/Keyboard.o] Fehler 127
make: *** wait: Keine Kind-Prozesse.  Schluss.

Ich lass das unter Ubuntu 13.10 64-bit im VMPlayer auf Win7 laufen. Obwohl ich eigentlich sehr gut mit linux kann, hab ich keine Ahnung wie ich das Problem lösen kann. ^^
 
Wenn Du die Ausgabe noch etwas höher scrollst, müsste es eine Zeile mit der Ausgabe

Code:
error:...

geben.

Ich muss die erste Zeile, in der error steht sehen, das ist die eigentliche Ursache...

MfG Uwe
 
Also Uwe,
hab den Prozess nochmal durchlaufen lassen. eine Zeile mit
Code:
error...
gibt es bei mir nicht. Weiter oben hab ich jedoch
Code:
including ./external/qemu/Android.mk ...
/bin/bash: prebuilt/linux-x86/sdl/bin/sdl-config: Datei oder Verzeichnis nicht gefunden
/bin/bash: prebuilt/linux-x86/sdl/bin/sdl-config: Datei oder Verzeichnis nicht gefunden
including ./external/regex-re2/Android.mk ...
das noch gefunden. mehr gibts bei mir leider nicht...
 
Ich habe mir mal das Script, das unter prebuilts/tools/gcc-sdk/g++ verlinkt ist, angesehen:

Code:
#!/bin/bash

HOST_OS=`uname -s | tr '[:upper:]' '[:lower:]'`
if [ "$HOST_OS" != "linux" ] ; then
  echo "ERROR: The gcc this script points to can only run on linux"
  exit 1
fi

PROGNAME=`basename $0`

#PREFIX32=../../gcc/linux-x86/host/i686-linux-glibc2.7-4.4.3/bin/i686-linux  # previous version
PREFIX32=../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux
PREFIX64=../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux

options=" ${@} "   # sentinel prefix/suffix space to simplify pattern match below

suffix_m32=${options##* -m32 }    # suffix after the last -m32
suffix_m64=${options##* -m64 }    # suffix after the last -m64

len_m32=${#suffix_m32}            # length of suffix after the last -m32
len_m64=${#suffix_m64}            # length of suffix after the last -m64

if [ $len_m32 -ge $len_m64 ] ; then
  # Choose 64-bit if -m64 only, -m64 appears after -m32, or neither exist (-eq)
  MY_TOOL=`dirname $0`/${PREFIX64}-${PROGNAME}
  # Make sure host is running 64-bit OS.
  # Note that "uname -m" only show host CPU is capable of.  Use the following technique
  # from ndk/build/core/ndk-common.sh instead
  file -L "$SHELL" | grep -q "x86[_-]64"
  if [ $? != 0 ]; then
    # $SHELL is not a 64-bit executable, so assume our userland is too.
    echo "ERROR: $MY_TOOL only run on 64-bit linux"
    exit 1
  fi
else
  # Otherwise, choose 32-bit
  MY_TOOL=`dirname $0`/${PREFIX32}-${PROGNAME}
fi

$MY_TOOL "$@"

Dort wird der Pfad zu der für Deine Plattform (32Bit oder 64Bit) geeigneten Compiler Version zusammengebaut, aus dem aktuellen Pfad (prebuilts/tools/gcc-sdk/) und aus PREFIXnn (PREFIX32 oder PREFIX64), dann wird - und dann der Names des gerufenen Tools (hier: g++) angehängt. Dabei wird bei Dir scheinbar weder PREFIX32 noch PREFIX64 vorgehängt. Somit entsteht bei Dir: prebuilts/tools/gcc-sdk/-g++ Das gibt es natürlich nicht.

Warum bei Dir weder PREFIX32 noch PREFIX64 vorgehängt wird, müsste man durch Tests in einer Shell auf Deinen System klären, dass kann ich aus der Entfernung nicht so einfach klären...

MfG Uwe
 
ok, wie mach ich des dann? Ich hab mir die datei ebenfalls mal angeschaut. ich werd mal mit den Rauten ein wenig "spielen", die bedeuten doch, dass der Teil weggelassen wird, wenn ich mich recht entsinne...
Ausserdem hab ich mal nachgeforscht... da wäre alles.
Ich nutze übrigens:
Python 2.7.6
GNU 3.82
JDK 6
Git 1.8.5.2
und eben 64bit Ubuntu 13.10

falls das weiter hilft....
 
Ich würde empfehlen, die einzelnen Kommandos des Skriptes in einem Terminal-Fenster auszuführen und überprüfen, ob die Ergebnisse mit den Werten, die im Skript wohl erwartet werden, übereinstimmen. Wenn dabei irgendwas unerwartetes kommt würde ich versuchen die Ursache dafür zu finden

MfG Uwe
 
ok, ich werd mich ransetzen danke fürs helfen :D
 
Hallo,
noch eine Ergänzung zu 4):


Man muss nicht unbedingt einen Device-Tree erstellen.
Man kann auch einen vorhandenen verwenden.
Nur wenn es keinen Device-Tree gibt, muss man einen erstellen. Man kann einen Device-Tree unter CM mit
$ source build/envsetup.sh
$ breakfast <codename>
(ohne '$ ')
herunterladen. Ob das unter AOSP, AOKP, PA, ... auch funktioniert weiß ich nicht.
Den Codenamen kann man im Internet finden oder aus der Build.prop auslesen:
ro.product.device=xyz <== Codename
(wird manchmal auch mit ro.product.board angegeben
MfG,

Android4.4KitKat
 
Zuletzt bearbeitet:
Android4.4KitKat schrieb:
Man muss nicht unbedingt einen Device-Tree erstellen.
Man kann auch einen vorhandenen verwenden.
Nur wenn es keinen Device-Tree gibt, muss man einen erstellen. Man kann einen Device-Tree unter CM mit
herunterladen. Ob das unter AOSP, AOKP, PA, ... auch funktioniert weiß ich nicht.
Den Codenamen kann man im Internet finden oder aus der Build.prop auslesen:
MfG,

Android4.4KitKat


soo einfach ist das auch nicht... Das geht nur, wenn die Source vollständig geupdated wurde (also ink. Device, Kernel, Blobs). Man sollte bei einem Update zum Beispiel den alten Devicetree pullen und notige Änderungen vornehmen.
Außerdem ist diese Anleitung eher für komplettes Erstaufsetzen von Android gedacht und nicht für schon vorhandene Roms.
 
GammelPLAY97 schrieb:
und eben 64bit Ubuntu 13.10
Das könnte ein Problem sein. Empfohlen wird Ubuntu 12.04.
Möglicherweise liegt da der Fehler.

Edit:
Habe gerade meinen ersten erfolgreichen Build gehabt :thumbsup:
Der Emulator hat damit einwandfrei funktioniert.
Kurze Verfahrensfrage: laut den Google Sources sind adb und fastboot nun auch in der PATH-Variable durch den erfolgreichen Build. Waren sie auch.
Aber als ich das Terminal kurz geschlossen hatte und dann Flashen wollte, war das nicht mehr der Fall. Hat da jemand eine Idee?

Edit2:
Habe nun den meinen Build-Output-Ordner ~/android-env/workspace/out/host/linux-x86/bin manuell hinzugefügt.
Bekomme leider über "adb devices" keine USB Permissions, obwohl ich in /etc/udev/ die Datei 51-android.rules erstellt habe (und wohl auch richtig konfiguriert).
Also wird es vorerst nichts mit dem Flashen :(
 
Zuletzt bearbeitet:
Hallo Steb,

ist in den Entwicklereinstellungen auch der Haken bei USB-Debugging gesetzt?

PS: Ab Android 4.2 muss man in den Einstellungen bei Über das Gerät (o.ä.) erst sieben mal auf Build-Nummer tippen, damit man die Enwickler-Optionen sieht.

PPS: Die Entwickleroptionen sind manchmal noch ausgeschaltet, also müssen diese oben in der Leiste mit dem Symbol manchmal noch eingeschaltet werden.
 
Ja USB-Debugging ist eingeschaltet. Das Problem scheint eher an Ubuntu zu liegen, zumindest wird darauf hingewiesen.
 

Ähnliche Themen

cehuisken
  • cehuisken
Antworten
1
Aufrufe
882
Andy
Andy
D
Antworten
0
Aufrufe
2.516
Defier
D
E
Antworten
4
Aufrufe
2.204
Kardroid
Kardroid
Zurück
Oben Unten