2013-03-30 12 views
10

Buduję AOSP 4.2 Jelly Bean. Wszystko jest w porządku, gdy buduję domyślną konfigurację full-eng i uruchamiam ją na emulatorze.AOSP zbudował na niestandardowym urządzeniu

Muszę zbudować niestandardowe urządzenie i uruchomić je (na emulator - do testowania, czy naprawdę działa, i na prawdziwym urządzeniu). Po utworzeniu niestandardowego urządzenia opartego na pliku full_base.mk i uruchomieniu go na emulator - emulator po prostu rozłącza się na pierwszym ekranie z tekstem ANDROID i nie ładuje się wcale. Mam po system.img, userdata.img, ramdisk.img po zbudowaniu w katalogu. Czy to wszystko, czego potrzebuję do stworzenia niestandardowego AOSP i uruchomienia go na urządzeniu? Czy mogę uruchomić moją kompilację na emulatorze lub tylko na prawdziwym urządzeniu?

Czy powinienem mieć coś więcej do budowy AOSP dla prawdziwego urządzenia: jądra, sterowniki urządzeń itp.?

Pliki folderów niestandardowych urządzenie (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

wszystko w logcat? Zwykle w tym przypadku zginęła jakaś usługa systemowa. – StarPinkER

+0

Powiedziałeś, że budujesz na urządzeniu http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html Czy możesz powiedzieć, gdzie znalazłeś sterowniki tego urządzenia? – Rom098

+0

sterowniki dostarczane są przez sprzedawcę. Jeśli utworzysz niestandardową pamięć ROM dla określonego urządzenia (a nie google. Sterowniki urządzeń Google są dostępne za darmo), skontaktuj się z dostawcą i poproś o sterowniki urządzeń. –

Odpowiedz

12

Wydaje się, że masz dobrą pozycję na AOSP systemu budowania, szczególnie w jaki sposób dodać nowy pomysłowość.

full-eng dotyczy tylko emulatora. Zwykle budujesz niestandardowe .img dla danego urządzenia, ponieważ sterowniki sprzętowe odgrywają dużą rolę w tym, czy urządzenie działa, czy nie.

Na przykład, jeśli masz model grouper lub maguro, możesz utworzyć budynek dla tego urządzenia zamiast full-eng. lunch powinien wyświetlić listę dodatkowych urządzeń podczas dodawania ich do drzewek device/ i vendor/. Google udostępnia pliki niezbędne do zbudowania linii urządzeń Nexus na ich [stronie] [https://developers.google.com/android/nexus/drivers].

Co to jest niestandardowe urządzenie, które budujesz? Jeśli twoje urządzenie jest sprzedawane na rynku, istnieje szansa, że ​​ktoś na XDA próbuje przenieść AOSP i znajomych (CM, AOKP, itp.) Na twoje urządzenie.

Nawet jeśli twoje urządzenie nie jest w XDA, istnieje szansa, że ​​ma ono wspólny sprzęt z wieloma innymi urządzeniami, które można znaleźć w AOSP. W tym momencie będziesz musiał wybrać odpowiednie dla kierowcy fragmenty kodu, takie jak chipsety Wi-Fi, urządzenia dźwiękowe, itp.

Nie mam dobrego podkładu do budowania z góry mojej głowy, ale http://wiki.cyanogenmod.org/w/Main_Page powinien być dla ciebie bardzo pomocny.To wiki znacznie się polepszyło od czasu jego powstania i ma teraz mnóstwo użytecznych informacji.

+0

Muszę zbudować dla urządzenia http://www.alibaba.com/product-gs/721860794/7_capacitive_screen_multi_touch_tablet.html. Jeśli dobrze cię rozumiem, w przypadku niestandardowej kompilacji nie mam wystarczająco zdefiniowanych minimalnych preferencji, ale muszę również określić i dostarczyć sterowniki w folderze device/my_company/my_product? Sterowniki –

+0

znajdowałyby się w folderze 'vendor/my_company/my_product', ale tak. spójrz, jak robi to CyanogenMod: https://github.com/TheMuppets/proprietary_vendor_samsung –

1

Brakuje niektórych sterowników sprzedawcy. Goto: https://developers.google.com/android/nexus/drivers

pobierz odpowiednie sterowniki dla tego urządzenia. umieść plik * .sh w twoim katalogu aosp top. uruchom każdy plik powłoki i zaakceptuj warunki.

następnie przekompiluj kod!

+0

Myślę, że to jest rozwiązanie. Buduję AOSP z Androidem 5.1.1, ale jest problem z OpenGL (który znalazłem w logcat). – GensaGames

Powiązane problemy