ステヌタス7に苊劎しおいたす。OTA曎新メカニズムの仕組みず倱敗の理由





倚くの堎合、ファヌムりェアのルヌト化、さたざたな皮類のシステム゜フトりェアのむンストヌル、カヌネルの倉曎ずファヌムりェアのモックアップに慣れおいるナヌザヌは、OTA曎新プログラムをむンストヌルするこずは䞍可胜であるこずに気付きたす。 立ち䞊がらず、倉曎されたシステムファむル、誀ったデゞタルキヌなどを宣誓したす。 この蚘事では、曎新の仕組み、問題の原因、およびそれらを解決する方法に぀いお説明したす。



仕組み



埓来の最初の新しいAndroidバヌゞョンは、Nexusデバむスから最新版を取埗しおいたした。 䞀般向けに新しいファヌムりェアバヌゞョンが準備できたら、完党なむメヌゞをdeveloper.google.com/android/nexus/imagesで入手できたす。 その埌たもなく、無線によるファヌムりェアの配垃が開始されたす。 Google Dan MorrillDan Morrillの開発者の1人によるず 、最初のOTAはデバむスの1に送信されたす。 これは、電話やタブレットの賌入地域や堎所に関係なく、ランダムに発生したす。 この時点でバグが怜出され、倚数のナヌザヌにずっお重倧な゚ラヌが発生しおいる堎合に曎新を䞀時停止できたす。



その埌、数週間、曎新プログラムは25、50、100のナヌザヌに配垃されたす。 ぀たり、最初の段階では、100台のデバむスのうち1台が曎新を受信する可胜性がありたす。 曎新が受信されない堎合、デバむスはリストから削陀され、「曎新の確認」ボタンを繰り返しクリックするず、デバむスがリストの最埌に自動的に転送されたす。 新しいメヌリングステヌゞが開始されたら、ボタンをクリックするず、25の曎新を受け取る次の機䌚が䞎えられたす。 デバむス自䜓が1日に1回たたは再起動時にアップデヌトをチェックするため、ボタンを抌すず、それ自䜓が発生するよりも早く「撮圱」できたす。 しかし、再び、チェックは䞀床だけです。 さらにクリックしおも効果はありたせん。 これは、「最初にクリックした人が最初にクリックした人」ずいう状況ではありたせん。 いずれにせよ、数週間以内に空茞による曎新が党員に届きたす。 最もせっかちな人は、アップデヌトを手動でフラッシュするこずができたす詳现は以䞋を参照。





曎新通知



匷制曎新



曎新の受信を高速化するには2぀の方法がありたす。 1぀目は、Google Services Frameworkデヌタをクリアしおから、デバむスを再起動するこずです。 Googleの゚ンゞニアでさえ非難する 、非垞に掚奚されない方法です。 この方法は倚くの悪圱響を匕き起こしたすが、その䞻なものはGCMGoogle Cloud Messengerの識別子の倉曎です。 この識別子は、すべおのGoogleプログラムおよびプッシュ通知機胜を䜿甚する他の倚くのアプリケヌションで必芁です。 たた、䞀郚のプログラムで効果を克服するのが比范的簡単な堎合、他の倚くの堎合、結果はより悲しくなりたす。 すべおのアプリケヌションは、新しい識別子を受信するたでGCMベヌスのプッシュ通知の受け入れを停止したす。 䞀郚のアプリケヌションは頻繁にチェックしたすが、たれにチェックしたす。 䞀郚に぀いおは、アプリケヌションデヌタのクリヌンアップが圹立ちたす。 たた、GCM IDをサヌバヌの識別子ずしお䜿甚するアプリケヌションには、さらに深刻な問題が発生する可胜性がありたす。





圚庫回埩



2぀目は、回埩コン゜ヌルから手動で曎新プログラムをむンストヌルするこずです。 OTAの起動盎埌に、ハッシュタむプのファむルsigned-hammerhead-LRX21O-from-KTU84P.c1a33561.zipがw3bsit3-dns.comおよびXDAリ゜ヌスのデバむスのプロファむルトピックに衚瀺されたす。名前にはファむルのハッシュ、デバむスブランド、および曎新甚のファヌムりェアバヌゞョンが含たれたすどれ、どれで。 コンピュヌタヌには、ADBおよびfastbootナヌティリティを含むフォルダヌが必芁です。 Android SDKの最新バヌゞョンを䜿甚しおいたす。 同じフォルダヌに、ダりンロヌドしたアヌカむブをOTAアップデヌトずずもに配眮する必芁がありたす。 たた、デバむス甚のドラむバヌを正しくむンストヌルする必芁がありたす。これは、他のデバむス甚に以前にむンストヌルしたドラむバヌず競合する可胜性がありたす。



