android应用执行adb命令来截图
测试那边需要一个截图工具,本为以随便就搞定了,哈哈。谁知道看了一下,我们干掉了SystemUI,我们是做系统定制的,把一些东西干掉了。所以就没法调用系统的API进行截图了。
使用adb截图,用电脑可以,但是用应用去执行adb命令截图,做不到:
String mSavedPath = "/mnt/sdcard/imei-" + getIMEI(MainActivity.this) + "-time-" + stampToDate(System.currentTimeMillis() + "") + "screenshot.png";
try {
Runtime.getRuntime().exec("screencap -p " + mSavedPath);
} catch (Exception e) {
e.printStackTrace();
}
ToastUtils.toastShow(MainActivity.this, "截图成功!");
报了一些无权限相关的错误。
于是就想到了把它放到系统里头编译: Android.mk
LOCAL_PATH:= $(call my-dir)/app/src/main
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ScreenShot
LOCAL_SRC_FILES := $(call all-java-files-under, java)
WITH_DEXPREOPT := false
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)
include $(BUILD_MULTI_PREBUILT)
###################################################
include $(call all-makefiles-under,$(LOCAL_PATH))
编译出来以后,安装,使用,亲测成功了!
当然啦,只能截图我当前系统的界面,其他系统就不行了。除非用那个系统来编译。 上面脚本一有句是重点: LOCAL_CERTIFICATE := platform
也就是用系统签名
WITH_DEXPREOPT := false 这个的意思 就是不生成odex 一般来说,apk里面是java文件。odex里是资源文件
这样做方便我们安装
好啦,这文章就到这 里啦!