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


  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/xulingfeng/p/5313196.html
Copyright © 2020-2023  润新知