2012-07-03 21 views
21

Tôi muốn làm cho hệ thống nhúng của riêng tôi được xây dựng trên Android (ARM) chỉ sử dụng các thiết bị được phân phối với Android nhưng không có trình khởi chạy của chúng.Làm cách nào để tạo một hệ điều hành Android được nhúng chỉ với một ứng dụng?

HOẶC

Tôi muốn bắt đầu Android với ứng dụng của tôi ra mắt vào đầu và từ chối đóng nó lại và tắt máy Android từ ứng dụng của tôi.

Trả lời

23

Về cơ bản, bạn đang cố gắng tạo bản dựng AOSP tùy chỉnh, trong đó "Trang chủ" là ứng dụng của bạn. Nếu bạn xem xét /gói/ứng dụng/Trình khởi chạy2, bạn sẽ tìm thấy mã cho Màn hình chính mặc định.

Nếu bạn nhìn vào AndroidManifest.xml tập tin trong đó, bạn sẽ thấy một cái gì đó như thế này:

 <activity 
     android:name="com.android.launcher2.Launcher" 
     android:launchMode="singleTask" 
     android:clearTaskOnLaunch="true" 
     android:stateNotNeeded="true" 
     android:theme="@style/Theme" 
     android:screenOrientation="nosensor" 
     android:windowSoftInputMode="stateUnspecified|adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.MONKEY"/> 
     </intent-filter> 
    </activity> 

essentialy, điều này nói rằng Hoạt động này phản ứng với

android .intent.category.HOME intent.

Khi hệ thống khởi động xong (ActivityManager cụ thể hơn), gửi ý định đó. Vì vậy, nếu bạn muốn ứng dụng của mình bắt đầu thay vì Trình khởi chạy, chỉ cần tạo cho mình một ứng dụng có bộ lọc ý định tương tự và xóa Trình khởi chạy mặc định2 (đưa nó ra khỏi danh sách trong xây dựng/mục tiêu/sản phẩm/generic.mk và đặt của bạn thay thế). Ngoài ra hãy chắc chắn rằng các tập tin có liên quan .mk có một cái gì đó như thế này:

LOCAL_OVERRIDES_PACKAGES := Home 

Vì vậy, miễn là ứng dụng của bạn không cung cấp một cách cho người sử dụng để khởi động các ứng dụng khác sử dụng các biểu tượng (như Launcher không), không có ứng dụng khác Sẽ được bắt đầu; trừ khi tất nhiên một cái gì đó gửi một mục đích Khởi động hoạt động từ một số đường dẫn khác với đường dẫn được kiểm soát bởi ứng dụng của bạn - nói bằng cách sử dụng lệnh "am" trên vỏ Android của mục tiêu.

+0

câu trả lời tuyệt vời !!! Tôi nhận được nhiều hơn từ đây hơn là một doc toàn bộ đọc doc –

+0

là 'Home' trong' LOCAL_OVERRIDES_PACKAGES: = Home' ứng dụng bạn đang thay thế Launcher2 bằng? –

+0

Tôi nghĩ 'Home' là tên mô-đun của trình khởi chạy hiện tại được sử dụng trong AOSP. Có thể là phiên bản Android cũ được sử dụng cho mô-đun Home cho điều đó, ngày nay nó là Launcher2. Vì vậy, 'LOCAL_OVERRIDES_PACKAGES: = Launcher3' nên được sử dụng hoặc thậm chí' LOCAL_OVERRIDES_PACKAGES: = Launcher2 Launcher3'. CyanogenMod 12 sử dụng trình khởi chạy Trebuchet, vì vậy đối với bản dựng CM, tôi sẽ sử dụng 'LOCAL_OVERRIDES_PACKAGES: = Launcher3 Trebuchet' – Mixaz

3

Bằng âm thanh của câu hỏi mà bạn muốn tạo bản dựng Android OS tùy chỉnh của riêng mình. Điều đó sẽ liên quan nhiều hơn việc phát triển các ứng dụng Android thông thường và do đó bạn sẽ phải thực hiện rất nhiều việc đọc, đặc biệt là mã nguồn của hệ điều hành Android.

Tôi khuyên bạn nên bắt đầu here at the Android Open Source Project.

3

Nhìn vào nguồn của hệ thống khôi phục; đó là một môi trường khởi động thay thế rất nhiều, đơn giản hơn nhiều. Có một số phiên bản bên thứ 3 với hỗ trợ màn hình cảm ứng, quá.

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