• 1

What exactly happens when you insist on flashing without wiping and formatting?

You’ve heard it said time and time again: for the best experience, you really need to “wipe your partitions and format your data”. This way, you will be able to experience the ROM operating at its best, as the developers intended.

But you never really cared because so far nobody has been able to explain to you in simple terms why you really have to do it. So, here we go: I actually dirty flashed (for the purpose of this blog).

What does a “clean” flash with format data mean?

A clean flash with format data is a process in which the device is flashed with a new version of the operating system. This process erases all existing data and settings on the device and reinstalls the fresh version of the OS.

This ensures that the device is running the latest version of the operating system and is free from any potential problems caused by old versions and by the TONES (I am actually NOT exaggerating ) of leftover files from either the other ROM you came from, or from the PREVIOUS VERSION ROM.The act of formatting and wiping is done on something called “partitions”. These partitions are locations present on your device. (I explained it as simple as I could ).

There are lots of partitions on Android but the main ones you will see and work with are:

  1. Boot Partition
  2. System Partition
  3. Vendor Partition
  4. Data Partition
  5. Cache Partition
  6. Recovery Partition
  7. Persist Partition
  8. OEM Partition
  9. Metadata Partition
  10. FOTA Partition

Let’s try to explain them in simple words:

  • Boot Partition: This partition stores the bootloader and is responsible for loading the operating system when the device is powered on.
  • System Partition: This partition stores the Android OS and its associated system files.
  • Vendor Partition: This partition holds vendor-specific files, such as device drivers and hardware-specific OS components.
  • Data Partition: This partition stores all of the user data, including applications, music, photos, and videos.
  • Cache Partition: This partition stores temporary data, such as downloaded packages and installation files.
  • Recovery Partition: This partition is used to store recovery images and other information needed to restore the device to its factory settings.
  • Persist Partition: This partition stores settings and other data that persists across system updates and factory resets.
  • OEM Partition: This partition stores manufacturer-specific files, such as logos and other brand-specific images.
  • Metadata Partition: This partition stores metadata, such as partition table information and other information needed by the device to boot.
  • FOTA Partition: This partition stores files needed for over-the-air (OTA) updates.

So your ROM files, your settings your preferences ,everything that makes your ROM look and behave the way you want it kind of resides in all those partitions. Along with your apps and all your data.

Why do I have to format data when upgrading the Android ROM or when coming from a different ROM?

When changing an Android ROM, you need to format data in order to ensure that the new ROM and its associated partitions are properly configured and optimized to work with the device. This helps to prevent any issues that could arise from incompatible data or settings from the previous ROM. It also helps to ensure that all of the data on the device is wiped and the device is reset to its factory settings. This also helps to improve the performance of the device by removing any redundant files or unnecessary data that may have been left over from the previous ROM.

And here is the million dollar question:

What kind of data from the previous ROM is left behind when a dirty flash is performed?

When a dirty flash is performed, the data from the previous ROM that is left behind typically includes user account information, application data, preferences, and settings. Additionally, any customisation or modifications made to the previous ROM may also remain in the system. Which of course that means that the old settings will be clashing with the settings the NEW ROM is trying to apply.

There’s a lot of stuff left behind from one version to an other or even worse, when you are coming from another ROM to ArrowOS. Stuff like :

data and files from the previous ROM that are left behind when a dirty flash is performed

  • System settings: wallpaper, sound settings, app preferences, etc.
  • Cached data: temporary files used by apps and the system.
  • Dalvik-cache: created by the system to optimize app performance.
  • Kernel data: used to store information about the kernel.
  • Boot image: contains the kernel and the RAM disk.
  • Bootloader: instructions for loading the operating system.
  • Radio image: contains the radio’s firmware and other files.
  • Recovery image: used to restore the device to its factory settings.

Now you begin to understand just how much stuff is left behind and how the potential for malfunctioning increases…

When you dirty flash there will be a lot of files left behind in an awful lot of places, and all those files have the potential to affect IMPORTANT PARTS of the NEW SYSTEM you just flashed on top of the old ROM.

