?
Android應(yīng)用程式編譯成系統(tǒng)程序簡(jiǎn)介
?
簡(jiǎn)介:在android操作系統(tǒng)中,有一些應(yīng)用程序,如打電話,系統(tǒng)設(shè)置、鬧鐘等等在我們購(gòu)買手機(jī)的時(shí)候就已經(jīng)有了,如果我們想寫(xiě)一個(gè)應(yīng)用程序到系統(tǒng)中,而又不給用戶刪除。該如何做?本文將提供一個(gè)簡(jiǎn)單的例子,看看android系統(tǒng)里是如何把應(yīng)用程序?qū)懭胂到y(tǒng)中去的。
?
1、開(kāi)發(fā)環(huán)境
?? ? 操作系統(tǒng):Ubuntu xx
?? ? 開(kāi)發(fā)工具:Eclipse
?? ? Android SDK:android 2.2
2、開(kāi)發(fā)環(huán)境搭建過(guò)程
?? ?要想把a(bǔ)ndroid應(yīng)用程序?qū)懭胂到y(tǒng)中,首先要搭建一個(gè)android文件系統(tǒng)的開(kāi)發(fā)環(huán)境。由于網(wǎng)上很多搭建環(huán)境的例子,這里只羅列要點(diǎn)二具體介紹。
?? ?(1)、下載Android文件系統(tǒng)源碼
?? ?http://source.android.com/source/download.html
?? ?(2)、Eclipse源碼開(kāi)發(fā)環(huán)境
?? ?http://source.android.com/source/using-eclipse.html
?? ?(3)、Eclipse開(kāi)發(fā)App環(huán)境
?? ?這個(gè)可以參考android sdk 的文檔或者網(wǎng)上查找資料
?
?
3、以Helloworld為例
?? ? (1)、建立一個(gè)App
在Eclipse-App開(kāi)發(fā)環(huán)境中新建一個(gè)Android Project命名為Helloworld,然后在模擬器上調(diào)試運(yùn)行。將會(huì)見(jiàn)到下看到Helloworld 程序運(yùn)行,并在屏幕上顯示Hello world ,Main!這一步我們不需要寫(xiě)任何的代碼。
?? ? (2)、移植App到Android
?? ? ? 在linux系統(tǒng)中進(jìn)入Android的源碼目錄,來(lái)到 ./package/apps/Settings/ ?目錄,把這里的Android.mk復(fù)制到剛才那個(gè)HelloWorld App 的 跟目錄下,并修改Android.mk文件
?
Android.mk
?
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := Helloworld #與工程名字相同
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
?
?
?? ?(3)、修改/bulid/target/product/generic.mk 把工程編譯到系統(tǒng)中
?
?
generic.mk
?
#
# Copyright (C) 2007 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# ? ? ?http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
?
# This is a generic product that isn't specialized for a specific device.
# It includes the base Android platform.
?
PRODUCT_PACKAGES := \
?? ?AccountAndSyncSettings \
?? ?CarHome \
?? ?DeskClock \
?? ?AlarmProvider \
?? ?Bluetooth \
?? ?Calculator \
?? ?Calendar \
?? ?Camera \
?? ?CertInstaller \
?? ?DrmProvider \
?? ?Email \
?? ?Gallery3D \
?? ?LatinIME \
?? ?Launcher2 \
?? ?Mms \
?? ?Music \
?? ?Provision \
?? ?Protips \
?? ?QuickSearchBox \
?? ?Settings \
?? ?Sync \
?? ?Updater \
?? ?CalendarProvider \
?? ?SyncProvider? \
?? ??Helloworld
?
$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
?
# Overrides
PRODUCT_BRAND := generic
PRODUCT_DEVICE := generic
PRODUCT_NAME := generic
?
?? ?(4)、將Android工程拷貝到 ./package/apps/ 目錄下
?
此時(shí),系統(tǒng)的代碼環(huán)境已經(jīng)構(gòu)建好。
?
?? ?(5)、編譯Android SDK?
?? ? 在Android源碼根目錄下執(zhí)行: #make sdk
?
?? ? 等待......
?
?? ?編譯完成后
?
?? ?來(lái)到/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools/下,執(zhí)行 :
?
?? ??./emulator -avd ANDROID2
?
?? ?啟動(dòng)模擬器,就會(huì)開(kāi)到Helloworld會(huì)在Android系統(tǒng)中。
?
?? ?通過(guò) 設(shè)置->應(yīng)用程序->管理應(yīng)用程序->全部-選擇->Helloworld ?(如下圖示我們可以看到該程序?yàn)橐粋€(gè)系統(tǒng) 默認(rèn)啟動(dòng) 的程序,并且用戶不可以將其 卸載 )
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
