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的機器才成功截屏的。因此跟人覺得這種截屏方式不具有普適性。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM