Android 4.4 Framework开发笔记
添加自己的app到源码编译环境
- 将自己的应用添加到android编译环境下注意事项
- 确定上级目录能调用到本级目录下的
android.mk
文件 - 修改
jb/device/厂商名称/平台名称/平台名称.mk
文件,向改文件中添加要编译应用的包名(LOCAL_PACKAGE_NAME
),注意不是文件名称
- 确定上级目录能调用到本级目录下的
- 让自己的app可以使用第三方java库中的类
- 引入第三方jar包(
import com.xxx.xxx.*;
) - 在androidmanifest.xml中添加要是用的jar包名称
<uses-library android:name="com.xxx.xxx.*" />
- 在android.mk文件中添加要使用的jar包名称
LOCAL_JAVA_LIBRARIES := com.xxx.xxx.*
- 引入第三方jar包(
- 合并其他开发人员的activity时注意事项
- 将其他人开发的activity拷贝到自己的工作空间
- 在androidManifest.xml添加activity节点,此时应注意要在该节点的activity类前加上包名,否则有时编译的时候会提示找不到R.id 例如:
<activity android:name=".ActivityWhiteBalanceBar"> 最好改为: <activity android:name="com.yu.test.ActivityWhiteBalanceBar">
android源码下使用已编译好的jar包,并在app中调用
-
工程1: java库工程
该工程最终会生成里jar结尾的库文件,并会被安装到一下目录
/system/framework/
另外还会安装相关库的说明文件,使系统能找到该文件使用android studio,eclipse或者直接在android源码环境下创建jar工程,假设生成的jar的包名为
com.test.lib
,最终生成的库名为com.test.lib.jar
-
为工程添加注册文件
在库文件工程的根目录下创建一下文件
permission.com.test.lib.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <library name="com.test.lib" file="/system/framework/com.test.lib.jar"/> </permissions>
>其中的library
标签用于将其下的name和file两个属性关联起来,name为工程指定的包名,file为库文件的存放目录 -
编写相应的Android.mk文件
- jar包对应的Android.mk
如果在Android源码中编译jar包,Android.mk文件如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) //编译jar包所要的源文件的位置 LOCAL_MODULE := com.test.lib //jar包的名字 LOCAL_MODULE_TAGS := optional include $(BUILD_JAVA_LIBRARY) //编译为jar包 ######################## include $(CLEAR_VARS) LOCAL_MODULE := permission.com.test.lib.xml LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := ETC # This will install the file in /system/etc/permissions LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) #LOCAL_MODULE 部分指定为用于注册库的 .xml 文件。 ######################## include $(CLEAR_VARS) LOCAL_SRC_FILES := src/com/test/lib/MonitorCtrl.java LOCAL_MODULE := com.test.lib LOCAL_MODULE_CLASS:= JAVA_LIBRARIES LOCAL_DROIDDOC_OPTIONS:= \ com.test.lib LOCAL_DROIDDOC_USE_STANDARD_DOCLET:= true LOCAL_DROIDDOC_HTML_DIR:= docs/html include $(BUILD_DROIDDOC) include $(call all-makefiles-under,$(LOCAL_PATH))
- APP对应的Android.mk文件
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_JAVA_LIBRARIES := com.test.lib LOCAL_PACKAGE_NAME := MenuSetting_2_05 LOCAL_SDK_VERSION := current LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE)
- APP对应的Manifest.xml
AndroidManifest.xml <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="com.test.lib" /> ........ </application>