修改好之后就要编译了,screencap的编译是要在源码环境中进行的。

         将修改后的screencap.cpp文件替换源码中的原始文件,然后修改screencap的Android.mk文件,修改后的文件如下:


[plain]  view plain  copy
  1. LOCAL_PATH:= $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3.   
  4. LOCAL_SRC_FILES:= \  
  5.     screencap.cpp  
  6.   
  7. LOCAL_SHARED_LIBRARIES := \  
  8.     libcutils \  
  9.     libutils \  
  10.     libbinder \  
  11.     libskia \  
  12.         libui \  
  13.         libgui  
  14.   
  15. LOCAL_MODULE:= libscreencapservice  
  16.   
  17. LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog  
  18.   
  19. LOCAL_MODULE_TAGS := optional  
  20. LOCAL_CERTIFICATE := platform  
  21.   
  22. LOCAL_C_INCLUDES += \  
  23.     external/skia/include/core \  
  24.     external/skia/include/effects \  
  25.     external/skia/include/images \  
  26.     external/skia/src/ports \  
  27.     external/skia/include/utils  
  28.   
  29. 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

更多相关文章

  1. CyanogenMod源码下载和编译(Android ROM定制基础篇)
  2. smack 源码分析- PacketReader (android上实现长连接)
  3. Android基于ProductFlavors动态配置权限
  4. 基于源码分析 Android View 绘制机制
  5. Camera源码分析(android2.2)
  6. android 6.0后usb otg设备不显示在文件管理器中
  7. 将Activity打包成jar文件

随机推荐

  1. 基于 android TV的智能家居项目的传感器
  2. 基于android的网络音乐播放器-本地音乐的
  3. Android简易手势密码开源库
  4. Android(安卓)UI设计之自定义Dialog,实现
  5. Android快速自定义控件+实战演示(二)组合自
  6. android P版本 系统稳定性问题案例分析(
  7. Android触摸反馈(回顾整理):触摸事件的分发
  8. Android中加密机制
  9. Android(安卓)插件化和热修复知识梳理
  10. android之存储篇_SQLite数据库_让你彻底