<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Android on xioxoz</title>
        <link>https://www.xioxoz.fr/tags/android/</link>
        <description>Recent content in Android on xioxoz</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-fr</language>
        <lastBuildDate>Tue, 08 Sep 2026 18:47:11 +0200</lastBuildDate><atom:link href="https://www.xioxoz.fr/tags/android/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Les noyaux Android (1/2)</title>
            <link>https://www.xioxoz.fr/posts/what-is-ack/</link>
            <pubDate>Tue, 08 Sep 2026 18:47:11 +0200</pubDate>
            <guid>https://www.xioxoz.fr/posts/what-is-ack/</guid>
            <description>&lt;p&gt;Les appareils Android sont réputés utiliser un noyau spécifique à Android. C&amp;rsquo;est&#xA;vrai dans la mesure où il est construit pour Android, mais en réalité il est&#xA;très similaire au noyau Linux. Dans cette série d&amp;rsquo;articles sur le noyau&#xA;d&amp;rsquo;Android je vais aborder les détails de ce processus afin de comprendre&#xA;pourquoi Android a ajouté ce niveau de complexité.&lt;/p&gt;&#xA;&lt;h2 id=&#34;android-common-kernels-ack&#34;&gt;Android Common Kernels (ACK)&#xA;&lt;/h2&gt;&lt;p&gt;Les noyaux d&amp;rsquo;Android, ou &lt;em&gt;Android Common Kernels&lt;/em&gt; (&lt;em&gt;ACK&lt;/em&gt;) sont des dérivés du&#xA;noyau Linux combinant une branche stable de celui-ci (appelée &lt;em&gt;Long Term&#xA;Supported&lt;/em&gt; ou &lt;em&gt;LTS&lt;/em&gt;) et une collection de modifications (patchs) permettant&#xA;d&amp;rsquo;atteindre le niveau de support adéquat pour une version donnée d&amp;rsquo;Android.&lt;/p&gt;&#xA;&lt;p&gt;Un noyau Android doit répondre à plusieurs contraintes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;être stable :&lt;/em&gt; il doit être assez stable pour être déployés sur des&#xA;appareils avec un minimum de bugs (ou de failles de sécurité),&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;être maintenu :&lt;/em&gt; le noyau doit être maintenu suffisament longtemps&#xA;pour couvrir la durée de vie de appareils,&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;fonctionnalités :&lt;/em&gt; il doit proposer au minimum le niveau de fonctionnalités&#xA;attendu par la ou les versions d&amp;rsquo;Android qu&amp;rsquo;il supporte.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Chaque version du noyau Android est nommée&#xA;&lt;code&gt;&amp;lt;android-version&amp;gt;&lt;/code&gt;-&lt;code&gt;&amp;lt;linux-lts&amp;gt;&lt;/code&gt; où :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;android-version&lt;/code&gt; est la version d&amp;rsquo;Android courante au moment où ce noyau a&#xA;été publié. Selon sa maturité un noyau peut être (ou pas) compatible avec l&amp;rsquo;une&#xA;ou l&amp;rsquo;autre des versions d&amp;rsquo;Android. La matrice des compatibilités est documentée ici :&#xA;&lt;a class=&#34;link&#34; href=&#34;https://source.android.com/docs/core/architecture/kernel/android-common#compatibility-matrix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Android Common Kernel - Compatibility matrix&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;linux-lts&lt;/code&gt; est la version &lt;em&gt;Long Term Supported&lt;/em&gt; (&lt;em&gt;LTS&lt;/em&gt;) du noyau Linux sur&#xA;laquelle ce noyau Android est basé. Les différentes releases LTS du noyau Linux&#xA;sont consultables sur le site du noyau lui même: &lt;a class=&#34;link&#34; href=&#34;https://www.kernel.org/category/releases.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Linux -&#xA;Releases&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;branche-principale-du-noyau&#34;&gt;Branche principale du noyau&#xA;&lt;/h2&gt;&lt;p&gt;La &lt;a class=&#34;link&#34; href=&#34;https://source.android.com/docs/core/architecture/kernel/gki-dev#patch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;logique de développement&lt;/a&gt;&#xA;du noyau Android voudrait que toute modification au noyau soit d&amp;rsquo;abord faite au&#xA;noyau Linux (&amp;ldquo;upstream&amp;rdquo;), avant de redescendre dans la noyau Android par des&#xA;merges réguliers. Suivant cette logique, l&amp;rsquo;ACK possède une branche&#xA;&lt;code&gt;android-mainline&lt;/code&gt; qui reçoit des merges réguliers en provenance de la branche&#xA;principale du noyau Linux (&lt;code&gt;master&lt;/code&gt;) lorsque Linus Torvalds publie une version,&#xA;ou une candidate.&lt;/p&gt;&#xA;&lt;p&gt;Ceci étant dit, il n&amp;rsquo;est pas toujours possible de se contenter du la branche &lt;code&gt;master&lt;/code&gt;&#xA;de Linux. Pour deux raisons :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;une fonctionnalité prête pour les appareils Android n&amp;rsquo;est pas nécessairement prête&#xA;pour une intégration dans Linux (ces discussions peuvent parfois être longue),&lt;/li&gt;&#xA;&lt;li&gt;un changement peut être propre à Android et n&amp;rsquo;aura jamais vraiment sa place dans&#xA;Linux.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Dans ce cas les patchs on un préfix dans la première ligne du message de commit :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ANDROID: ...&lt;/code&gt; lorsque c&amp;rsquo;est une modification spécifique à Android,&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;UPSTREAM: ...&lt;/code&gt; lorsque le patch vient de la branche &lt;code&gt;master&lt;/code&gt; du noyau Linux mais&#xA;n&amp;rsquo;a pas encore été intégrée par un merge de celui-ci,&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;FROMGIT: ...&lt;/code&gt; lorsque le patch provient du dépôt Git de l&amp;rsquo;un des mainteneurs&#xA;(&lt;code&gt;https://git.kernel.org/pub/scm/linux/kernel/git/...&lt;/code&gt;),&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;FROMLIST: ...&lt;/code&gt; lorsque le patch a été envoyé sur la mailing list du noyau (LKML)&#xA;mais n&amp;rsquo;a pas encore été accepté.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pour se faire une idée, on peut consulter les journaux de la branche &lt;code&gt;android-mainline&lt;/code&gt; :&#xA;&lt;a class=&#34;link&#34; href=&#34;https://android.googlesource.com/kernel/common/&amp;#43;log/refs/heads/android-mainline&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://android.googlesource.com/kernel/common/+log/refs/heads/android-mainline&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;linux-versions-stables-à-long-terme-lts&#34;&gt;Linux, versions stables à long terme (LTS)&#xA;&lt;/h2&gt;&lt;p&gt;Le noyau Linux a adopté en 2005 un processus de release permettant de&#xA;sélectionner une version dit &amp;ldquo;stable à long terme&amp;rdquo; (&lt;em&gt;Long Term Supported&lt;/em&gt; ou&#xA;&lt;em&gt;LTS&lt;/em&gt;) chaque année. Cette version est maintenue pendant une durée de deux ans,&#xA;une nouvelle livraison de ce noyau a lieu chaque semaine. Ce sont les versions&#xA;4.4.x, 4.9.x, 4.14.x, 4.19.x, 5.4.x, 5.10.x, 6.12.x and 6.18.x. Plus&#xA;d&amp;rsquo;informations sur les LTS encore maintenues sont disponible sur&#xA;&lt;a class=&#34;link&#34; href=&#34;https://www.kernel.org/category/releases.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;kernel.org/releases&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une version LTS reçoit alors entre 6 et 8 correctifs par jour. Plus le temps&#xA;passe, plus la version actuelle du noyau diverge de ses LTS. Par conséquent&#xA;l&amp;rsquo;application des correctifs peut être de plus en plus difficile à mesure que le&#xA;temps passe.&lt;/p&gt;&#xA;&lt;p&gt;Le graphique suivant illustre grossièrement le processus:&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34; style=&#34;visibility:hidden&#34;&gt;---&#xA;config:&#xA;  theme: &#39;default&#39;&#xA;  themeVariables:&#xA;    &#39;git0&#39;: &#39;#3465a4&#39;&#xA;    &#39;git1&#39;: &#39;#ad7fa8&#39;&#xA;    &#39;git2&#39;: &#39;#fcaf3e&#39;&#xA;  gitGraph:&#xA;    mainBranchName: &#39;master&#39;&#xA;    showCommitLabel: false&#xA;    parallelCommits: true&#xA;---&#xA;gitGraph&#xA;  commit&#xA;  commit&#xA;  branch 6.12&#xA;  commit tag:&#34;v6.12&#34;&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  checkout master&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  branch 6.18&#xA;  commit tag:&#34;v6.18&#34;&#xA;  checkout master&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  commit&#xA;  checkout 6.18&#xA;  commit&#xA;  commit&#xA;  commit&lt;/pre&gt;&lt;p&gt;La branche &lt;code&gt;master&lt;/code&gt; du noyau intègre tous les changements au fur et à mesure de&#xA;leur soumission aux divers mainteneurs. Lorsqu&amp;rsquo;un patch admis dans &lt;code&gt;master&lt;/code&gt;, il&#xA;peut être appliqué sur une ou plusieurs LTS à condition de respecter les &lt;a class=&#34;link&#34; href=&#34;https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;règles&#xA;de stabilité du&#xA;noyau&lt;/a&gt;&#xA;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;avoir été intégré dans &lt;code&gt;master&lt;/code&gt; (Linux mainline, aussi appelé &lt;em&gt;upstream&lt;/em&gt;),&lt;/li&gt;&#xA;&lt;li&gt;être (évidemment) correct et testé,&lt;/li&gt;&#xA;&lt;li&gt;ne pas dépasser 100 lignes&lt;/li&gt;&#xA;&lt;li&gt;suivre les règles de soumission : &lt;a class=&#34;link&#34; href=&#34;https://www.kernel.org/doc/html/latest/process/submitting-patches.html#submittingpatches&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Documentation/process/submitting-patches.rst&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;doit être un correction pour un bug qui a un impact sur les utilisateur, ou&#xA;juste un identifiant de périphérique.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Ces règles permettent de garantir la stabilité et simplifient le travail de&#xA;maintenance. Les branches LTS (6.12 et 6.18 sur le graphique) vont alors&#xA;régulièrement recevoir des corrections de ce type jusqu&amp;rsquo;à la fin de leur période&#xA;de support. Ce noyau deviendra alors obsolète et devra être mis à jour.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dune-lts-à-un-noyau-android-stable&#34;&gt;D&amp;rsquo;une LTS à un noyau Android stable&#xA;&lt;/h2&gt;&lt;p&gt;Lorsqu&amp;rsquo;une nouvelle version LTS est annoncée par le noyau Linux, une branche&#xA;correspondante est créée dans le noyau Android, à partir de la branche&#xA;&lt;code&gt;android-mainline&lt;/code&gt;, suivant la dénomination mentionée précédement:&#xA;&lt;code&gt;androidXX-Y.ZZ&lt;/code&gt;. Elle recevra, par des merges réguliers, les&#xA;améliorations fournie par la version LTS de Linux.&lt;/p&gt;&#xA;&lt;p&gt;On peut repérer ces mises à jour en regardant les commits de merge qui ressemblent&#xA;à &lt;a class=&#34;link&#34; href=&#34;https://android.googlesource.com/kernel/common/&amp;#43;/50e8de680435dfb61c1efbe10901c2cf9d97433a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;celui-ci&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;commit 50e8de680435dfb61c1efbe10901c2cf9d97433a&#xA;author Greg Kroah-Hartman &amp;lt;gregkh@google.com&amp;gt;&#xA;Sat Aug 15 11:23:19 2026 +0000&#xA;committer android-test-infra-autosubmit@system.gserviceaccount.com &amp;lt;android-test-infra-autosubmit@system.gserviceaccount.com&amp;gt;&#xA;Thu Aug 27 03:03:30 2026 -0700&#xA;&#xA;Merge tag &amp;#39;android16-6.12.92_r00&amp;#39; into android16-6.12&#xA;&#xA;This merges the android16-6.12.92_r00 tag into the android16-6.12 branch,&#xA;catching it up with the latest LTS releases.&#xA;&#xA;It contains the following commits:&#xA;&#xA;*   8a6dad0f5ad3 Merge ff43460784b7 (&amp;#34;arm64: debug: split single stepping exception entry&amp;#34;) into android16-6.12-lts&#xA;|\&#xA;| * ff43460784b7 arm64: debug: split single stepping exception entry&#xA;* | 781db77fd619 Merge 956e2dd2b072 (&amp;#34;arm64: debug: refactor reinstall_suspended_bps()&amp;#34;) into android16-6.12-lts&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sur une branche stable, on trouvera également des commits ayant le préfix&#xA;&lt;code&gt;BACKPORT: ...&lt;/code&gt;, il indique que le patch a déjà été accepté (ou sur la liste&#xA;de mail) en amont mais n&amp;rsquo;a pas pu être appliqué de manière transparente, lorsqu&amp;rsquo;il y a&#xA;un conflit au moment du cherry-pick par exemple.&lt;/p&gt;&#xA;&lt;h2 id=&#34;quelques-statistiques&#34;&gt;Quelques statistiques&#xA;&lt;/h2&gt;&lt;p&gt;Histoire de rendre tout ça concret, faisons un peu de statistiques sur la branche&#xA;&lt;code&gt;android16-6.12&lt;/code&gt;. On peut cloner le dépôt du noyau comme suit :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://android.googlesource.com/kernel/common&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ce qui nous place sur la branche &lt;code&gt;android-mainline&lt;/code&gt; par défaut. En parcourant&#xA;l&amp;rsquo;historique de la branche j&amp;rsquo;ai estimé son point de création autour du patch&#xA;suivant:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git show c0d49d669443&#xA;commit c0d49d669443da6576d51597df8d71e19d9826f0&#xA;Merge: bbb3f0a52148 a53bb4b36b92&#xA;Author: Aleksei Vetrov &amp;lt;vvvvvv@google.com&amp;gt;&#xA;Date:   Wed Nov 20 15:02:21 2024 +0000&#xA;&#xA;    Merge branch &amp;#39;aosp/android-mainline&amp;#39; into &amp;#39;android16-6.12&amp;#39;&#xA;&#xA;    This catches up android16-6.12 with android-mainline to 6.12-rc7.&#xA;&#xA;    Bug: 367265496&#xA;    Change-Id: I072760fe7a0f14fcfb67d4e4992939db4b810b63&#xA;    Signed-off-by: Matthias Maennich &amp;lt;maennich@google.com&amp;gt;&#xA;    Signed-off-by: Aleksei Vetrov &amp;lt;vvvvvv@google.com&amp;gt;&#xA;&#xA;diff --cc build.config.common&#xA;index 4dc465d75aa4,683e57364d25..0743c04d507f&#xA;--- a/build.config.common&#xA;+++ b/build.config.common&#xA;@@@ -1,16 -1,5 +1,7 @@@&#xA;  . ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants&#xA;&#xA; -BRANCH=android-mainline&#xA; +KMI_GENERATION=0&#xA; +&#xA; +BRANCH=android16-6.12&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ensuite on extrait le nombre de patchs appliqués depuis lors :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git log --graph --oneline c0d49d669443..origin/android16-6.12 | wc -l&#xA;23954&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En filtrant les patchs avec le &lt;code&gt;TAG:&lt;/code&gt; préfixant le titre du commit, on peut se faire&#xA;une idée des divergences d&amp;rsquo;une branche:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Type&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Patchs&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Proportion&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tout&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;23954&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;100%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Linux&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;19014&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;79.3%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ANDROID&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2774&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;11.6%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;UPSTREAM&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1040&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4.3%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FROMLIST&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;300&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1.3%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FROMGIT&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;462&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1.9%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;BACKPORT&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;364&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1.5%&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h2&gt;&lt;p&gt;Les noyaux Android répondent à des contraintes plus serrées que celles du noyau Linux,&#xA;notammement en terme de délais et de mise en production. La manière dont ces branches&#xA;sont gérées reflètent ces besoins, ainsi que la nécessité de stabilisation. Par&#xA;on peut constater que les branches sont majoritairement composées de patch en&#xA;provenance du noyau Linux, ou sur le point d&amp;rsquo;être soumis. Les noyaux Android ne sont&#xA;donc pas si divergents.&lt;/p&gt;&#xA;&lt;p&gt;Dans un prochain article nous regarderons comment les noyaux Android conservent une&#xA;ABI stable pour une version donnée, afin de permettre des mises à jour régulières du&#xA;noyau sans affecter le reste du système.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Android Illuminati ... brrr</title>
            <link>https://www.xioxoz.fr/posts/android-illuminati/</link>
            <pubDate>Tue, 03 Dec 2013 23:26:04 +0200</pubDate>
            <guid>https://www.xioxoz.fr/posts/android-illuminati/</guid>
            <description>&lt;p&gt;Celle-ci vaut le coup d&amp;rsquo;oeil ;)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/android/platform_frameworks_base/blob/master/core/java/android/os/Process.java&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;frameworks/base/core/java/android/os/Process.java&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/**&#xA; * @hide&#xA; * Private impl for avoiding a log message... DO NOT USE without doing&#xA; * your own log, or the Android Illuminati will find you some night and&#xA; * beat you up.&#xA; */&#xA;public static final void killProcessQuiet(int pid) {&#xA;    sendSignalQuiet(pid, SIGNAL_KILL);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
        </item><item>
            <title>Houston, on a un problème !</title>
            <link>https://www.xioxoz.fr/posts/houston-we-ve-had-a-problem/</link>
            <pubDate>Tue, 17 Sep 2013 16:51:04 +0200</pubDate>
            <guid>https://www.xioxoz.fr/posts/houston-we-ve-had-a-problem/</guid>
            <description>&lt;p&gt;Alors que j&amp;rsquo;essayais de comprendre un étrange freeze sur notre plateforme, je&#xA;suis tombé sur cette trace dans l&amp;rsquo;implementation des vues d&amp;rsquo;Android.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;private void fallback(boolean fallback) {&#xA;    destroy(true);&#xA;    if (fallback) {&#xA;        // we&amp;#39;ll try again if it was context lost&#xA;        setRequested(false);&#xA;        Log.w(LOG_TAG, &amp;#34;Mountain View, we&amp;#39;ve had a problem here. &amp;#34; &#xA;                     + &amp;#34;Switching back to software rendering.&amp;#34;);&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
        </item></channel>
</rss>
