{"id":637,"date":"2009-08-20T13:29:32","date_gmt":"2009-08-20T12:29:32","guid":{"rendered":"http:\/\/www.lorenzobraghetto.com\/?p=637"},"modified":"2009-12-26T17:53:07","modified_gmt":"2009-12-26T16:53:07","slug":"compilare-android-preparazione-sorgenti","status":"publish","type":"post","link":"https:\/\/www.lorenzobraghetto.com\/index.php\/2009\/08\/20\/compilare-android-preparazione-sorgenti\/","title":{"rendered":"Compilare Android: Preparazione Sorgenti"},"content":{"rendered":"<p style=\"text-align: left;\"><strong>Aggiornamento<\/strong> 26\/12\/09 Se si sta cercando di compilare la versione 2.0 Eclair di android tenere conto delle note per ogni paragrafo e dell&#8217;articolo di aggiornamento a riguardo <a href=\"http:\/\/www.lorenzobraghetto.com\/index.php\/2009\/12\/26\/compilare-android-eclair\/\">qua<\/a>.<\/p>\n<p style=\"text-align: left;\"><strong>Aggiornamento 21\/08<\/strong> Proprio fra ieri e oggi \u00e8 arrivata la notizia che la comunit\u00e0 \u00e8 riuscita con il reverse enginering a creare un kernel completamente compatibile con i 32A pi\u00f9 info <a title=\"XDA\" href=\"http:\/\/forum.xda-developers.com\/showthread.php?t=548061\" target=\"_blank\">qua<\/a>.<\/p>\n<p style=\"text-align: left;\">Prima di due parti sulla compilazione <em>fatta in casa<\/em> di android direttamente dai sorgenti forniti da Google. Come sappiamo Android \u00e8 software libero, ma la particolare licenza (Apache 2.0) permette ai produttori di cellulari di fare qualche <em>porcata <\/em>con un p\u00f2 di software proprietario qua e l\u00e0 sparso per i nostri cellulari.<\/p>\n<div class=\"mceTemp mceIEcenter\" style=\"text-align: left;\">\n<dl class=\"wp-caption   aligncenter\" style=\"width: 410px;\">\n<dt class=\"wp-caption-dt\"><a href=\"http:\/\/richd.com\/images\/2007\/android-rendered.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"Android\" src=\"http:\/\/richd.com\/images\/2007\/android-rendered.jpg\" alt=\"Android crediti\" width=\"400\" height=\"250\" \/><\/a><\/dt>\n<\/dl>\n<\/div>\n<h6 style=\"text-align: right;\"><a href=\"http:\/\/richd.com\/2007\/11\/android-logo.html\">crediti<\/a><\/h6>\n<p style=\"text-align: left;\">Per questo la compilazione di Android a seconda del dispositivo dove poi andr\u00e0 installato pu\u00f2 essere delicata. Io prender\u00f2 il caso dell&#8217;HTC magic 32B (vodafone), attualmente solo con cellulari &#8220;With Google&#8221;\u00a0 \u00e8 possibile usare versioni ricompilate del kernel. Questo perch\u00e8 HTC non ha ancora rilasciato i sorgenti dei kernel usati nei cellulari con firmware customizzato da loro, per ora quindi non sappiamo cosa abbiano di spaciale i kernel HTC. (sicuramente una gestione della memoria diversa)<\/p>\n<p style=\"text-align: left;\">Non chiedetemi i vantaggi nel ricompilarsi Android, forse di strettamente pratici non ce ne sono o meglio io ne noto ma potrebbe essere solo suggestione \ud83d\ude42 (batteria che ha una seconda vita e sistema pi\u00f9 leggero) in ogni caso \u00e8 sempre divertente cercare di andare a fondo delle cose e crearsi un &#8220;proprio&#8221; Android aiuta a capirne bene il funzionamento.<\/p>\n<p style=\"text-align: left;\"><!--more--><\/p>\n<p style=\"text-align: left;\">Scrivo subito qui che la maggior parte dei crediti vanno a <a href=\"http:\/\/www.johandekoning.nl\" target=\"_blank\">questo blog<\/a>, le modifiche per l&#8217;htc magic per\u00f2 ci sono e sono abbastanza importanti, oltre anche ad altri adattamenti che ho fatto. Iniziamo!<\/p>\n<h1 style=\"text-align: left;\">Preparare il sistema<\/h1>\n<p style=\"text-align: left;\">L&#8217;environment che ho usato per la prova \u00e8 Ubuntu 9.04, credo per\u00f2 che non sia difficile adattare le istruzioni per altre linux box.<\/p>\n<p style=\"text-align: left;\">Scarichiamo i pacchetti necessari<\/p>\n<p style=\"text-align: left;\"><code>sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind<\/code><\/p>\n<p style=\"text-align: left;\">Impostiamo come <strong>jvm<\/strong> predefinita la 1.5 necessaria ad Android.<\/p>\n<p style=\"text-align: left;\"><code>update-java-alternatives -s java-1.5.0-sun<\/code><\/p>\n<p style=\"text-align: left;\">Ora quindi il comando <em>java -version<\/em> dovrebbe restituirvi<\/p>\n<p style=\"text-align: left;\"><code>java version \"1.5.0_19\"<br \/>\nJava(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02)<br \/>\nJava HotSpot(TM) Server VM (build 1.5.0_19-b02, mixed mode)<\/code><\/p>\n<h1 style=\"text-align: left;\">Scaricare i sorgenti<\/h1>\n<p style=\"text-align: left;\">Devo dire la verit\u00e0 che non ho ancora una grande dimestichezza con il sistema di gestione dei sorgenti di Android e lo trovo un p\u00f2 incasinato. Comunque ci limitiamo a semplici istruzioni.<\/p>\n<p style=\"text-align: left;\">Scarichiamo il tool <em>repo<\/em> necessario al download dei sorgenti e mettiamo tutto in una cartella chiamata <em>androidsource<\/em>.<\/p>\n<p style=\"text-align: left;\"><code>mkdir ~\/androidsource<\/code><\/p>\n<p style=\"text-align: left;\"><code>curl http:\/\/android.git.kernel.org\/repo &gt; ~\/androidsource\/repo<\/code><\/p>\n<p style=\"text-align: left;\"><code>chmod a+x ~\/androidsource\/repo<\/code><\/p>\n<p style=\"text-align: left;\">Inizializzamo il client <em>repo, <\/em>conviene sempre specificare con quale branch si desidera lavorare, prendiamo l&#8217;esempio di <em>cupcake<\/em> ma se si specifica <em>donut<\/em> non ci dovrebbero essere grosse differenze nei comandi futuri.<\/p>\n<p style=\"text-align: left;\"><code>cd ~\/androidsource<\/code><\/p>\n<p style=\"text-align: left;\"><code>.\/repo init -u git:\/\/android.git.kernel.org\/platform\/manifest.git -b cupcake<\/code><\/p>\n<h3 style=\"text-align: left;\">Kernel<\/h3>\n<p style=\"text-align: left;\">Questa parte pu\u00f2 essere saltata se si usa un kernel precomplato, ma visto che ci siamo facciamola completa e ricompiliamoci il kernel! \ud83d\ude00<\/p>\n<p style=\"text-align: left;\">Per scaricare il kernel adatto ai nostri cellulari modifichiamo il file <em>local_manifest.xml <\/em>dentro alla cartella<em> .repo<br \/>\n<\/em><\/p>\n<p style=\"text-align: left;\"><code>nano ~\/androidsource\/.repo\/local_manifest.xml<\/code><\/p>\n<p style=\"text-align: left;\">E incolliamo<\/p>\n<p style=\"text-align: left;\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<br \/>\n&lt;manifest&gt;<br \/>\n&lt;project path=\"kernel\" name=\"kernel\/msm\" revision=\"refs\/heads\/android-msm-2.6.29\"\/&gt;<br \/>\n&lt;\/manifest&gt;<\/code><\/p>\n<p style=\"text-align: left;\">Al posto del 2.6.29 volendo si pu\u00f2 mettere il 2.6.27.<\/p>\n<h3 style=\"text-align: left;\">Download<\/h3>\n<p style=\"text-align: left;\">Siamo pronti per iniziare il download \ud83d\ude09<\/p>\n<p style=\"text-align: left;\"><code>cd ~\/androisource<\/code><\/p>\n<p style=\"text-align: left;\"><code>.\/repo sync<\/code><\/p>\n<p style=\"text-align: left;\">Ci vorr\u00e0 un bel p\u00f2!<\/p>\n<h3 style=\"text-align: left;\">File proprietari<\/h3>\n<p><strong>Nota <\/strong>per Eclair guardare <a href=\"http:\/\/www.lorenzobraghetto.com\/index.php\/2009\/12\/26\/compilare-android-eclair\/\">qua<\/a>.<\/p>\n<p style=\"text-align: left;\">Possiamo prendere i file proprietari necessari per il corretto funzionamento di Android sul nostro telefono direttamente dal telefono stesso. Per farlo basta eseguire lo script extract-files.sh. Bisogna per\u00f2 prima preparare il sistema con le modifiche necessarie per il corretto funzionamento di Android col Magic.<\/p>\n<p style=\"text-align: left;\">In ~\/androidsource\/vendor\/htc\/ ci sar\u00e0 una cartella chamata dream-open, l\u00ec ci sono tutti i file pronti per l&#8217;Htc Dream, copiamo il contenuto in una nuova cartella chiamata sapphire.<\/p>\n<p style=\"text-align: left;\">Scaricate <a href=\"http:\/\/www.lorenzobraghetto.com\/wp-content\/uploads\/filemagic.zip\">questo<\/a> archivio creato da me, sostituite i file dentro alla cartella appena creata sapphire e eliminate tutti i file che hanno &#8220;trout&#8221; nel nome.<\/p>\n<p style=\"text-align: left;\">Lo script extract-files.sh cerca il comando adb, copiamo quindi temporaneamente il file binario adb dal proprio sdk di android alla cartella di sistema \/usr\/bin\/ ed eseguiamo lo script che scaricher\u00e0 i file proprietari. (l&#8217;esecuzione dello script potrebbe avere bisogno dei permessi di root)<\/p>\n<p style=\"text-align: left;\">Finito, siamo pronti a compilare!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aggiornamento 26\/12\/09 Se si sta cercando di compilare la versione 2.0 Eclair di android tenere conto delle note per ogni paragrafo e dell&#8217;articolo di aggiornamento a riguardo qua. Aggiornamento 21\/08 Proprio fra ieri e oggi \u00e8 arrivata la notizia che la comunit\u00e0 \u00e8 riuscita con il reverse enginering a creare un kernel completamente compatibile con [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,434,4,9,28,438,162,39,42,8],"tags":[405,458,459,461,176,460],"class_list":["post-637","post","type-post","status-publish","format-standard","hentry","category-informatica","category-android-software","category-aziende","category-etica","category-google","category-htc-aziende","category-kernel-software","category-open-sourcefree-software","category-smanettamenti","category-software","tag-android","tag-cupcake","tag-donut","tag-guida","tag-open-source","tag-sorgenti"],"_links":{"self":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/comments?post=637"}],"version-history":[{"count":16,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/637\/revisions"}],"predecessor-version":[{"id":649,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/637\/revisions\/649"}],"wp:attachment":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/media?parent=637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/categories?post=637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/tags?post=637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}