日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android庫so文件及skia函數(shù)的調(diào)用

以圖形庫skia為例,具體過程如下:

成都創(chuàng)新互聯(lián)公司是專業(yè)的大同網(wǎng)站建設(shè)公司,大同接單;提供網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行大同網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

1、建立完整的Android開發(fā)環(huán)境,JAVA層的環(huán)境SDK、JDK、eclipse都要裝,C&C++層的環(huán)境NDK、cygwin、git也都要裝好。

2、下載完整的skia代碼,代碼自己到google上搜吧(重要提示:wiki,TortoiseSVN)

3、通過git下載android源碼:xxxx/core,xxxx/base,xxxx/skia三個(gè)文件夾就夠了。(找到android源碼git文件的下載列表,搜索頁面就可以了,都下載,都下載!?。?/p>

4、編譯skia文件夾,獲得skia對應(yīng)的so文件。

4.1 如果你的skia文件夾來自skia官網(wǎng),那就看看目錄下的config文件,編寫你的make.out文件,之后編譯,出錯(cuò),再編譯,再出錯(cuò)。。。是因?yàn)槿鄙兕^文件,對吧?,這些頭文件與硬件或圖像編碼有關(guān),比如說atomic.h啊png.h啊什么的。找吧?。⊙a(bǔ)上?。∵€是報(bào)錯(cuò)的話,就是因?yàn)檫€缺少某些定義,報(bào)錯(cuò)一大推“undeclared”,找不到就只能自己寫,當(dāng)然前提是你對你的開發(fā)板足夠熟悉,比如skia要求mutex的申明,并實(shí)現(xiàn)這個(gè)自旋鎖的占用和釋放接口。(本步驟可以省略)

4.2 在ndk文件夾里搜索,獲得libskia.so, libskiagl.so, libjnigraphics.so

5、新建項(xiàng)目文件夾,把第三步的core,base,skia三個(gè)文件夾扔進(jìn)去。在項(xiàng)目文件夾里新建個(gè)lib文件夾,把第四步生成的so文件扔到lib里。新建jni文件夾,在jni里編寫你的cpp文件。(重要提示:你可以不仔細(xì)看我寫的東西,但如果你是在沒有仔細(xì)看NDK自帶doc文件夾里那十幾篇英文參考的情況下這么做,那你一定會(huì)生不如死的)

6、搜索skia文件,找到skcanvas.h,看看我們能用skia干什么。和android相比,skia的自述文件儼然像是個(gè)天使。不理解什么是天使?請參看android NDK下的文檔。

7、以畫畫寫字為例,我的cpp文件如下:

 
 
 
 
  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. #include  
  8. #include  
  9. #include "SkBitmap.h"  
  10. #include "SkDevice.h"  
  11. #include "SkPaint.h"  
  12. #include "SkRect.h"  
  13. #include "SkImageEncoder.h"  
  14. extern "C"  
  15. {  
  16. JNIEXPORT jint JNICALL Java_JNItestForGraph_JNItestForGraph_TestBackView_changeback  
  17.   (JNIEnv * env, jobject  obj, jobject bitmap, jint time);  
  18. }  
  19. JNIEXPORT jint JNICALL Java_JNItestForGraph_JNItestForGraph_TestBackView_changeback  
  20.     (JNIEnv * env, jobject  obj, jobject bitmap, jint time)  
  21. {  
  22.                  AndroidBitmapInfo  info;  
  23.              int*              pixels;  
  24.                 int ret;  
  25.                 ret = AndroidBitmap_getInfo(env, bitmap, &info);  
  26.                 ret = AndroidBitmap_lockPixels(env, bitmap, (void**)&pixels);  
  27.                 int width=(int)info.width;  
  28.                 int height=(int)info.height;  
  29.           
  30.                 SkBitmap bmp = SkBitmap();  
  31.                 bmp.setConfig(SkBitmap::kARGB_8888_Config,width,height,0);  
  32.                 bmp.setPixels((void*)pixels);  
  33.                 SkCanvas backgroud(bmp);  
  34.                 SkPaint paint;  
  35.                     paint.setARGB(255, 255, 0, 0);  
  36.                 SkRect r;  
  37.                 r.set(25, 25, 145, 145);  
  38.                 backgroud.drawRect(r, paint);  
  39.                 AndroidBitmap_unlockPixels(env, bitmap);  
  40.                 backgroud.drawRect(r, paint);  
  41.                 paint.setARGB(255, 0, 255, 0);  
  42.                     r.offset(20, 20);  
  43.                     backgroud.drawRect(r, paint);  
  44.                     paint.setARGB(255, 0, 0, 255);  
  45.                     r.offset(20, 20);  
  46.                     backgroud.drawRect(r, paint);  
  47.                 paint.setARGB(255, 0, 0, 0);  
  48.                 backgroud.drawText("ABCD", 4*sizeof(char), 0, 100 , paint);  
  49.                 return (ret);  

(重要提示:文件名的命名很有講究,網(wǎng)上搜搜NDK native C或好好看看NDK自述文檔HOWTO.TXT)

8、編寫android.mk和appliction文件,具體怎么寫,直接拷貝NDK下sample里的同名文件,再修改一下就可以了。具體怎么改。。。兄弟!不是我蒙你,還是看看NDK下的自述文檔吧,我收回在第5步所說的話。用NDK文件夾下的ndk-build編譯,根據(jù)出錯(cuò)信息關(guān)聯(lián)所需頭文件,都在你之前下載的幾個(gè)文件夾里了,真的。編譯成功,會(huì)在lib文件夾得到新的so文件。(重要提示:mk文件中記得帶上-lskia,-lskiagl,-ljnigraphics)

9、編寫JAVA程序調(diào)用上面的函數(shù)。該怎么寫呢? 打開eclipse,新建工程,在程序中先Loadlibrary,再native C申明,具體。。。網(wǎng)上搜吧,要么就看看NDK下面sample里隨便哪個(gè)例子,那個(gè)plasma就不錯(cuò)

10、運(yùn)行ecplise里的項(xiàng)目,之前先看看有沒有把so文件放到項(xiàng)目所在地的lib中。

11、下載到真機(jī)上運(yùn)行,較低版本的機(jī)器,會(huì)缺少libjnipraphics.so庫,需要在apk中添加。

【編輯推薦】

Android布局屬性詳解

Android 多任務(wù)多線程斷點(diǎn)下載

Android Activity和Intent機(jī)制學(xué)習(xí)筆記

Android應(yīng)用——Activity傳參數(shù)與跳轉(zhuǎn)

升級(jí)到Android 2.3.4,體驗(yàn)***的Android技術(shù)


分享文章:Android庫so文件及skia函數(shù)的調(diào)用
URL分享:http://m.5511xx.com/article/djgjdce.html