2013-03-30 32 views
10

Tôi đang xây dựng AOSP 4.2 Jelly Bean. Mọi thứ đều ổn khi tôi xây dựng cấu hình mặc định full-eng và chạy trên trình mô phỏng.AOSP xây dựng trên thiết bị tùy chỉnh

Tôi cần tạo thiết bị tùy chỉnh và chạy thiết bị (trên emulator - để thử nghiệm nếu thiết bị thực sự hoạt động và trên thiết bị thực). Khi tôi tạo thiết bị tùy chỉnh dựa trên full_base.mk tệp và chạy trên emulator - emulator chỉ bị treo trên màn hình đầu tiên với văn bản ANDROID và sẽ không tải chút nào. Tôi có system.img, userdata.img, ramdisk.img sau khi xây dựng trong thư mục. Đây có phải là tất cả những gì tôi cần để xây dựng AOSP tùy chỉnh và chạy nó trên thiết bị? Tôi có thể chạy xây dựng trên trình mô phỏng hoặc chỉ trên thiết bị thực?

Tôi có nên bổ sung điều gì đó để xây dựng AOSP cho thiết bị thực: hạt nhân, trình điều khiển thiết bị, v.v. không?

thư mục thiết bị tùy chỉnh tập tin (thiết bị/my_company/my_product):

Android.mk

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

ifneq ($(filter my_product,$(TARGET_DEVICE)),) 
include $(call all-makefiles-under,$(LOCAL_PATH)) 
endif 

AndroidProducts.mk

PRODUCT_MAKEFILES := \ 
    $(LOCAL_DIR)/full_myproduct.mk 

BoardConfig.mk

TARGET_NO_BOOTLOADER := true 
TARGET_NO_KERNEL := true 

TARGET_ARCH := arm 

TARGET_ARCH_VARIANT := armv7-a 
TARGET_CPU_VARIANT := generic 
TARGET_CPU_ABI := armeabi-v7a 
TARGET_CPU_ABI2 := armeabi 

HAVE_HTC_AUDIO_DRIVER := true 
BOARD_USES_GENERIC_AUDIO := true 

# no hardware camera 
USE_CAMERA_STUB := true 

# Enable dex-preoptimization to speed up the first boot sequence 
# of an SDK AVD. Note that this operation only works on Linux for now 
ifeq ($(HOST_OS),linux) 
    ifeq ($(WITH_DEXPREOPT),) 
    WITH_DEXPREOPT := true 
    endif 
endif 

# Build OpenGLES emulation guest and host libraries 
BUILD_EMULATOR_OPENGL := true 

# Build and enable the OpenGL ES View renderer. When running on the emulator, 
# the GLES renderer disables itself if host GL acceleration isn't available. 
USE_OPENGL_RENDERER := true 

full_myproduct.mk

$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) 
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk) 

#DEVICE_PACKAGE_OVERLAYS := 
#PRODUCT_PACKAGES += 
#PRODUCT_COPY_FILES += 

PRODUCT_NAME := full_myproduct 
PRODUCT_DEVICE := myproduct 
PRODUCT_MODEL := Customized Android 
PRODUCT_BRAND := Android 

vendorsetup.sh

add_lunch_combo full_myproduct-userdebug 
+0

mọi thứ trong logcat? Thông thường có một số dịch vụ hệ thống đã chết trong trường hợp này. – StarPinkER

+0

Bạn nói rằng bạn đang xây dựng cho thiết bị http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html Bạn có thể vui lòng cho biết nơi bạn tìm thấy trình điều khiển cho thiết bị này không? – Rom098

+0

trình điều khiển được cung cấp bởi nhà cung cấp. Nếu bạn tạo ROM tùy chỉnh cho thiết bị cụ thể (không phải google. Trình điều khiển thiết bị google có sẵn miễn phí), sau đó bạn liên hệ với nhà cung cấp và yêu cầu trình điều khiển thiết bị cụ thể. –

Trả lời

12

Nó có vẻ như bạn có một tổ chức tốt trên hệ thống xây dựng AOSP, đặc biệt là về cách thêm mới thiết bị.

full-eng chỉ nhắm mục tiêu trình mô phỏng. Thông thường, bạn tạo tùy chỉnh .img cho thiết bị được đề cập, vì trình điều khiển phần cứng đóng vai trò lớn trong việc thiết bị có hoạt động hay không.

Ví dụ: nếu bạn có grouper hoặc maguro, bạn sẽ kết thúc việc tạo cho thiết bị đó thay vì full-eng. lunch nên liệt kê các thiết bị bổ sung khi bạn thêm chúng vào các cây device/vendor/ của mình. Google cung cấp các tệp cần thiết để xây dựng cho dòng thiết bị Nexus trên [trang web] của họ [https://developers.google.com/android/nexus/drivers].

Thiết bị tùy chỉnh mà bạn đang xây dựng là gì? Nếu thiết bị của bạn được bán thương mại, rất có thể ai đó trên XDA đang cố gắng chuyển AOSP và bạn bè (CM, AOKP, v.v.) sang thiết bị của bạn.

Ngay cả khi thiết bị của bạn không có trên XDA, rất có thể thiết bị của bạn có phần cứng phổ biến với một loạt các thiết bị khác mà bạn có thể tìm thấy trên AOSP. Tại thời điểm đó, bạn sẽ phải đi lấy các bit cụ thể của trình điều khiển bằng cách chọn các trình điều khiển, chẳng hạn như chip wifi, thiết bị âm thanh, v.v.

Tôi không có lớp sơn lót tốt để làm nổi bật đầu, nhưng http://wiki.cyanogenmod.org/w/Main_Page sẽ khá hữu ích cho bạn.Wiki này đã được cải thiện rất nhiều kể từ khi tạo ra nó và bây giờ có một thông tin hữu ích.

+0

Tôi phải tạo cho thiết bị http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html. Nếu tôi hiểu bạn đúng, để xây dựng tùy chỉnh không đủ tùy chọn tối thiểu do tôi xác định, nhưng tôi cũng cần chỉ định và cung cấp các trình điều khiển trong thư mục device/my_company/my_product? Các trình điều khiển –

+0

sẽ nằm trong thư mục 'vendor/my_company/my_product', nhưng có. hãy xem làm thế nào CyanogenMod hiện nó: https://github.com/TheMuppets/proprietary_vendor_samsung –

1

Bạn đang thiếu một số trình điều khiển của nhà cung cấp. goto: https://developers.google.com/android/nexus/drivers

tải xuống trình điều khiển thích hợp cho thiết bị chính xác. đặt tệp * .sh vào thư mục hàng đầu của bạn. chạy từng tệp shell và chấp nhận các điều khoản.

sau đó biên dịch lại mã!

+0

Tôi nghĩ rằng đây là giải pháp. Tôi xây dựng AOSP với Android 5.1.1, nhưng có vấn đề với OpenGL (mà tôi tìm thấy trong logcat). – GensaGames

Các vấn đề liên quan