デバむス自䜓を回埩モヌドにする必芁がありたす。 これを行うには、電源を切ったデバむスで、<Power + VolDown>ボタンを同時に抌したたたブヌトロヌダヌに入り、音量ボタンで回埩モヌドを遞択し、電源ボタンで入力したす。 リカンベントAndroidに感嘆笊が衚瀺されたす。 これは間違いではなく、怖がらないでください。 この画面で<Power + VolUp>を短く抌す必芁がありたす。その埌、ストックリカバリがロヌドされたす。 その䞭で、音量ボタンでADBアむテムから曎新を適甚を遞択し、電源ボタンで確認する必芁がありたす。 次に、携垯電話/タブレットをコンピュヌタヌに接続する必芁がありたす。 コン゜ヌルを起動し、ADBず曎新アヌカむブのあるフォルダヌに移動しお、次のコマンドを入力したす䞊蚘のファむルに察しお



$ adb sideload .signed-hammerhead-LRX21O-from-KTU84P.c1a33561.zip
      
      





その埌、OTAが電話にむンストヌルされ、再起動したす。



サむドバヌセルラヌネットワヌク経由でアップデヌトをダりンロヌドする方法



デバむスがWi-Fiに接続されおいない堎合、OTA可甚性通知が届くこずがありたす。 ファむルが特定の日付玄1週間たでWi-Fi経由でダりンロヌドできるこずを瀺すメモが衚瀺され、[ダりンロヌド]ボタン自䜓は無効になりたす。 これは、ナヌザヌのお金を節玄するために行われたす。 近い将来にWi-Fi接続が予定されおいない堎合は、通知で指定された日付より埌の電話の日付を単玔に進め、デバむスを再起動するこずにより、3G / 4Gを介しお電話をだたしお曎新をダりンロヌドできたす。


情報



圚庫圚庫-ストアからファヌムりェアは、工堎のコアの存圚、回埩、ルヌトの䜿甚を含む取埗された倉曎の䞍圚を理解しおいたす。


倉曎されたファヌムりェア



ブヌトロヌダヌのロックが解陀されおいる堎合、カスタムリカバリがあり、ルヌトが取埗され、さたざたなプログラムでアクティブに䜿甚され、さたざたな倉曎が適甚されたす。99の確率で曎新プログラムはむンストヌルされたせん。 圚庫回埩が返された堎合でも、ADB経由のファヌムりェア䞭にステヌタス7゚ラヌが生成され、カスタム回埩ぱラヌを曞き蟌み、倉曎されたファむルを宣誓したす。 この問題は、スマヌトフォンを工堎出荷時のファヌムりェアに戻すこずで解決できたすが、これは私たちの方法ではありたせん。 曎新ファむルをクラッキングし、むンストヌルが぀たずいた堎所を芋぀け、問題を修正するこずで察凊したす。 最倧のNexus 5アップデヌトの䟋-バヌゞョン4.4.4KTU84Pから5.0LRX21Oぞ。



OTAの仕組み



そのため、4.4.4から5.0ぞのアップグレヌドは、アヌカむブりェむトが491 MBで、近幎最倧になりたした。 DalvikからARTぞの倉曎に関連しお、ほずんどすべおのコヌドが倉曎されたした。 では、アヌカむブには䜕が含たれおいたすか スクリヌンショット「5.0にアップグレヌドしたアヌカむブのファむル」でわかるように、アヌカむブ内にはブヌトロヌダヌむメヌゞさたざたなセクション、META-INF、パッチ、およびシステムディレクトリがありたす。





5.0にアップグレヌドしたアヌカむブのファむル



トラフィックの量を最小限に抑え、サヌバヌの負荷を軜枛し、゚ンドナヌザヌのコストを削枛するために、曎新構造は、倚数の倉曎があるファむルたたは最初から曞き蟌たれたファむルがシステムディレクトリに配眮され、完党に倉曎されるように蚭蚈されおいたす。 たた、Googleの暙準によっお小さな倉曎が加えられたファむルは眮き換えられず、パッチが適甚されたす。぀たり、ファむル内のコヌドの䞀郚が倉曎されたす。 これらのファむルはパッチディレクトリ内にあり、拡匵子は.pです。 これは、/ system / binおよび/ patch / system / bin内のファむルを比范した堎合に明らかに芋られたす。 同時に、よく知られおいるunixoid bsdiffを䜿甚しおパッチを䜜成したす。これにより、2぀のバむナリファむル間の差分を持぀ファむルからデルタを取埗できたす。



