作者iincho (世界的盡頭)
看板AndroidDev
標題Re: [問題] 要怎麼使用和ASOP一起編出來的.so檔
時間Wed Aug 15 01:10:03 2012
※ 引述《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)
推 Shihsuang:這個部份我有發現到,我忘記提到,我後來有多加2個參數 08/15 12:40
→ Shihsuang:才遇到這個問題的,當初這個問題跳出的錯誤是在captureS 08/15 12:41
→ Shihsuang:creen這個函式,所以就有修正了 08/15 12:41
→ Shihsuang:我也有去看過source code,但是看起來好像是有定義asInt 08/15 12:42
→ Shihsuang:erface這個函數了 08/15 12:43
推 Shihsuang:在framework/base/include/binder/IInterface.h這裡有定 08/15 12:46
→ Shihsuang:義DECLARE_META_INTERFACE和IMPLEMENT_META_INTERFACE 08/15 12:46
→ Shihsuang:ISurfaceComposer裡面也有去呼叫,所以我不懂為什麼找不 08/15 12:49
→ Shihsuang:到asInterface這個函式? 08/15 12:50
推 Shihsuang:再次謝謝您的回覆<(_ _)> 08/15 12:55
→ iincho:如果有加參數不應該用4.0.1去build不過喔XD 08/15 13:31
→ iincho:asInterface是一定會有的,因為那是系統生出來的... 08/15 13:31
→ Shihsuang:是我哪裡有改錯嗎?? 08/15 13:55
→ iincho:你的Android.mk貼出來看看? 08/16 23:36
→ iincho:老實講看到這個訊息我會覺得是少Lib.... 08/16 23:37