honeycomb新编写应用编译成系统应用

honeycomb新编写应用编译成系统应用


前景:在android操作系统中,如果想给系统定制自己的应用程序,又不想给用户删除(像信息,电话这样的应用程序),你就需要它了。
1、开发环境
     操作系统:Ubuntu xx
     开发工具:Eclipse
     源码: Android honeycomb3.1(3.0)

2、以Helloworld为例
     (1)、建立一个App
在Eclipse-App开发环境中新建一个Android Project命名为Helloworld,然后在模拟器上调试运行。将会见到下看到Helloworld 程序运行,并在屏幕上显示Hello world ,Main!这一步我们不需要写任何的代码。
     (2)、移植App到Android
       在linux系统中进入Android的源码目录,来到./package/apps/Settings/ 目录,把这里的Android.mk复制到刚才那个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 := Settings(换成HelloWorld,也可以自己取名,主要与后面的generic_no_telephony.mk修改一致即可)
LOCAL_CERTIFICATE := platform

LOCAL_PROGUARD_FLAG_FILES := proguard.flags //去掉

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

3、修改/bulid/target/product/generic_no_telephony.mk 把工程编译到系统中(android2.2修改在/bulid/target/product/generic.mk)

generic_no_telephony.mk

PRODUCT_POLICY := android.policy_phone

PRODUCT_PACKAGES := \
    AccountAndSyncSettings \
    DeskClock \
    AlarmProvider \
    Bluetooth \
    Calculator \
    Calendar \
    Camera \
    CertInstaller \
    DrmProvider \
    Email \
    Gallery3D \
    LatinIME \
    Launcher2 \
    Music \
    Provision \
    Phone \
    QuickSearchBox \
    Settings \
    Sync \
    SystemUI \
    Updater \
    CalendarProvider \
    SyncProvider \
    CryptKeeper \
    HelloWorld

PRODUCT_PACKAGES += \
    icu.dat

PRODUCT_PACKAGES += \
    librs_jni \
    libvideoeditor_jni \
    libvideoeditorplayer \
    libvideoeditor_core


PRODUCT_COPY_FILES := \
        system/bluetooth/data/audio.conf:system/etc/bluetooth/audio.conf \
        system/bluetooth/data/auto_pairing.conf:system/etc/bluetooth/auto_pairing.conf \
        system/bluetooth/data/blacklist.conf:system/etc/bluetooth/blacklist.conf \
        system/bluetooth/data/input.conf:system/etc/bluetooth/input.conf \
        system/bluetooth/data/main.nonsmartphone.conf:system/etc/bluetooth/main.conf \
        system/bluetooth/data/network.conf:system/etc/bluetooth/network.conf

$(call inherit-product-if-exists, frameworks/base/data/fonts/fonts.mk)
$(call inherit-product-if-exists, frameworks/base/data/keyboards/keyboards.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

# Overrides
PRODUCT_BRAND := generic
PRODUCT_DEVICE := generic
PRODUCT_NAME := generic_no_telephony

4、编译:
cd 源码目录
source build/envsetup.sh
choosecombo(选择默认直接回车)
make -j2

5.获得system.img
./emulator -avd abc(模拟器名称已经存在) -system out/target/product/generic/system.img
就可以从模拟器看到你的应用了,从setting也不可以删除了。

5(2)(两种方式都可以)
(5)、
cd 源码目录
编译Android SDK
     在Android源码根目录下执行:#make sdk

     等待......

    编译完成后

    来到/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools/下,执行 :

    ./emulator -avd ANDROID2

    启动模拟器,就会开到Helloworld会在Android系统中。

你可能感兴趣的:(eclipse,android,linux,jni,ubuntu)