zoukankan      html  css  js  c++  java
  • android后台截屏实现(3)--编译screencap

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

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


     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)
    30  


    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的机器才成功截屏的。因此跟人觉得这种截屏方式不具有普适性。


  • 相关阅读:
    百度面试题
    京东2014年招聘会成都站笔试经历
    把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间
    POJ 2234 Matches Game
    POJ 3903 Stock Exchange
    POJ 2853 Sequence Sum Possibilities
    POJ 3519 Minimal Backgammon
    POJ 2096 Collecting Bugs
    POJ 3071 Football
    HDU 1175 连连看
  • 原文地址:https://www.cnblogs.com/xulingfeng/p/5313196.html
Copyright © 2011-2022 走看看