add yourself android lib
发布日期:2021-11-16 18:19:05
浏览次数:5
分类:技术文章
本文共 3221 字,大约阅读时间需要 10 分钟。
程1:Java库文件工程
该工程最终会生成以jar结尾的Java库文件,并会被安装到设备的以下目录: /system/framework/ 另外还会安装相关库文件的说明文件,使系统能够找到库文件: /system/etc/permissions/ 1、建立工程 在Eclipse下新建一个空的Java工程。 在工程的 Java Build Path -> Libraries 下,导入Android的SDK中的 android.jar 库。 为工程创建相应的包和java文件。 下面假设包路径为 com.mytest.lib,最终生成的库为 mylib.jar。 2、为工程添加注册文件 在库文件工程的根目录下创建以下文件: <permission xml file name>.xml 该文件是用来向系统注册库用的,名称可以自己定,在下面假设该文件为 mylibxml.xml。 在文件中加入以下内容: <?xml version="1.0" encoding="UTF-8"?> <permissions> <library name="com.mytest.lib" file="/system/framework/mylib.jar" /> </permissions> 其中的 library 用于将其下的 name 和 file 两个属性关联起来,name 的值后边会用到。 这里的 name 指定为工程的包名。 这里的 file 指定为库文件的存放路径,应该是: /system/framework/<jar file name>.jar 3、为工程添加makefile文件: 在库文件工程的根目录下创建以下文件: Android.mk 该文件是用来编译工程的,名称固定。 在文件中加入以下内容: LOCAL_PATH:= $(call my-dir) #MAKE_JAR include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_MODULE := mylib include $(BUILD_JAVA_LIBRARY) #MAKE_XML include $(CLEAR_VARS) LOCAL_MODULE := mylibxml.xml LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) 其中,MAKE_JAR 部分的 LOCAL_MODULE 部分指定为想要生成的库文件的名字, 需要与 .xml 文件中的 library 下的 file 部分一致。 其中,MAKE_XML 部分的 LOCAL_MODULE 部分指定为用于注册库的 .xml 文件。 4、生成应用程序可用的库文件 此时的工程,如果使用了未公开的API的话,在eclipse下应该是有红叉的。 这些错误不用管,只需要保证程序在Android的源码下能够编译通过即可。 将工程的java文件以及 .xml 和 .mk 按照目录结构拷贝到以下目录: <Android source folder>/packages/apps/<project name>/ 运行以下命令: $ cd <Android source folder> $ . ./build/envsetup.sh $ mmm packages/apps/<project name> 将会生成一个 .jar 文件和一个 .xml 文件。 以上两个文件是应用程序在运行时需要用到的。 调试应用前,需要将两个文件拷贝到设备的相应目录上去: .jar 文件:/system/framework/ .xml 文件:/system/etc/permissions/ 拷贝到设备使用以下命令: $ sudo adb push <.jar or .xml file path> <path in device> 拷贝完以后需要重启设备。 5、生成在Eclipse可以引用的库文件 在源码下编译的 .jar 文件在Eclipse中是不能使用的,需要单独生成。 在Eclipse下选中工程根目录,选择文件菜单中的导出Export,然后选择jar类型。 导出为jar文件时,只需要选中相应的java文件即可。 这样生成的jar文件仅仅供应用程序在Eclipse下使用,除非是以下情况: 库文件没有使用非公开的API,并且, 应用本身在Eclipse下编译就能够使用,不需要到源码下编译。 暂且为该文件命名为mylibtemp.jar 工程2:Android应用工程 1、建立工程 新建一个Android工程。 在工程的 Java Build Path -> Libraries 下,导入 mylibtemp.jar 库。 使用 mylibtemp.jar 中的类编写代码。 下面假设最后生成的应用程序文件为 myapp.apk。 2、编辑AndroidManifest.xml文件 编辑工程根目录下的 AndroidManifest.xml 文件。 在 application 下添加以下内容: <uses-library android:name="com.mytest.lib"> </uses-library> 其中的 :name 表示所引用的库文件的包名。 其与库工程的 .xml 文件中的 name 应该是一致的。 这样在应用运行时就能够找到相应的 .jar 文件了。 如果引用了多个库,需要添加多个 uses-library 标签。 3、为工程添加makefile文件: 在库文件工程的根目录下创建以下文件: Android.mk 该文件是用来编译工程的,名称固定。 在文件中加入以下内容: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_JAVA_LIBRARIES := mylib LOCAL_PACKAGE_NAME := myapp LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE) 其中的 LOCAL_JAVA_LIBRARIES 表示程序会用到的库文件。 其名成与库工程下的 .mk 文件中 MAKE_JAR 部分下的 LOCAL_MODULE 应该是一致的。 其中的 LOCAL_PACKAGE_NAME 表示应用最后生成的名称。 4、编译应用程序 将工程的 src、res、assets 文件夹以及文件: Android.mk 和 AndroidManifest.xml 按照目录结构拷贝到以下目录: <Android source folder>/packages/apps/<project name>/ 引用的 .jar 库文件并不需要。 运行以下命令: $ cd <Android source folder> $ . ./build/envsetup.sh $ mmm packages/apps/<project name> 将会生成一个 .apk 文件。 运行以下命令将应用安装到设备: $ sudo adb install [-r] <apk file path>refer: http://hi.baidu.com/gaogaf/blog/item/1757d309274b098cd1581bd7.html
转载地址:https://blog.csdn.net/taoshengyang/article/details/6003274 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月25日 14时27分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Unity3D】Unity3D 手势控制模型放大缩小
2021-06-30
【Unity3D】Unity3D 核心类型一览
2021-06-30
【Unity3D】Unity3D UGUI原理分析
2021-06-30
【Unity3D】Unity3D 资源管理整理
2021-06-30
【Unity3D】Unity3D 几个让你相见恨晚的小技巧
2019-04-27
【云服务器】如何搭建自己的百度云服务器?
2019-04-27
【Unity3D】 Photon多人游戏开发教程
2019-04-27
【Unity3D】项目防破解,安全守护,保护项目经验分享
2019-04-27
Python 基础(二十一):argparse 模块
2019-04-27
Python 基础(二十二):正则表达式
2019-04-27
Python 进阶(一):多线程
2019-04-27
Python 进阶(二):多进程
2019-04-27
Python 进阶(三):邮件的发送与收取
2019-04-27
Python 进阶(四):数据库操作之 MySQL
2019-04-27
Python 进阶(五):数据库操作之 SQLite
2019-04-27
Python 进阶(六): Excel 基本操作
2019-04-27
Python 进阶(七): Word 基本操作
2019-04-27
Python 进阶(八):XML 基本操作
2019-04-27
Python 进阶(九):JSON 基本操作
2019-04-27