[GUIDE] ParanoidAndroid fürs N4 mit Ubuntu 13.10 selbst compilieren

Tallis

Tallis

Fortgeschrittenes Mitglied
58
[GUIDE] ParanoidAndroid fürs N4 mit Ubuntu 13.10 selbst compilieren
******************************************

Um ein Custom ROM selbst zu compilieren, braucht man Linux. Wer ein ausreichend starkes System (>4GB RAM, aktueller Prozessor) besitzt, kann sich Ubuntu 13.10 (64 Bit Version!) in eine Virtualbox installieren. Unter 4GB Arbeitsspeicher wird es schwierig, zumindest bei mir konnte ich damit nicht erfolgreich compilieren. Ansonsten kann Ubuntu als Dualboot-System eingerichtet werden. So oder so sollten für Ubuntu mindestens 100 GB freier Festplattenplatz verfügbar sein.

Hat man ein laufendes Linux, muss das System für Android vorbereitet werden. Das geht über das Terminal-Fenster, welches man über das HUD (Button ganz links oben in der Leiste) oder STRG+ALT+T aufruft.

Zunächst muss die richtige JAVA-Version installiert und eventuell vorhandene andere Versionen entfernt werden. Dazu gibt man folgenden Befehl ein:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Kommt eine Meldung, dass die Versionen nicht vorhanden sind, umso besser. Sonst den Anweisungen folgen, um OpenJDK zu entfernen.

Nun das richtige JAVA installieren:
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java6-installer
Den Anweisungen folgen und die Lizenzvereinbarung für die Installation akzeptieren.

Nun noch die Installation überprüfen:

Code:
java -version
Das Ergebnis sollte etwa so aussehen:
Code:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Als nächstes müssne diverse Programme und Dateien installiert werden, die man später fürs compilieren braucht.
Code:
sudo apt-get install git-core ccache gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python
Im günstigsten Fall klappt die Installation ohne Fehlermeldung. Sollte so etwas auftauchen wie "The following packages have unmet dependencies: build-essential : Depends: gcc (>= 4:4.4.3) but it is not going to be installed", dann müssen die Programme, die als "not going to be installed" aufgeführt werden, zuerst noch mittels sudo apt-get install installiert werden.

Schließlich muss noch dieser Befehl ausgeführt werden:

Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Nun ist es Zeit, repo zu installieren. Das ist das Programm, welches nachher die Sourcen aus den Repositorien im Internet lädt.
Code:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Anschließend muss eine Zeile in der Datei .bashrc hinzugefügt werden.
Code:
nano ~/.bashrc
Ganz ans Ende diese Zeile einfügen und mit STRG+O abspeichern, dann mit STRG+X den Editor wieder verlassen:
Code:
export PATH=~/bin:$PATH
Die veränderte Datei wieder neustarten:
Code:
source ~/.bashrc
Nun erstellen wir das Arbeitsverzeichnis, indem die Quellen runtergeladen und alles compiliert wird. Man kann es android, pa, oder auch sonstwie nennen. Als Beispiel bleiben wir hier bei android. ;)

Code:
mkdir ~/android
cd ~/android
Nun wollen wir das repo initalisieren. Hier muss man sich entscheiden, welches ROM man compilieren will. Für jdes ROM gibt es ein eigenes Repo im Internet. Für ParanoidAndroid 4.4 wäre der Befehl:
Code:
repo init -u git://github.com/AOSPA/manifest.git -b kitkat
Anschließend geht es an syncen. Damit werden die ganzen Daten auf die Festplatte geladen. Das sind gute 10GB, es kann also je nach Internetgeschwindigkeit etwas dauern. Sollte es zu lange dauern, kann man den Prozess jederzeit stoppen (mit STRG+C bzw. durch Schließen des Terminalfensters). Man kann den Download dann später jederzeit wieder fortsetzen. Der Befehl dazu lautet:
Code:
repo sync
Wenn alles fertig geladen ist, geht es ans eigentlich compilieren. Dieser Befehl startet den Build-Prozess:
Code:
./rom-build.sh mako
Nun heißt es 1-2 Stunden warten und hoffen, dass es keine Fehlermeldung gibt. Wenn alles gut geht, findet ihr das fertige ROM im Verzeichnis /target/out/mako/PA-*****.zip
Das kann nun wie gehabt übers Recovery geflasht werden.

