(1)android apk编译步骤
①,aapt工具生成.R文件
②,javac编译为字节码
③,dex工具打包为.dex文件
④,aapt工具打包资源未见为.ap文件
⑤,apkbuilder工具打包为apk文件
⑥,keytool密钥工具创建密钥
⑦,jarsigner签名工具进行签名
⑧,zipalign对齐工具对apk进行优化
(2) android.mk四种编译目标
①,apk
android.mk
#设置当前路径
LOCAL_PATH := $(call my-dir)
#清除除LOCAL_PATH外的所有LOCAL_XX变量
include $(CLEAR_VARS)
#设置包名,表示编译的是apk
LOCAL_PACKAGE_NAME := SxxiaoVendor
#指定源文件
LOCAL_SRC_FILES := $(call all-java-files-under, src)
#指定编译生成的目标文件格式,未设置会报:unknown target问题,可选
##PACKAGE(APK),SHARED_LIBRARY(.so),STATIC_LIBRARY(.a),EXECUTABLE(EXE),JAVA_LIBRARY(.jar(android dex)),STATIC_JAVA_LIBRARY(jar)
include $(BUILD_PACKAGE)
#指定全编是依赖的镜像
#ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_PACKAGE_NAME)
#选择platform(核心进程,进程UID为system)来进行签名,build/target/product/security下有四组默认签名
#还可选testkey(普通apk,默认),shared(该apk需要和home/contacts共享数据),media(该apk是/media/download中的一环)
#LOCAL_CERTIFICATE := platform
#该模块在所有版本下才编译,还可选user,eng,tests
#LOCAL_MODULE_TAGS := optional
#使用后,会使用sdk的hide的api来编译,如果
#LOCAL_PRIVATE_PLATFORM_APIS := true
②,exe
#设置当前路径
LOCAL_PATH := $(call my-dir)
#清除除LOCAL_PATH外的所有LOCAL_XX变量
include $(CLEAR_VARS)
#设置包名,表示编译的是apk
LOCAL_MODULE := SxxiaoVendor
#指定源文件
LOCAL_SRC_FILES := $(call all-c-files-under,src)
#指定编译生成的目标文件格式,未设置会报:unknown target问题,可选
#PACKAGE(APK),SHARED_LIBRARY(.so),STATIC_LIBRARY(.a),EXECUTABLE(EXE),JAVA_LIBRARY(.jar(android dex)),STATIC_JAVA_LIBRARY(jar)
include $(BUILD_EXECUTABLE)
③,so
#设置当前路径
LOCAL_PATH := $(call my-dir)
#清除除LOCAL_PATH外的所有LOCAL_XX变量
include $(CLEAR_VARS)
#设置包名,表示编译的是apk
LOCAL_MODULE := SxxiaoVendor
#指定源文件
LOCAL_SRC_FILES := $(call all-c-files-under,src)
#指定编译生成的目标文件格式,未设置会报:unknown target问题,可选
#PACKAGE(APK),SHARED_LIBRARY(.so),STATIC_LIBRARY(.a),EXECUTABLE(EXE),JAVA_LIBRARY(.jar(android dex)),STATIC_JAVA_LIBRARY(jar)
include $(BUILD_SHARED_LIBRARY)
④,jar
#设置当前路径
LOCAL_PATH := $(call my-dir)
#清除除LOCAL_PATH外的所有LOCAL_XX变量
include $(CLEAR_VARS)
#设置包名,表示编译的是apk
LOCAL_MODULE := SxxiaoVendor
#指定源文件
LOCAL_SRC_FILES := $(call all-java-files-under,src)
#指定编译生成的目标文件格式,未设置会报:unknown target问题,可选
#PACKAGE(APK),SHARED_LIBRARY(.so),STATIC_LIBRARY(.a),EXECUTABLE(EXE),JAVA_LIBRARY(.jar(android dex)),STATIC_JAVA_LIBRARY(jar)
include $(BUILD_JAVA_LIBRARY)