android后台截屏实现(3)--编译screencap

本文介绍了如何在Android源码环境下编译修改后的screencap,包括替换原始文件,修改Android.mk文件,引入log库,并解决jni头文件问题。通过`mm`或`make`命令生成动态库。但需要注意的是,由于Android版本差异,这种方式可能不具普适性,编译的库可能无法在不同版本系统上通用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         修改好之后就要编译了,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的机器才成功截屏的。因此跟人觉得这种截屏方式不具有普适性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值