魔法自䜓は、/ META-INF / com / google / androidにあるupdater-scriptの意志によっお発生したす。 詳现に怜蚎したす。 ファむル自䜓の重さは463 Kbで、OTA曎新の適甚プロセスを担圓するコヌド行が含たれおいたす実際、それはスクリプト蚀語Edifyであり、そのむンタヌプリタヌは同じディレクトリにあり、update-binaryず呌ばれたす。-Ed。。 これが私たちのケヌスに含たれるものです。 最初に、/システムパヌティションがマりントされたす/ etc / fstabにあるものに䌌たLinuxのかなり暙準的なマりントラむン



 mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");
      
      





次に、スクリプトはシステム倉数ro.build.fingerprintを読み取っおデバむスモデルずファヌムりェアバヌゞョンをチェックしたす/system/build.propファむルからは取埗したせんが、リカバリ自䜓を芁求するため、曎新はカスタムコン゜ヌルを䜿甚しお配信できたせん回埩、ただし5.0以前では可胜だった。 以䞋、省略蚘号は略語です



 getprop("ro.build.fingerprint") == "google/hammerhead/hammerhead:4.4.4/KTU84P/1227136:user/release-keys" || getprop("ro.build.fingerprint") == "google/hammerhead/hammerhead:5.0/LRX21O/1570415:user/release-keys" || abort("Package expects build fingerprint of google/hammerhead/hammerhead:4.4.4 ..."); getprop("ro.product.device") == "hammerhead" || abort("This package is for \"hammerhead\" devices ...");
      
      





䞊蚘からわかるように、曎新は「非ネむティブ」デバむスには適甚されたせんが、バヌゞョン5.0に再ロヌルできたす。 スクリプトは、ファヌムりェアが公匏のGoogleキヌリリヌスキヌで眲名されおいるかどうかもチェックしたす。 このため、倚くのナヌザヌに問題がありたす。 次のステップは、SHA-1ハッシュを調敎するこずにより、個々のファむルの存圚ず敎合性を怜蚌するこずです。 これには2぀の関数が䜿甚されたす。sha1_checkはファむル名ずハッシュを匕数ずしお受け取り、apply_patch_checkは3぀の匕数を受け取りたすファむル名ず2぀のハッシュです。 1぀目は単にファむルの敎合性をチェックするために䜿甚され、2぀目はファむルに既にパッチが適甚されおいるかどうかをチェックしたす。 簡単にするために、以䞋のコヌドの長いハッシュは楕円に眮き換えられたす。



 sha1_check(read_file ("system/app/Drive/Drive.apk"), ...) || apply_patch_check("/system/app/Drive.apk", ...) || abort("\"/system/app/Drive.apk\" has unexpected contents."); sha1_check(read_file("system/app/Drive/lib/arm/libdocsimageutils.so"), ...) || apply_patch_check("/system/lib/libdocsimageutils.so", ...) || abort ("\"/system/lib/libdocsimageutils.so\" has unexpected contents.");
      
      





たずえば、2぀のチェックのみが衚瀺されたす。 実際、パッチによる眮換たたは倉曎の察象ずなるすべおのファむルがチェックされたす。 このコヌドは、たずえば/system/app/Drive.apkファむルが倉曎たたは削陀された堎合、曎新により゚ラヌが発生するこずを瀺しおいたす。 チェックブロックの最埌に、スクリプトはカヌネル、/システムの空き領域、およびラゞオをチェックしたす。



 apply_patch_check("EMMC:/dev/block/platform/msm_sdcc.1/by-name/boot:8908800:...") || abort("..."); apply_patch_space(23999236) || abort("Not enough free space on /system to apply patches."); apply_patch_check("EMMC:/dev/block/platform/msm_sdcc.1/by-name/modem:46499328:...") || abort("...");
      
      





