freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

從cm刷機過程和原理分析android系統(tǒng)結(jié)構(gòu)-資料下載頁

2025-06-25 23:53本頁面
  

【正文】 的代碼片...... Inherit device configuration $(call inheritproduct, device/oppo/find5/) Device identifier. This must e after all inclusions PRODUCT_DEVICE := find5 PRODUCT_NAME := cm_find5 PRODUCT_BRAND := Oppo PRODUCT_MODEL := Find 5 PRODUCT_MANUFACTURER := Oppo ...... 除定了一些設(shè)備相關(guān)的變量之外,它還會加載另外一個文件device/oppo/find5/,后者的部分內(nèi)容如下所示:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片 Inherit from hardwarespecific part of the product configuration $(call inheritproduct, device/oppo/find5/) $(call inheritproductifexists, vendor/oppo/find5/) 文件device/oppo/find5/。 在文件device/oppo/find5/,我們就可以看到PRODUCT_COPY_FILES和PRODUCT_PACKAGES的定義:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片PRODUCT_PACKAGES := \ PRODUCT_PACKAGES += \ charger_res_images \ charger Vold and Storage PRODUCT_COPY_FILES += \ device/oppo/find5/configs/:system/etc/ Live Wallpapers PRODUCT_PACKAGES += \ LiveWallpapers \ LiveWallpapersPicker \ VisualizationWallpapers \ librs_jni ...... 而文件vendor/oppo/find5/,如下所示:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片...... $(call inheritproduct, vendor/oppo/find5/) ...... 回憶前面的第7步,文件文件vendor/oppo/find5/,里面通過變量PRODUCT_COPY_FILES告訴編譯系統(tǒng)將從設(shè)備上獲得的私有文件打包到要制作的ROM去。 以上就是Product級別的配置信息的獲取過程,接下來我們再看Device、Board和Architecture級別的配置信息的獲取過程。 函數(shù)check_product會通過另外一個函數(shù)get_build_var來加載build/core/,如下所示:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片...... board_config_mk := \ $(strip $(wildcard \ $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/ \ device/*/$(TARGET_DEVICE)/ \ vendor/*/$(TARGET_DEVICE)/ \ )) ...... 上述Makefile腳本片段會在build/target/board、device/*、vendor/*目錄中尋找一個名稱為$(TARGET_DEVICE)的子目錄,來獲得Device、Board和Architecture級別的配置信息。 變量TARGET_DEVICE指向的便是目標設(shè)備的名稱。在我們這個場景中,它的值就等于find5,因此,最終獲得的Device、Board和Architecture級別的配置信息就是來自于device/oppo/find5/,它的部分內(nèi)容如下所示:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片TARGET_CPU_ABI := armeabiv7a TARGET_CPU_ABI2 := armeabi ...... TARGET_ARCH := arm ...... Bluetooth BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_QCOM := true BLUETOOTH_HCI_USE_MCT := true ...... TARGET_BOARD_PLATFORM := msm8960 ...... Wifi BOARD_HAS_QCOM_WLAN := true BOARD_WLAN_DEVICE := qcw ...... Display TARGET_QCOM_DISPLAY_VARIANT := caf USE_OPENGL_RENDERER := true ...... GPS BOARD_HAVE_NEW_QC_GPS := true ...... Camera COMMON_GLOBAL_CFLAGS += DDISABLE_HW_ID_MATCH_CHECK DQCOM_BSP_CAMERA_ABI_HACK DNEW_ION_API ...... Audio BOARD_USES_ALSA_AUDIO:= true TARGET_QCOM_AUDIO_VARIANT := caf TARGET_USES_QCOM_MM_AUDIO := true TARGET_USES_QCOM_COMPRESSED_AUDIO := true BOARD_AUDIO_CAF_LEGACY_INPUT_BUFFERSIZE := true ...... 從這里就可以看到各種Device、Board和Architecture級別的配置信息。例如,CPU體系架構(gòu)由TARGET_ARCH、TARGET_CPU_ABI和TARGET_CPU_ABI2來描述。芯片類型由TARGET_BOARD_PLATFORM來描述,而設(shè)備信息的描述則包括Bluetooth、Wifi、Display、GPS、Camera和Audio等。 ?以下我們就以TARGET_BOARD_PLATFORM為例,說明這些配置信息在編譯的過程中是如何使用的。在Android源碼中,hardware目錄包含各種芯片相關(guān)的模塊源碼。在這些模塊的編譯腳本中,就會根據(jù)TARGET_BOARD_PLATFORM的值來為指定的芯片編譯出正確的模塊來。 例如,假設(shè)我們使用的是高通芯片,在它的Camera HAL2模塊源碼目錄hardware/q/camera/QCamera/HAL2/:[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片...... LOCAL_CFLAGS += DCAMERA_ION_HEAP_ID=ION_CP_MM_HEAP_ID 8660=SMI, Rest=EBI LOCAL_CFLAGS += DCAMERA_ZSL_ION_HEAP_ID=ION_CP_MM_HEAP_ID LOCAL_CFLAGS+= DHW_ENCODE LOCAL_CFLAGS+= DUSE_NEON_CONVERSION ifeq ($(TARGET_BOARD_PLATFORM),msm8960) LOCAL_CFLAGS += DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_MM_HEAP LOCAL_CFLAGS += DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_IOMMU_HEAP LOCAL_CFLAGS += DCAMERA_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID LOCAL_CFLAGS += DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_IOMMU_HEAP_ID LOCAL_CFLAGS += DCAMERA_GRALLOC_CACHING_ID=0 else ifeq ($(TARGET_BOARD_PLATFORM),msm8660) LOCAL_CFLAGS += DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP LOCAL_CFLAGS += DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_CAMERA_HEAP Don39。t Care LOCAL_CFLAGS += DCAMERA_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID EBI LOCAL_CFLAGS += DCAMERA_ZSL_ION_FALLBACK_HEAP_ID=ION_CAMERA_HEAP_ID LOCAL_CFLAGS += DCAMERA_GRALLOC_CACHING_ID=0 else LOCAL_CFLAGS += DCAMERA_GRALLOC_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP LOCAL_CFLAGS += DCAMERA_GRALLOC_FALLBACK_HEAP_ID=GRALLOC_USAGE_PRIVATE_ADSP_HEAP Don39。t Care LOCAL_CFLAGS += DCAMERA_GRALLOC_CACHING_ID=GRALLOC_USAGE_PRIVATE_UNCACHED uncached endif ...... 上述Makefile腳本片段會根據(jù)TARGET_BOARD_PLATFORM的值不同而設(shè)置不同的LOCAL_CFLAGS值,以便可以為目標設(shè)備編譯出正確的HAL模塊來。 這一步執(zhí)行完成之后,也就是編譯完成之后,我們就可以在out/target/product/find5目錄中看到兩個文件:。其中。有了這兩個文件之后,我們就可以參照前面的介紹,將它們刷入我們的OPPO Find 5手機上去了。當刷入完成,并且可以正常運行之后,現(xiàn)在我們的手機上面運行的Recovery和ROM都是我們自己親手打造的了! 至此,我們就介紹完成CM的刷機過程和原理了,是不是覺得自己親手去編譯一個ROM是一件很容易的事呢?其實不然。我們上面編譯的ROM之所以這么輕松,是因為CM已經(jīng)為我們做了很多的工作,那就是已經(jīng)在CM源碼服務(wù)器上準備好了所有設(shè)備相關(guān)的源碼,也就是我們下載回來之后存放在device目錄下的源碼。如果我們手頭上有一部CM官方不支持的手機,那么CM源碼服務(wù)器上是沒有對應(yīng)的設(shè)備源碼存在的,這時候我們就需要自己去開發(fā)對應(yīng)的設(shè)備源碼了。這是一個艱苦的過程,需要不停的調(diào)試、調(diào)試、再調(diào)試,也許要花上幾周,甚至一個月來完成這個工作。當然,這個過程也是有一些經(jīng)驗和技巧可以參考的,具體可以參考CM文檔:。這里就不再詳述。 最后,本文之所以選擇CM這個第三方ROM和源碼來講解,是因為CM官方提供了很全面的資料供我們?nèi)W習如何基于AOSP源碼來制作ROM,這樣可以使我們少走很多彎路!
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1