Viel Spaß beim selbst compilieren!!

***********************
Credit geht an sylentprofet bei XDA
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: sockxo, pro.aggro, hansichen und 10 andere
erstmal danke für die schöne Anleitung. 2 kurze Anmerkungen, wieso openjdk bzw. icedtea deinstallieren? oracle-java installieren reicht eigentlich (und ggf. etc/alternatives umstellen, sollte aber unnötig sein), alternativ könnte man auch das entsprechende ändern, openjdk geht normal auch. und bei repo init hast du nach dem -b das Leerzeichen vergessen.
 
Kann das bitte jemand ins richtige Unterforum verschieben! Danke.

Gesendet von meinem Nexus 10 mit der Android-Hilfe.de App
 
vetzki schrieb:
erstmal danke für die schöne Anleitung. 2 kurze Anmerkungen, wieso openjdk bzw. icedtea deinstallieren? oracle-java installieren reicht eigentlich (und ggf. etc/alternatives umstellen, sollte aber unnötig sein), alternativ könnte man auch das entsprechende ändern, openjdk geht normal auch. und bei repo init hast du nach dem -b das Leerzeichen vergessen.

1. Keine Ahnung, war so im englischen Originalthread angegeben. Soll wohl weniger Probleme machen. :o

2. Tippfehler korrigiert, danke für den Hinweis.

Nochmal zum Klarstellen: das Ganze ist nicht auf meinem Mist gewachsen. Bis vor einer Woche hatte ich von all dem genau nullkommanix Ahnung. Aber weil es immer hieß, wer nicht auf ein offizielles Release warten will, soll halt selbst ein Build erstellen, hab ich angefangen mich einzulesen und so tatsächlich erfolgreich zum ersten Mal PA kompiliert.

Und weil ich gefragt worden bin, wie ich das gemacht habe, habe ich mir die Mühe gemacht, den entsprechenden englischen Guide zu übersetzen.
So gibt es nun auch endlich einen Beitrag, bei dem alle Fragen zum selber kompilieren gestellt werden können, ohne das der offizielle PA-Thread damit behelligt wird. :biggrin:
 
  • Danke
Reaktionen: kamanu
Code:
sudo nano ~/.bashrc

Kleine Anmerkung. sudo im eigenen Homeverzeichnis ist nicht nötig. ;-)
 
Into the Pit schrieb:
Code:
sudo nano ~/.bashrc

Kleine Anmerkung. sudo im eigenen Homeverzeichnis ist nicht nötig. ;-)

Vielleicht ist das für den Fall, dass jemand das ganze eben nicht im Homeverzeichnis ausführt!? So steht es halt im XDA-Thread... Aber sonst auf jeden Fall gut zu wissen. :)
 
Tallis schrieb:
Vielleicht ist das für den Fall, dass jemand das ganze eben nicht im Homeverzeichnis ausführt!?

Im Prinzip ist es egal, wo man den Befehl ausführt, die Tilde am Anfang vom Pfad verweist immer auf das Homeverzeichnis des angemeldeten Users im Terminal. Und da hat man nun mal Schreibrechte. :)
 
Klingt interessant, werde ich mich morgen mal mit beschäftigen.

Hast es denn noch jemand geschafft und läuft alles soweit ? :)
 
funktioniert schon so, statt source ~/.bashrc kannst du auch terminal schließen und neu starten. alternativ zur rom-build.sh geht noch: . build/envsetup
sh
lunch
(mako auswählen)
make bacon .
Und du kannst repo init auch in einem anderen Verzeichnis machen.

(alles nur so als zusätzliche info)
 
Ich habs grad auch versucht aber ich hänge beim Schritt mit "repo init":

kamanu@Builder:~/android$ repo init -u git@github.com:paranoidAndroid/manifest.git -b kitkat
Warning: Permanently added the RSA host key for IP address '192.30.252.130' to the list of known hosts.
Permission denied (publickey).
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Folgende Fehlermeldung schmeißt er mir dabei raus. Der Teil von davor hat soweit geklappt.

Grad schmeißt er noch das hier hinterher und bricht von alleine komplett ab:
 
