软硬件环境
- OTT BOx with android 5.1.1
前言
在做 android
开发时,有时需要事先将应用程序烧写到板子上去而不必让用户在板子出厂后自行安装。将应用导入到 android
源码树可以分为两种情况:应用的 apk
文件和工程源码,下面将一一介绍。
APK文件形式导入
这种方式最简单,app
源码与 android
源码分开管理,互不相干。App
发布后,再放进 android
源码库中编译打包。主要有以下几个步骤
在应用程序所在目录创建文件夹
一般是 packages/apps/
这个目录或者厂家自己存放 apps
的位置,创建一个自己独立的文件夹
mkdir Hello
将Hello.apk拷贝到刚才所创建的文件夹下
copy Hello.apk Hello
在apk同级创建Android.mk文件
然后建立 mk
文件,内容为
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Hello.apk
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := EXECUTABLE
LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)
LOCAL_SRC_FILES := $(LOCAL_MODULE)
到android根目录进行编译
最后,开始进行 android
源码编译,这个过程会生成镜像文件,其中就包含了 apk
文件
make
应用源码形式导入
在应用程序所在目录创建文件夹
一般是 packages/apps/
这个目录或者厂家自己存放 apps
的位置
mkdir Hello
将工程源码拷贝到Hello文件夹下
将 app
的源码拷贝过来
copy -rf Hello/* Hello/
新建Android.mk文件
同样的,创建 mk
文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := Hello
LOCAL_MODULE_TAGS := eng
include $(BUILD_PACKAGE)
到android根目录进行编译
最后还是编译
make
如果 app
中调用了 c
库,则工程中会有个 jni
目录
这里的 Android.mk
是用来编译 C
文件产生 lib*.so
的,如
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# java中System.loadLibray()使用
LOCAL_MODULE := SerialPort
LOCAL_SRC_FILES := SerialPort.c
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
那么,此时工程的 Android.mk
可如下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := testApp
LOCAL_CERTIFICATE := platform
LOCAL_JNI_SHARED_LIBRARIES := libserial_port
LOCAL_PROGUARD_ENABLED := disabled
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))
准备好后,就可以重新编译了
make