1. 程式人生 > >Android 原始碼 中寫後臺應用

Android 原始碼 中寫後臺應用

在Android 開機啟動的時候會有一些後臺程序跑起來,當然我麼也可以定製

在vendor 的目錄中放置 一個Android.mk檔案還有一個server.cpp,標頭檔案配置

makefile配置

# LOCAL_PATH變數。它用於在開發樹中查詢原始檔 my-dir 編譯系統提供
LOCAL_PATH := $(call my-dir) 

# executable bin  
#清除所有local變數除了LOCAL_PATH
include $(CLEAR_VARS)  
#設定模組的名稱
LOCAL_MODULE :=server
#基於arm處理器的arm指令
LOCAL_ARM_MODE := arm
LOCAL_PRELINK_MODULE := false
#包含的標頭檔案
LOCAL_C_INCLUDES := \    
	$(LOCAL_PATH) \
	$(LOCAL_PATH)/server/include \
    $(TOP)/frameworks/xx/include 
#靜態 stl 庫
LOCAL_STATIC_LIBRARIES := libgnustl_static
#靜態 動態庫  android 的
LOCAL_SHARED_LIBRARIES += libcutils \
                          libutils 
h264fifo
# 單獨進入模組mm 可以編譯,但是make image 不會進入image 如果想編譯進去在device.mk 中新增 
# PRODUCT_PACKAGES += server

#LOCAL_MODULE_TAGS :=user eng tests optional
#user: 指該模組只在user版本下才編譯
#eng: 指該模組只在eng版本下才編譯
#tests: 指該模組只在tests版本下才編譯
#optional:指該模組在所有版本下都編譯
LOCAL_MODULE_TAGS := optional 
#64位安卓系統中使用32位SO庫
LOCAL_32_BIT_ONLY := true
LOCAL_CLANG := true
#編譯的原始碼
LOCAL_SRC_FILES := \
	$(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/server/*.c*))
# 表示編譯成可執行檔案  燒錄在目錄system/bin中
include $(BUILD_EXECUTABLE)


# 自己製作一個so檔案配置
include $(CLEAR_VARS)

LOCAL_MODULE := libserver_use

LOCAL_C_INCLUDES := \
	$(LOCAL_PATH)/server \

LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES += libcutils \
                          libutils

LOCAL_SRC_FILES := \
	$(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/server/*.c*))
#表示編譯 成一個so 
include $(BUILD_SHARED_LIBRARY)

以上就是配置

server.cpp 函式寫

int main(int argc, char *argv[]) {
	//  寫普通cpp函式 單獨的linux 應用
}


##設定成開機啟動
在init.rc 中配置

# 因為不是重要的程序 設定延遲啟動 設定使用者組許可權 disable 表示不啟動,延時啟動 oneshot 表示馬上啟動
service rtsp_server /system/bin/server
    class late_start
    user root
    group root
    disabled

如果不設定上面的內容,和linux 一樣adb shell進入 android 手動啟動應用程序 ,android 所有的後臺程序後是這麼設定的