作者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)
1F:推 Shihsuang:这个部份我有发现到,我忘记提到,我後来有多加2个参数 08/15 12:40
2F:→ Shihsuang:才遇到这个问题的,当初这个问题跳出的错误是在captureS 08/15 12:41
3F:→ Shihsuang:creen这个函式,所以就有修正了 08/15 12:41
4F:→ Shihsuang:我也有去看过source code,但是看起来好像是有定义asInt 08/15 12:42
5F:→ Shihsuang:erface这个函数了 08/15 12:43
6F:推 Shihsuang:在framework/base/include/binder/IInterface.h这里有定 08/15 12:46
7F:→ Shihsuang:义DECLARE_META_INTERFACE和IMPLEMENT_META_INTERFACE 08/15 12:46
8F:→ Shihsuang:ISurfaceComposer里面也有去呼叫,所以我不懂为什麽找不 08/15 12:49
9F:→ Shihsuang:到asInterface这个函式? 08/15 12:50
10F:推 Shihsuang:再次谢谢您的回覆<(_ _)> 08/15 12:55
11F:→ iincho:如果有加参数不应该用4.0.1去build不过喔XD 08/15 13:31
12F:→ iincho:asInterface是一定会有的,因为那是系统生出来的... 08/15 13:31
14F:→ Shihsuang:是我哪里有改错吗?? 08/15 13:55
15F:→ iincho:你的Android.mk贴出来看看? 08/16 23:36
16F:→ iincho:老实讲看到这个讯息我会觉得是少Lib.... 08/16 23:37