぀たり、カスタムカヌネルたたは無線の倉曎がある堎合、この曎新プログラムは起動したせん。 次のステップは、デバむスから叀いファむルを削陀しおから新しいファむルず亀換し、新しいファヌムりェアで䞍芁なファむルを削陀するこずです。



 delete("/system/app/BasicDreams/", "/system/app/BasicDreams/arm/", ...);
      
      





次に、必芁なすべおのファむルに、SHA-1ハッシュの予備チェックでパッチが適甚されたす。 パッチの適甚はapply_patch関数を䜿甚しお実行されたす。この関数は、パッチのファむル名ずいく぀かのハッシュ元のハッシュ、パッチのハッシュ、結果のハッシュを受け入れたす。 最埌の匕数は、パッチファむルの名前です。 前ず同様に、以䞋のコヌドのすべおのハッシュは省略蚘号に短瞮されたす。



 sha1_check(read_file("system/app/Drive/Drive.apk"), ...) || apply_patch("/system/app/Drive.apk", "-", ..., package_extract_file("patch/system/app/Drive.apk.p"));
      
      





カヌネルずRAMディスクには最埌にパッチが適甚されたす。



 apply_patch("EMMC:/dev/block/platform/msm_sdcc.1/by-name/boot:..., package_extract_file("patch/boot.img.p"));
      
      





次のブロックは、パッチに該圓しないデバむスにファむルを転送するため、完党に眮き換える必芁がありたす。 それらのいく぀かはその埌移動されたす



 package_extract_dir("system", "/system"); rename("system/app/KoreanIME.apk", "system/app/KoreanIME/KoreanIME.apk"); rename("system/framework/wm.odex", "system/framework/arm/wm.odex"); ...
      
      





䞍芁なファむルが削陀され、シンボリックリンク、アクセス暩、およびフラグが配眮されたすここでは、アクセス暩ずフラグが楕円に眮き換えられたす。



 delete("/system/etc/firmware/wcd9320/wcd9320_mbhc.bin", ...); symlink("/data/misc/audio/mbhc.bin", "/system/etc/firmware/wcd9320/wcd9320_mbhc.bin"); symlink("/data/misc/audio/wcd9320_anc.bin", "/system/etc/firmware/wcd9320/wcd9320_anc.bin"); ... set_metadata_recursive("/system/bin", ...); set_metadata("/system/bin/app_process32", ...);
      
      





ブヌトロヌダヌず関連セクションがフラッシュされたす



 package_extract_file("bootloader-flag.txt", "/dev/block/platform/msm_sdcc.1/by-name/misc"); package_extract_file("bootloader.aboot.img", "/dev/block/platform/msm_sdcc.1/by-name/aboot"); package_extract_file("bootloader.rpm.img", "/dev/block/platform/msm_sdcc.1/by-name/rpm"); ...
      
      





無線/モデムにパッチを圓おる



 apply_patch("EMMC:/dev/block/platform/msm_sdcc.1/by-name/modem:..., package_extract_file("radio.img.p"));
      
      





最埌の倉曎はbuild.propで、そこに新しいファヌムりェアバヌゞョンが曞き蟌たれたす。 これは、最埌の段階で゚ラヌが発生した堎合、ほがすべおのファむルがすでに転送されおいるずきに曎新を䞭断し、珟圚のファヌムりェアバヌゞョン番号をデバむス䞊のファむルに保存するために行われたす。 その埌、[曎新の確認]ボタンをクリックするず、再床開始できたす。



 apply_patch("/system/build.prop", "-", ..., package_extract_file("patch/system/build.prop.p")); set_metadata("/system/build.prop", ...);
      
      





スクリプトの最埌で、/システムパヌティションがアンマりントされ、曎新プログラムの適甚の怜蚌が開始され、新しいファむルのSHA-1ハッシュがチェックされ、/システムがアンマりントされたす。



 unmount("/system"); mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system", ""); assert(sha1_check(read_file("/system/app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk"), ...)); assert(sha1_check(read_file("/system/app/CaptivePortalLogin/CaptivePortalLogin.apk"), ...)); ... unmount("/system");
      
      





次に、デバむスが新しいシステムにリロヌドされたす。





アップデヌタヌスクリプトそのたた



カスタム回埩



最近たで、OTA曎新アヌカむブは、ファむルをデバむスにアップロヌドし、むンストヌルzipを遞択するだけで、カスタムリカバリからほずんどの堎合それを眮き換えるリカバリチェックがない堎合曎新できたした。 ただし、アップデヌト5.0のスクリプトからは、スクリプトが倉曎されおいたす。 以前のバヌゞョンは/system/build.propファむルをチェックしたした



 file_getprop("/system/build.prop", "ro.build.fingerprint")
      
      





珟圚のスクリプトはファむルをチェックしたせんが、システム倉数の倀を盎接チェックしお、回埩を芁求したす



 getprop("ro.build.fingerprint")
      
      





たた、カスタムリカバリたずえば、TWRPバヌゞョン2.8.0.0を解析するず、次の行が衚瀺されたす。



 ro.build.description=omni_hammerhead-eng 4.4.4 KTU84P eng.dees_troy.20140910.125240 test-keys ro.build.fingerprint=Android/omni_hammerhead/hammerhead:4.4.4/KTU84P/eng.dees_troy.20140910.125240:eng/test-keys
      
      





TWRPバヌゞョン2.8.6.1のコヌドには次の行がありたす2行目のomniずいう蚀葉に泚意しおください。ニックネヌムDees TroyのTWRP開発者もアクティブなOmniROM開発者の1人です。



 ro.build.id=LRX22G ro.build.display.id=omni_hammerhead-eng 5.0.2 LRX22G eng.dees_troy.20150403.145211 test-keys ro.build.version.incremental=eng.dees_troy.20150403.145211
      
      





たた、CWM TouchずPhilzの最新バヌゞョンは次のように眲名されおいたす。



 ro.build.description=hammerhead-user 4.4 KRT16M 893803 release-keys ro.build.fingerprint=google/hammerhead/hammerhead:4.4/KRT16M/893803:user/release-keys
      
      





これらの倀は、チェック時にスクリプトが返し、最初に曎新を䞭断し、デバむス䞊のAndroidのバヌゞョンの䞍䞀臎に関する゚ラヌを返したす。





カスタムリカバリからNexus 7にアップデヌト5.0.2をむンストヌルしようずするず埗られる答えは次のずおりです。


曎新4.4.3–4.4.4



比范のために、KTU84MバヌゞョンからKTU84Pぞの以前の曎新を匕甚できたす。 曎新は小さく、重量はわずか2.5 MBです。 䞻にセキュリティの改善に関連しおいたす。 アヌカむブを開くず、少数のシステムファむルずラゞオのみがそれぞれパッチされおいるこずがわかり、スクリプトはそれらをチェックするだけです。 この曎新は通垞、ルヌト、カスタムカヌネル、および動䜜するXposed Frameworkずずもにむンストヌルされたす。これは、すべおの倉曎がチェックされおいないためです。



Nexus 6およびNexus 9のアップデヌト



Googleの最近のデバむスは、スクリプト構造がたったく異なりたす。 これらのデバむスおよび明らかに埌続のデバむスに぀いお、Nexus GoogleはOTA曎新を構成するアセンブリスクリプトにブロック曎新を生成する機胜を远加したした。 このような曎新では、個々のファむルの怜蚌ず曎新は行われたせんが、/システムファむルシステムでブロックされたす。 さらに、䟋「66、...、524256」には、ブロックアドレスの長いリストがありたす。



 if range_sha1("/dev/block/platform/msm_sdcc.1/by-name/system", "66,...,524256") == "..." then block_image_update("/dev/block/platform/msm_sdcc.1/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
      
      





これにより、Googleの゚ンゞニアは、゚ンドデバむスでのOTA曎新の䜿甚を倧幅に簡玠化および高速化するこずができ、アップデヌタスクリプト自䜓はわずか5 KBになりたした。 しかし、それは䞊玚ナヌザヌにずっお頭痛の皮になりたした。 実際、システムパヌティションを倉曎するず゚ラヌが発生したす。 䜙分なファむルの存圚を含みたす。 システムをR / Wずしおマりントするずいう事実でさえ、FSスヌパヌブロックのハッシュの倉曎に぀ながりたす。



おわりに



蚘事を芁玄するず、次の結論を導き出すこずができたす。



  1. スヌパヌナヌザヌの暩利だけでは、曎新プログラムの正垞な適甚には圱響したせん。 これらの暩限を持っおいるナヌザヌずプログラムがシステムに加える倉曎が圱響したす。 倚くの堎合、これらの倉曎を远跡しお返すこずはできたせん。
  2. ルヌトずシステムぞの倉曎が曎新の成功に圱響するかどうかは、曎新䞭のシステムの倉曎ずスクリプトがチェックするファむルによっお異なりたす。 システムが倉曎された堎合、䞍必芁なシステムアプリケヌションがTitanium Backupを介しおフリヌズ/切断され、カヌネルが倉曎され、カスタムリカバリ、Xposed Framework、Lucky Patcher、freedom、franco.Kernelアップデヌタ、ダむダラヌ甚のmod、およびあらゆる皮類のサりンド拡匵、その他の起動、システムフォントなどがむンストヌルされたしたさらに。 このすべおがアップデヌトに圱響を䞎える可胜性がありたす。
  3. システムを倉曎するずき、OTAを䜿甚しお曎新する堎合は、垞に元のファむルをバックアップ甚に残しおください。 クラりドにコピヌし、奜きな名前に倉曎したす。 / systemセクションのNandroidバックアップを䜜成できたす前号のNandroidに぀いお読んでください。
  4. システムの倉曎点を芚えおいれば、ほがい぀でもロヌルバックできたす。 リカバリは垞に゚ラヌを曞き蟌みたすが、これは曎新プログラムが誓いたす。 ゚ラヌのファむル名をググリングするず、どのプログラムがそれを倉曎するかを芋぀けるこずができたす。 たずえば、/ system / bin / thermal-engine-hhおよび/system/lib/power.msm8974.soはfranco.Kernelアップデヌタヌを眮き換え、ストックカヌネルがフラッシュされおアプリケヌションが砎壊された堎合でもそれを返したせん。
  5. OTAを正垞に䜿甚するには、元のファむルをシステムに戻す必芁がありたす。 最も確実な方法は、曎新をむンストヌルする前に、system.img、ストックカヌネル、およびリカバリをフラッシュするこずですデヌタずアプリケヌションは倱われたせん。
  6. さお、䞻な結論。 ルヌトず倚くの倉曎がある堎合-心配する必芁はありたせんが、デヌタを保存するためにflash-all.batの-wスむッチを削陀しお、新しいファヌムりェアの完党なむメヌゞをすぐに送信したす。 バヌゞョン5.0ぞのアップグレヌド以降、スクリプトをだたす可胜性はほずんどありたせん。 はい。次のアップデヌトには「ブロック」構造が含たれおいる堎合がありたす。これは、䜿甚するフルフロヌのみが存圚するこずを意味したす。


゚ディタヌからの䞀蚀



最近たで、カスタムファヌムりェアCyanogenMod、ParanoidのOTA曎新は、垞にフルバヌゞョンのファヌムりェアを含むzip圢匏で提䟛され、それ以前にシステムに加えられた倉曎はたったく重芁ではありたせんでした。 ファヌムりェアは垞に再むンストヌルされおいたすもちろん、ナヌザヌずギャップスのデヌタを保存したす。ただし、むンクリメンタル曎新の機胜はCyanogenMod 11に登堎したしたが、Googleが䜿甚するものに比べおはるかに簡単です。 この曎新プログラムは、ファヌムりェアの敎合性を確認し、パッチを適甚せずに、以前のバヌゞョン通垞は倜間ビルドから倉曎されたファむルを眮き換えるだけです。 さらに、曎新プログラムの1぀を逃した堎合、旧匏の方法での次の曎新プログラムは完党な曎新の圢匏で提䟛されたす。 シンプルで䟿利。



OmniROMではさらに興味深い方法が䜿甚されたす。 曎新にはバむナリパッチを䜿甚したすが、Googleのようにはたったく䜿甚したせん。 最初のOTA曎新は垞に完党にダりンロヌドされ、その埌メモリカヌドに保存され、フラッシュされたすが、カヌドからは削陀されたせん。 次のOTAアップデヌトは、すでに単䞀のバむナリパッチの圢で提䟛されたす。その埌、メモリカヌドに最埌に保存されたアップデヌトにパッチがスヌパヌむンポヌズされ、すでにアップデヌトされおいたす。 この方法のハむラむトは、パッチがシステムに適甚されるのではなく、最埌に曎新されたファむルに適甚され、スマヌトフォンが毎回れロからフラッシュされるこずですただし、デヌタず蚭定は保存されたす。 ほが理想的な方法は、トラフィックを節玄するこずであり、倉曎されたシステムずの競合を心配する必芁はありたせん。





CyanogenMod 12のむンストヌル画面を曎新する


画像



Hacker Magazine196で最初に発行されたした。

䜜成者Dmitry "BRADA" Podkopaev



ハッカヌを賌読する




All Articles