Re: [問題] 要怎麼使用和ASOP一起編出來的.so檔

看板AndroidDev作者 (世界的盡頭)時間13年前 (2012/08/15 01:10), 編輯推噓4(4012)
留言16則, 2人參與, 最新討論串3/5 (看更多)
※ 引述《iincho (世界的盡頭)》之銘言: : 標題: Re: [問題] 要怎麼使用和ASOP一起編出來的.so檔 : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 114.32.193.107 : 推 Shihsuang:我有加System.loadLibrary,看起來是在load的時候跳錯的 08/14 18:04 : → Shihsuang:另外我執行的環境是TF101 android 4.0.3 08/14 18:05 : → Shihsuang:當初我在編譯的時候,有用過android4.0.1編過,但是跳出 08/14 18:06 : → Shihsuang:error: undefined reference to android::ISurfaceCompo 08/14 18:07 : → Shihsuang:ser::asInterface(android::sp<android::IBinder> const 08/14 18:07 : → Shihsuang:&)這個錯誤 跟執行時的錯誤好像是同樣原因?? 08/14 18:08 應該是系統share library版本的問題,大概4.0的SurfaceFilinger又改了啥... (不要懷疑,這部分通常是跳版號改最大的) 要確認這一點可以把可以把TF101上面的.so拉出來用nm把symbol倒出來看, 看不懂的話去暴力搜尋兩版的android相關的code是不是有大改過, 這是因為這隻程式真正的功能是跑在系統的service上,需要系統的library支持 才能存取相關功能,最好是同一版號,才能保證那些系統lib export出來的 function是一致的。 你要確認的是4.0的compose->captureScreen的界面沒有改動... 剛剛找了一下4.0.1的code: http://www.oschina.net/code/explore/android-4.0.1/libs/gui/ ISurfaceComposer.cpp BpSurfaceComposer裡面的captureScreen原型是 captureScreen(DisplayID dpy, sp<IMemoryHeap>* heap, uint32_t* width, uint32_t* height, PixelFormat* format, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) 足足有九個參數,而你那個範例呼叫的screenCapture只有七個參數, 這就是問題所在。 -- Beware of bugs in the above code; I have only proved it correct, not tried it. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.193.107 ※ 編輯: iincho 來自: 114.32.193.107 (08/15 01:20)

08/15 12:40, , 1F
這個部份我有發現到,我忘記提到,我後來有多加2個參數
08/15 12:40, 1F

08/15 12:41, , 2F
才遇到這個問題的,當初這個問題跳出的錯誤是在captureS
08/15 12:41, 2F

08/15 12:41, , 3F
creen這個函式,所以就有修正了
08/15 12:41, 3F

08/15 12:42, , 4F
我也有去看過source code,但是看起來好像是有定義asInt
08/15 12:42, 4F

08/15 12:43, , 5F
erface這個函數了
08/15 12:43, 5F

08/15 12:46, , 6F
在framework/base/include/binder/IInterface.h這裡有定
08/15 12:46, 6F

08/15 12:46, , 7F
義DECLARE_META_INTERFACE和IMPLEMENT_META_INTERFACE
08/15 12:46, 7F

08/15 12:49, , 8F
ISurfaceComposer裡面也有去呼叫,所以我不懂為什麼找不
08/15 12:49, 8F

08/15 12:50, , 9F
到asInterface這個函式?
08/15 12:50, 9F

08/15 12:55, , 10F
再次謝謝您的回覆<(_ _)>
08/15 12:55, 10F

08/15 13:31, , 11F
如果有加參數不應該用4.0.1去build不過喔XD
08/15 13:31, 11F

08/15 13:31, , 12F
asInterface是一定會有的,因為那是系統生出來的...
08/15 13:31, 12F

08/15 13:55, , 13F
08/15 13:55, 13F

08/15 13:55, , 14F
是我哪裡有改錯嗎??
08/15 13:55, 14F

08/16 23:36, , 15F
你的Android.mk貼出來看看?
08/16 23:36, 15F

08/16 23:37, , 16F
老實講看到這個訊息我會覺得是少Lib....
08/16 23:37, 16F
文章代碼(AID): #1GAePlAc (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1GAePlAc (AndroidDev)