前段時間接到任務要實現后台截圖並上傳的功能,在網上查了好久,發現遇到這類問題的人還不少。經過一番對比后發現還是修改並編譯源碼中的screencap類然后通過JNI來調用這種方法比較可靠,而其他的在java層實現的基本都是只能截取Activity,在service里是不行的,還有一個是在java層去讀取framebuffer然后解析什么的,原理上和screencap是一樣的,但是看到最后發現博主把關鍵的一步(把讀取到的數據轉換程像素)省略了,於是只好老老實實來用screencap了。
選擇好方向接下來就看路要怎么走了。要在源碼中編譯,首先要有源碼,由於特殊原因想直接下載源碼比較困難,剛好同事有一份4.4.2的,於是就直接拿來用了,其實她也是在網上下的別人分享的,不過能用就好。源碼包不到4G,解壓后8G+。
編譯環境:
ubuntu14.04 64位:當時個人電腦上剛好在用這個
JDK1.6 64位:必須這個版本,而且必須是oracle的(最起碼這個版本的源碼是這樣)。
由於編譯源碼需要很多的依賴庫,所以先安裝他們,免得幾分鍾一出錯:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline6-dev libgl1-mesa-glx libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev lib32readline6-dev gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
(這是從參考鏈接里copy過來的,我當時安裝的只是其中一部分,因為我有些庫我早就安裝過了)
安裝好依賴庫之后就可以開始編譯了。
切換到源碼所在目錄,執行
source build/envsetup.sh
然后執行
lunch
選擇一個要編譯的類型
1
執行
make
此時源碼就開始編譯了。
如果該安裝的庫都安裝了,編譯過程一般不會出現什么問題,幾個小時后就編譯完了。
至此,安裝源碼編譯部分完成。
oracle下載老版本的jdk需要注冊,略顯麻煩,我把我下的放網盤了
鏈接: http://pan.baidu.com/s/1jG45Veu 密碼: muc2
參考鏈接:Android 編譯環境配置搭建(Ubuntu 12.04)及環境導致編譯錯誤QA