Stuff like :

  1. Bluetooth Settings (Location: /data/misc/bluedroid)
  2. Wi-Fi Settings (Location: /data/misc/wifi)
  3. System Settings (Location: /data/system)
  4. Display Settings (Location: /data/system/display)
  5. Wallpaper Settings (Location: /data/system/wallpaper)
  6. Language Settings (Location: /data/system/language)
  7. Input Settings (Location: /data/system/input)
  8. Security Settings (Location: /data/system/security)
  9. Accessibility Settings (Location: /data/system/accessibility)
  10. Sound Settings (Location: /data/system/sound)
  11. Network Settings (Location: /data/system/net)
  12. Notification Settings (Location: /data/system/notifications)
  13. Dialer Settings (Location: /data/system/dialer)
  14. MMS Settings (Location: /data/system/mms)
  15. SMS Settings (Location: /data/system/sms)
  16. Application Settings (Location: /data/system/app)
  17. Privacy Settings (Location: /data/system/privacy)
  18. Accounts Settings (Location: /data/system/accounts)
  19. Power Management Settings (Location: /data/system/power)
  20. Keyboard Settings (Location: /data/system/keyboard)
  21. Display Mode Settings (Location: /data/system/display_mode)
  22. Lock Screen Settings (Location: /data/system/lockscreen)
  23. Media Settings (Location: /data/system/media)
  24. Time Zone Settings (Location: /data/system/timezone)
  25. Date and Time Settings (Location: /data/system/date_time)
  26. Device Settings (Location: /data/system/device)
  27. Application Permissions (Location: /data/system/permission)
  28. Application Permissions Settings (Location: /data/system/permission_setting)
  29. Application Settings (Location: /data/system/app)
  30. Application Restrictions (Location: /data/system/restriction)
  31. Application Logs (Location: /data/system/log)
  32. Backup and Restore Settings (Location: /data/system/backup)
  33. Device Administrator Settings (Location: /data/system/device_admin)
  34. Application Settings (Location: /data/system/app)
  35. File Access Settings (Location: /data/system/file_access)
  36. User Settings (Location: /data/system/user)
  37. Home Screen Settings (Location: /data/system/home)
  38. Font Settings (Location: /data/system/fonts)
  39. Theme Settings (Location: /data/system/themes)
  40. System UI Settings (Location: /data/system/ui)
  41. Accessibility Service Settings (Location: /data/system/accessibility_service)
  42. Input Method Settings (Location: /data/system/input_method)
  43. Home Screen Shortcuts (Location: /data/system/shortcuts)
  44. System Sounds Settings (Location: /data/system/sounds)
  45. System Accessibility Settings (Location: /data/system/accessibility)
  46. Notification Access Settings (Location: /data/system/notification_access)
  47. Voice Recognition Settings (Location: /data/system/voice_recognition)
  48. Volume Settings (Location: /data/system/volume)
  49. Network Traffic Settings (Location: /data/system/traffic)
  50. Network Usage Settings (Location: /data/system/network_usage)

Especially on a GAPPS build there would be a lot of OLD VERSIONS of the APKs and more importantly a lot of the OLD libraries left by the other programs and by the Google Apps themselves… So what are these libraries you ask: Well, bear with me:

Android Libraries are collections of Java classes and resources that are used to develop Android applications. They are used to provide a common set of functions that can be accessed by multiple applications. The libraries and frameworks provide a wide range of features such as image processing, networking, data storage, and media playback. They also enable developers to create more efficient and robust applications. By providing a shared codebase, the libraries and frameworks influence the operating system by making it easier to develop applications that can work across multiple versions of Android. Additionally, the libraries and frameworks help ensure that applications adhere to Google’s best practices and standards.

So in simple terms:Android Libraries are collections of tools that help developers create apps for Android phones and tablets. They make it easier for developers to create apps that work across different versions of Android and follow Google’s standards. They are files which usually end up in .SO . You will be able to recognize them very fast if you dare to open the terminal.

The following files from the previous rom will usually be left behind . Below is a SHORT LIST with what usually is left behind . Well all those libraries left behind will normally cause a library conflict.

What is a library conflict? I am glad you asked : Here it comes…. A library version conflict in Android is something that occurs when two or more different versions of a library are present in a project.

This can cause the apps to experience build errors or unexpected behaviours at runtime. Library version conflicts can be difficult to debug due to the complexity of the Android build system and the number of Android libraries that can be included in a project.

