android后台截屏实现(3)--编译screencap
16lz
2021-01-23
修改好之后就要编译了,screencap的编译是要在源码环境中进行的。
将修改后的screencap.cpp文件替换源码中的原始文件,然后修改screencap的Android.mk文件,修改后的文件如下:
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_SRC_FILES:= \
- screencap.cpp
- LOCAL_SHARED_LIBRARIES := \
- libcutils \
- libutils \
- libbinder \
- libskia \
- libui \
- libgui
- LOCAL_MODULE:= libscreencapservice
- LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
- LOCAL_MODULE_TAGS := optional
- LOCAL_CERTIFICATE := platform
- LOCAL_C_INCLUDES += \
- external/skia/include/core \
- external/skia/include/effects \
- external/skia/include/images \
- external/skia/src/ports \
- external/skia/include/utils
- include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE指定生成文件的名字;
BUILD_SHARED_LIBRARY告诉编译器生成文件的类型是动态库
-llog引入打印日志的库
由于修改后的screencap引入了jni.h,去系统安装的jdk下的找到该头文件并拷贝到screencap目录下。1.6版本的jni.h在jdk*/include/下,jni.h又需要jni_md.h,该文件在jdk*/include/linux/下。将这两个文件一起拷贝到screencap目录。
编译动态库
两种方法:
1、mm命令
在screencap目录下执行
mm
2、make命令
在源码根目录执行
make libservicescreencap
一些问题
由于Android版本升级太快,源码一旦改动这种截屏方式就会出错,我在测试时发现,442源码所编译的动态库无法在422系统上实现截屏,甚至都无法在444上截屏,最后还是找了台442的机器才成功截屏的。因此跟人觉得这种截屏方式不具有普适性。
原文地址: http://blog.csdn.net/lingfengxu/article/details/43488653
更多相关文章
- CyanogenMod源码下载和编译(Android ROM定制基础篇)
- smack 源码分析- PacketReader (android上实现长连接)
- Android基于ProductFlavors动态配置权限
- 基于源码分析 Android View 绘制机制
- Camera源码分析(android2.2)
- android 6.0后usb otg设备不显示在文件管理器中
- 将Activity打包成jar文件