2013-03-30 18 views
10

Ich baue AOSP 4.2 Jelly Bean. Alles ist in Ordnung, wenn ich Standardkonfiguration full-eng baue und es auf dem Emulator starte.AOSP Build auf benutzerdefinierte Gerät

Ich muss ein benutzerdefiniertes Gerät erstellen und es (auf emulator - zum Testen, wenn es wirklich funktioniert, und auf einem echten Gerät). Wenn ich benutzerdefinierte Gerät basierend auf full_base.mk Datei erstellen, und es auf emulator - emulator läuft nur auf dem ersten Bildschirm mit ANDROID Text auflegt, und wird überhaupt nicht geladen. Ich habe system.img, userdata.img, ramdisk.img nach dem Erstellen in out-Verzeichnis. Ist das alles, was ich brauche, um benutzerdefinierte AOSP zu erstellen und auf dem Gerät auszuführen? Kann ich meinen Build auf einem Emulator oder nur auf einem echten Gerät ausführen?

Sollte ich etwas Zusätzliches für den Aufbau von AOSP für echtes Gerät haben: Kernel, Gerätetreiber, etc.?

benutzerdefinierte Geräte Ordner-Dateien (device/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

alles in logcat? Gewöhnlich gibt es einige System-Service in diesem Fall gestorben. – StarPinkER

+0

Du hast gesagt, dass du für das Gerät gebaut hast http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html Könntest du bitte sagen, wo hast du Treiber für dieses Gerät gefunden? – Rom098

+0

Treiber werden vom Hersteller zur Verfügung gestellt. Wenn Sie ein benutzerdefiniertes ROM für ein bestimmtes Gerät erstellen (nicht Google. Google Gerätetreiber sind kostenlos verfügbar), wenden Sie sich an den Hersteller und fordern Sie gerätespezifische Treiber an. –

Antwort

12

Es scheint, wie Sie einen guten Halt auf dem AOSP Build-System, vor allem auf, wie neue hinzufügen Geräte.

full-eng zielt nur auf den Emulator. Normalerweise erstellen Sie benutzerdefinierte .img für das fragliche Gerät, da die Hardware-Treiber eine große Rolle spielen, ob das Gerät funktioniert oder nicht.

Zum Beispiel, wenn Sie eine grouper oder eine haben, würden Sie am Ende für dieses Gerät anstelle von full-eng bauen. lunch sollte die zusätzlichen Geräte auflisten, wenn Sie sie zu Ihren device/ und vendor/ Bäumen hinzufügen. Google stellt auf seiner [Website] [https://developers.google.com/android/nexus/drivers] die Dateien zur Verfügung, die für die Nexus-Produktlinie erforderlich sind.

Für was ist das benutzerdefinierte Gerät, für das Sie erstellen? Wenn Ihr Gerät kommerziell verkauft wird, besteht die Gefahr, dass jemand auf XDA versucht, AOSP und Freunde (CM, AOKP usw.) auf Ihr Gerät zu portieren.

Auch wenn Ihr Gerät nicht auf XDA ist, hat es wahrscheinlich Hardware, die mit einer Reihe von anderen Geräten, die Sie auf AOSP finden können, üblich ist. An diesem Punkt müssten Sie Cherry Pick Treiber-spezifischen Bits des Codes, wie Wifi-Chipsets, Sound-Geräte, etc.

Ich habe keine gute Grundierung für den Aufbau von der Spitze meines Kopfes, aber http://wiki.cyanogenmod.org/w/Main_Page sollte ziemlich hilfreich für Sie sein.Dieses Wiki hat sich seit seiner Erstellung sehr verbessert und verfügt nun über eine Fülle nützlicher Informationen.

+0

Ich muss für Gerät http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html bauen. Wenn ich Sie richtig verstehe, sind für benutzerdefinierte Build nicht genug minimale Einstellungen definiert, aber ich muss auch Treiber im Ordner device/my_company/my_product angeben und bereitstellen. –

+0

Treiber befinden sich im 'vendor/my_company/my_product'-Ordner, aber ja. Sehen Sie sich an, wie CyanogenMod es tut: https://github.com/TheMuppets/proprietary_vendor_samsung –

1

Sie fehlen einige Treiber des Herstellers. goto: https://developers.google.com/android/nexus/drivers

herunterladen die entsprechenden Treiber für das genaue Gerät. Lege die * .sh-Datei in dein Aovers-Top-Verzeichnis. führen Sie jede Shell-Datei aus und akzeptieren Sie die Bedingungen.

dann den Code neu kompilieren!

+0

Ich denke, das ist die Lösung. Ich baue AOSP mit Android 5.1.1, aber es gibt ein Problem mit OpenGL (das ich in logcat gefunden habe). – GensaGames