Probier es mal hiermit.

Code:
repo init -u git://github.com/AOSPA/manifest.git -b kitkat
 
Into the Pit schrieb:
Probier es mal hiermit.

Code:
repo init -u git://github.com/AOSPA/manifest.git -b kitkat

Läd er dann nicht nur AOSP 4.4? (Ich will ja eigentlich gerade gerne Kitkat :p )
Und da jetzt dann 10GB für ummes zu laden ist auch blöd. Trotz 150.000er Leitung :D
 
Aospa = aosp + pa ;-)
 
  • Danke
Reaktionen: kamanu
Weiter geht's mit der nächsten (Fehler-)Meldung :)

kamanu@Builder:~/android$ repo init -u git://github.com/AOSPA/manifest.git -b kitkat
remote: Counting objects: 406, done.
remote: Compressing objects: 100% (191/191), done.
remote: Total 406 (delta 193), reused 375 (delta 168)
Receiving objects: 100% (406/406), 76.11 KiB | 0 bytes/s, done.
Resolving deltas: 100% (193/193), done.
From git://github.com/AOSPA/manifest
* [new branch] kitkat -> origin/kitkat

Traceback (most recent call last):
File "/home/kamanu/android/.repo/repo/main.py", line 418, in <module>
_Main(sys.argv[1:])
File "/home/kamanu/android/.repo/repo/main.py", line 394, in _Main
result = repo._Run(argv) or 0
File "/home/kamanu/android/.repo/repo/main.py", line 142, in _Run
result = cmd.Execute(copts, cargs)
File "/home/kamanu/android/.repo/repo/subcmds/init.py", line 374, in Execute
self._ConfigureUser()
File "/home/kamanu/android/.repo/repo/subcmds/init.py", line 275, in _ConfigureUser
name = self._Prompt('Your Name', mp.UserName)
File "/home/kamanu/android/.repo/repo/project.py", line 620, in UserName
self._LoadUserIdentity()
File "/home/kamanu/android/.repo/repo/project.py", line 633, in _LoadUserIdentity
u = self.bare_git.var('GIT_COMMITTER_IDENT')
File "/home/kamanu/android/.repo/repo/project.py", line 2274, in runner
p.stderr))
error.GitError: manifests var:
*** Please tell me who you are.

Run

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'kamanu@Builder.(none)')

Kann ich da mit dem git config jetzt einfach irgendeine Mailadresse setzen - oder musst die existent und bei Github registriert sein?

Edith sagt: Versuch macht kluch! Einfach mal was da einsetzen und es läuft :p

Into the Pit schrieb:

Vielen Dank schonmal für die Hilfe. Jetzt ist wohl erst mal warten angesagt bis er fertig ist mit dem sync.
Deinen Link werd ich mir morgen mal zu Gemüte führen :)
 
Zuletzt bearbeitet:
Bei mir hat dann git gemeckert das mein Name und email nicht "gut" sind ;)

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

lösen dieses Problem wenn man da was sinnvolles rein packt. Jetzt synct er auch bei mir ... ich bin ja noch jung... ;)

Ich geh pennen und hoffe der ist dann nach der Nacht fertig!

gruß
 