If you made it this far, now you understand why your ArrowOS build behaves the way it does…. Anyways… Assuming you are interested here’s a list with the usual libraries and APKs that are normally left behind when you perform a dirty flash. Now you begin to understand just how many things can go wrong because of a dirty flash. Next time… DON’T BLAME THE ARROWOS developers when your device is not performing properly after a dirty flash.

  1. lib/libc.so
  2. lib/libcutils.so
  3. lib/libdl.so
  4. lib/liblog.so
  5. lib/libm.so
  6. lib/libstdc++.so
  7. lib/libz.so
  8. lib/egl/libEGL_adreno.so
  9. lib/egl/libGLESv1_CM_adreno.so
  10. lib/egl/libGLESv2_adreno.so
  11. app/GoogleServicesFramework.apk
  12. app/GmsCore.apk
  13. app/GoogleBackupTransport.apk
  14. app/PrebuiltGmsCore.apk
  15. app/Vending.apk
  16. app/Gmail.apk
  17. app/GoogleLoginService.apk
  18. app/GoogleCalendarSyncAdapter.apk
  19. app/GoogleContactsSyncAdapter.apk
  20. app/GoogleTalk.apk
  21. app/GooglePartnerSetup.apk
  22. app/GooglePlayStore.apk
  23. app/GoogleContacts.apk
  24. app/GooglePlayServices.apk
  25. app/GoogleCalendar.apk
  26. app/GooglePlus.apk
  27. app/FaceLock.apk
  28. app/GoogleMusic.apk
  29. app/GoogleTTS.apk
  30. app/YouTube.apk
  31. app/GoogleSkyMap.apk
  32. app/GoogleMaps.apk
  33. app/GoogleStreetView.apk
  34. app/GoogleEarth.apk
  35. app/GoogleSearch.apk
  36. app/GoogleFeedback.apk
  37. app/GoogleVoiceSearch.apk
  38. app/GoogleSearchWidget.apk
  39. app/GoogleTTS.apk
  40. app/VoiceSearch.apk
  41. app/Talk.apk
  42. app/GoogleText-to-Speech.apk
  43. app/Maps.apk
  44. app/GooglePlayMusic.apk
  45. app/GoogleDrive.apk
  46. app/GooglePlus.apk
  47. app/GoogleSettings.apk
  48. app/GoogleHangouts.apk
  49. app/GoogleNow.apk
  50. app/GoogleCamera.apk
  51. app/GoogleTextTospeech.apk
  52. app/CyanogenModFileManager.apk
  53. app/GoogleNowLauncher.apk
  54. app/GoogleSearchWidget.apk
  55. app/GoogleCalendarWidget.apk
  56. app/GoogleCamera2.apk
  57. app/GooglePlayServices.apk
  58. app/GoogleCalculator.apk
  59. app/GoogleTranslate.apk
  60. app/GoogleVoice.apk
  61. app/GooglePlayBooks.apk
  62. app/GooglePlayMovies.apk
  63. app/GooglePlayNewsstand.apk
  64. app/GooglePlayGames.apk
  65. app/GooglePlayMagazines.apk
  66. app/GooglePlayMusic.apk
  67. app/GooglePlayMusicWidget.apk
  68. app/GoogleVoiceSearch.apk
  69. app/GoogleTTS.apk
  70. app/GoogleTVRemote.apk
  71. app/GoogleWallet.apk
  72. app/GoogleEarth.apk
  73. app/GoogleCarHome.apk
  74. app/GooglePlusWidget.apk
  75. app/GoogleQuickSearchBox.apk
  76. app/GoogleVoiceSearchWidget.apk
  77. app/GoogleCameraWidget.apk
  78. app/GoogleSearchWidget.apk
  79. app/GoogleDriveWidget.apk
  80. app/GooglePlayStoreWidget.apk
  81. app/GoogleMapsWidget.apk
  82. app/GoogleCalendarWidget.apk
  83. app/GoogleNowWidget.apk
  84. app/GoogleTranslateWidget.apk
  85. app/GoogleVoiceSearchWidget.apk
  86. app/GoogleCameraWidget.apk
  87. app/GoogleSearchWidget.apk
  88. app/GoogleDriveWidget.apk
  89. app/GooglePlayStoreWidget.apk
  90. app/GoogleMapsWidget.apk
  91. app/GoogleCalendarWidget.apk
  92. app/GoogleNowWidget.apk
  93. app/GoogleTranslateWidget.apk
  94. framework/com.google.android.maps.jar
  95. framework/com.google.android.media.effects.jar
  96. framework/com.google.widevine.software.drm.jar
  97. framework/com.android.future.usb.accessory.jar
  98. framework/com.google.android.maps.xml
  99. framework/com.google.android.media.effects.xml
  100. framework/com.google.widevine.software.drm.xml
  101. framework/com.android.future.usb.accessory.xml
  102. framework/com.google.android.gms.jar
  103. framework/com.google.android.gms.xml
  104. framework/com.google.android.gsf.jar
  105. framework/com.google.android.gsf.xml
  106. framework/com.google.android.location.xml
  107. framework/com.google.android.location.jar
  108. lib/libjni_latinime.so
  109. lib/libjni_t9input.so
  110. lib/libjni_voice_search.so
  111. lib/libgoogle_recognizer_jni_l.so
  112. lib/libgoogle_speech_jni.so
  113. lib/libgoogle_recognizer_jni.so
  114. lib/libjni_latinimegoogle.so
  115. lib/libjni_keyboarddecoder.so
  116. lib/libjni_keyboard.so
  117. lib/libjni_t9input.so
  118. lib/libjni_latinime.so
  119. lib/libjni_googlepinyin.so
  120. lib/libjni_gspeech.so
  121. lib/libjni_google_speech.so
  122. lib/libjni_google_texttospeech.so
  123. lib/libjni_google_soundbackend.so
  124. lib/libjni_googlevoice.so
  125. lib/libjni_google_common.so
  126. lib/libjni_google_recognizer.so
  127. lib/libjni_google_soundbackend_internal.so
  128. lib/libjni_google_texttospeech_internal.so
  129. lib/libjni_google_tts_engine.so
  130. lib/libjni_google_tts_factory.so
  131. lib/libjni_google_tts_internal.so
  132. lib/libjni_google_tts.so
  133. lib/libjni_google_tts_voices.so
  134. lib/libjni_google_voice.so
  135. lib/libgoogle_recognizer_jni_l.so
  136. lib/libgoogle_speech_jni.so
  137. lib/libgoogle_recognizer_jni.so
  138. lib/libjni_google_common.so
  139. lib/libjni_google_recognizer.so
  140. lib/libjni_google_search.so
  141. lib/libjni_google_tts_engine.so
  142. lib/libjni_google_tts_factory.so
  143. lib/libjni_google_tts_internal.so
  144. lib/libjni_google_tts.so
  145. lib/libjni_google_tts_voices.so
  146. lib/libjni_google_voice.so
  147. lib/libjni_google_speech_recognizer.so
  148. lib/libjni_google_speech_synthesizer.so
  149. lib/libjni_google_text_to_speech.so
  150. lib/libjni_google_voice_search_engine.so
  151. lib/libjni_google_voice_search.so
  152. lib/libjni_googleapi_speech.so
  153. lib/libjni_google_recognizer_jni.so
  154. lib/libjni_google_speech_recognition_internal.so
  155. lib/libjni_google_text_to_speech_engine.so
  156. lib/libjni_google_voice_search_internal.so
  157. lib/libjni_google_tts_engine_internal.so
  158. lib/libjni_google_text_to_speech_internal.so
  159. lib/libjni_google_voice_search_engine_internal.so
  160. lib/libjni_googlevoice_internal.so
  161. lib/libjni_latinext.so
  162. lib/libjni_latinimegoogle_dictionarypack.so
  163. lib/libjni_latinimegoogle_dictionarypack_internal.so
  164. lib/libjni_latinimegoogle_dictionarypack_jni.so
  165. lib/libjni_latinimegoogle_dictionarypack_jni_internal.so
  166. lib/libjni_latinimegoogle_jni.so
  167. lib/libjni_latinimegoogle_jni_internal.so
  168. lib/libjni_latinimegoogle_native.so
  169. lib/libjni_latinimegoogle_native_internal.so
  170. lib/libjni_latinimegoogle_spellchecker.so
  171. lib/libjni_latinimegoogle_spellchecker_internal.so
  172. lib/libjni_latinimegoogle_voice_search.so
  173. lib/libjni_latinimegoogle_voice_search_internal.so
  174. lib/libjni_latinime_dictionarypack.so
  175. lib/libjni_latinime_dictionarypack_internal.so
  176. lib/libjni_latinime_dictionarypack_jni.so
  177. lib/libjni_latinime_dictionarypack_jni_internal.so
  178. lib/libjni_latinime_jni.so
  179. lib/libjni_latinime_jni_internal.so
  180. lib/libjni_latinime_native.so
  181. lib/libjni_latinime_native_internal.so
  182. lib/libjni_latinime_spellchecker.so
  183. lib/libjni_latinime_spellchecker_internal.so
  184. lib/libjni_latinime_voice_search.so
  185. lib/libjni_latinime_voice_search_internal.so
  186. lib/libjni_t9input_google.so
  187. lib/libjni_t9input_google_internal.so
  188. lib/libjni_t9input_google_jni.so
  189. lib/libjni_t9input_google_jni_internal.so
  190. lib/libjni_t9input_google_native.so
  191. lib/libjni_t9input_google_native_internal.so
  192. lib/libjni_t9input_google_spellchecker.so
  193. lib/libjni_t9input_google_spellchecker_internal.so
  194. lib/libjni_t9input_google_voice_search.so
  195. lib/libjni_t9input_google_voice_search_internal.so
  196. lib/libjni_t9input_jni.so
  197. lib/libjni_t9input_jni_internal.so
  198. lib/libjni_t9input_native.so
  199. lib/libjni_t9input_native_internal.so
  200. lib/libjni_t9input_spellchecker.so

Author

1 Response

  1. Cristian says:

    very useful and clear info. thanks.
    Redmi sweet, ArrowOS 13.

Leave a Reply

Your email address will not be published. Required fields are marked *