Android 原始碼 中寫後臺應用
阿新 • • 發佈:2018-12-20
在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 所有的後臺程序後是這麼設定的