Irgendwas scheint noch nicht so wirklich geklappt zu haben :p

Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classes.jar]
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar]
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Note: packages/apps/Calculator/src/com/android/calculator2/Calculator.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/framework2_intermediates/classes.jar]
Note: com.google.common.base.FinalizableReferenceQueue accesses a method 'startFinalizer(java.lang.Class,java.lang.Object)' dynamically
Note: android.support.v4.text.ICUCompatIcs accesses a method 'getScript(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is library method 'libcore.icu.ICU { java.lang.String getScript(java.lang.String); }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'addLikelySubtags(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is library method 'libcore.icu.ICU { java.lang.String addLikelySubtags(java.lang.String); }'
target Java: Camera2 (/home/kamanu/android/out/target/common/obj/APPS/Camera2_intermediates/classes)
Note: com.google.common.base.internal.Finalizer accesses a method 'finalizeReferent()' dynamically
Maybe this is program method 'com.google.common.base.FinalizableReference { void finalizeReferent(); }'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry newEntry(java.lang.Object,int,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry copyEntry(com.google.common.cache.LocalCache$ReferenceEntry,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry copyEntry(com.google.common.cache.LocalCache$ReferenceEntry,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ValueReference newValueReference(com.google.common.cache.LocalCache$ReferenceEntry,java.lang.Object,int); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry newEntry(java.lang.Object,int,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry copyEntry(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry copyEntry(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ValueReference newValueReference(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,java.lang.Object); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: there were 8 unkept descriptor classes in kept class members.
You should consider explicitly keeping the mentioned classes
(using '-keep').
Note: there were 4 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
packages/apps/Browser/src/com/android/browser/IntentHandler.java:45: error while writing com.android.browser.IntentHandler: No space left on device
public class IntentHandler {
^
packages/apps/Settings/src/com/android/settings/ConfirmLockPattern.java:58: error while writing com.android.settings.ConfirmLockPattern.Stage: No space left on device
private enum Stage {
^
packages/apps/Launcher3/src/com/android/launcher3/InfoDropTarget.java:29: error while writing com.android.launcher3.InfoDropTarget: No space left on device
public class InfoDropTarget extends ButtonDropTarget {
^
packages/apps/Calendar/src/com/android/calendar/event/AttendeesView.java:444: error while writing <anonymous com.android.calendar.event.AttendeesView$PresenceQueryHandler$1>: No space left on device
mContext, item, new Runnable() {
^
packages/apps/Mms/src/com/android/mms/ui/SearchActivity.java:73: error while writing com.android.mms.ui.SearchActivity.TextViewSnippet: No space left on device
public static class TextViewSnippet extends TextView {
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Launcher3/src/com/android/gallery3d/glrenderer/BasicTexture.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Mms_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Launcher3_intermediates/classes-full-debug.jar] Error 41
Preparing output jar [/home/kamanu/android/out/target/common/obj/APPS/DocumentsUI_intermediates/proguard.classes.jar]
Copying resources from program jar [/home/kamanu/android/out/target/common/obj/APPS/DocumentsUI_intermediates/classes.jar]
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Browser/src/com/android/browser/preferences/WebsiteSettingsFragment.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Browser_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Calendar_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Settings_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Camera2/src/com/android/camera/PhotoModule.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
collect2: error: ld returned 1 exit status
make: *** [/home/kamanu/android/out/target/product/mako/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1

Total time elapsed: 64 minutes (3880.555894985 seconds)

Könnte es eventuell damit zu tun haben, dass Ubuntu mir gegen Ende anzeigte ich hätte nur noch ~750mb Speicherplatz?
Ich war etwas geizig und hab der VM nur 50GB gegeben :/
 
Zuletzt bearbeitet:
kamanu schrieb:
Irgendwas scheint noch nicht so wirklich geklappt zu haben :p

Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classes.jar]
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar]
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar]
Note: packages/apps/Calculator/src/com/android/calculator2/Calculator.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Reading library jar [/home/kamanu/android/out/target/common/obj/JAVA_LIBRARIES/framework2_intermediates/classes.jar]
Note: com.google.common.base.FinalizableReferenceQueue accesses a method 'startFinalizer(java.lang.Class,java.lang.Object)' dynamically
Note: android.support.v4.text.ICUCompatIcs accesses a method 'getScript(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is library method 'libcore.icu.ICU { java.lang.String getScript(java.lang.String); }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'addLikelySubtags(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is library method 'libcore.icu.ICU { java.lang.String addLikelySubtags(java.lang.String); }'
target Java: Camera2 (/home/kamanu/android/out/target/common/obj/APPS/Camera2_intermediates/classes)
Note: com.google.common.base.internal.Finalizer accesses a method 'finalizeReferent()' dynamically
Maybe this is program method 'com.google.common.base.FinalizableReference { void finalizeReferent(); }'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry newEntry(java.lang.Object,int,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry copyEntry(com.google.common.cache.LocalCache$ReferenceEntry,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ReferenceEntry copyEntry(com.google.common.cache.LocalCache$ReferenceEntry,com.google.common.cache.LocalCache$ReferenceEntry); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.cache.LocalCache { com.google.common.cache.LocalCache$ValueReference newValueReference(com.google.common.cache.LocalCache$ReferenceEntry,java.lang.Object,int); }', but not the descriptor class 'com.google.common.cache.LocalCache$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry newEntry(java.lang.Object,int,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry copyEntry(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ReferenceEntry copyEntry(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,com.google.common.collect.MapMakerInternalMap$ReferenceEntry); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: the configuration keeps the entry point 'com.google.common.collect.MapMakerInternalMap { com.google.common.collect.MapMakerInternalMap$ValueReference newValueReference(com.google.common.collect.MapMakerInternalMap$ReferenceEntry,java.lang.Object); }', but not the descriptor class 'com.google.common.collect.MapMakerInternalMap$ReferenceEntry'
Note: there were 8 unkept descriptor classes in kept class members.
You should consider explicitly keeping the mentioned classes
(using '-keep').
Note: there were 4 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
packages/apps/Browser/src/com/android/browser/IntentHandler.java:45: error while writing com.android.browser.IntentHandler: No space left on device
public class IntentHandler {
^
packages/apps/Settings/src/com/android/settings/ConfirmLockPattern.java:58: error while writing com.android.settings.ConfirmLockPattern.Stage: No space left on device
private enum Stage {
^
packages/apps/Launcher3/src/com/android/launcher3/InfoDropTarget.java:29: error while writing com.android.launcher3.InfoDropTarget: No space left on device
public class InfoDropTarget extends ButtonDropTarget {
^
packages/apps/Calendar/src/com/android/calendar/event/AttendeesView.java:444: error while writing <anonymous com.android.calendar.event.AttendeesView$PresenceQueryHandler$1>: No space left on device
mContext, item, new Runnable() {
^
packages/apps/Mms/src/com/android/mms/ui/SearchActivity.java:73: error while writing com.android.mms.ui.SearchActivity.TextViewSnippet: No space left on device
public static class TextViewSnippet extends TextView {
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Launcher3/src/com/android/gallery3d/glrenderer/BasicTexture.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Mms_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Launcher3_intermediates/classes-full-debug.jar] Error 41
Preparing output jar [/home/kamanu/android/out/target/common/obj/APPS/DocumentsUI_intermediates/proguard.classes.jar]
Copying resources from program jar [/home/kamanu/android/out/target/common/obj/APPS/DocumentsUI_intermediates/classes.jar]
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Browser/src/com/android/browser/preferences/WebsiteSettingsFragment.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Browser_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Calendar_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
make: *** [/home/kamanu/android/out/target/common/obj/APPS/Settings_intermediates/classes-full-debug.jar] Error 41
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: packages/apps/Camera2/src/com/android/camera/PhotoModule.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
collect2: error: ld returned 1 exit status
make: *** [/home/kamanu/android/out/target/product/mako/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1

Total time elapsed: 64 minutes (3880.555894985 seconds)

Könnte es eventuell damit zu tun haben, dass Ubuntu mir gegen Ende anzeigte ich hätte nur noch ~750mb Speicherplatz?
Ich war etwas geizig und hab der VM nur 50GB gegeben :/

Das ist in der Tat etwas knapp. Versuchs mal mit 100GB, wenns dann geht lags daran.
 
100 GB ist nur drin, wenn ich auf die HDD ausweiche. Und da ist es halt ultimativ langsamer. Ich hab jetzt gerade eben noch mal ne neue VM mit 62 GB aufgesetzt. Mehr gibt die SSD nicht her :p

Was ich festgestellt hab: repo sync -j 16 geht bei guter Leitung deutlich fixer. Jedenfalls meinte der Taskmanager unter Windows von den Werten her, dass die Leitung diesmal dauerhaft am Limit war. Auch die CPU wurde deutlich mehr genutzt. Vllt kann man so was ja auch noch in den Startpost übernehmen. Mit entsprechendem Hinweis, dass Leitung und Rechenleistung stimmen müssen.
 
Compiler Läuft ... 4 Kerne unter Vollast und ich finde es gruselig wie VIEL Quelltext da grade so vor sich hin compiliert.

So ne Bibel hat 7MB ... für Android liegen fast 10GB auf der Platte???? Wer bitte ist in der Lage in 10GB Sourcen wirklich zu wissen was genau wo steht und warum???

gruß
 
Zurück
Oben Unten