android native tools,android sdk tools - ddmlib get native library info - Stack Overflow

My task is to analyze method calls and corresponding native libraries of an android app by using ddmlib. I started with creating a simple app for testing purposes that uses jni for calling a function implemented in C (which squares a given number). Then I implemented IMethodProfilingHandler:

@Override

public void onSuccess(byte[] data, Client client) {

MethodCallExtractor extractor = MethodCallExtractor.GetInstance();

List calls = extractor.extract(data, client);

System.out.println("methodcalls:");

for(MethodCall call : calls){

System.out.println(call);

}

printNativeLibraries(client);

}

works and prints the call of the jni function. MethodCallExtractor is a simple parser that returns a List of MethodCalls. My problem is that

private void printNativeLibraries(Client client){

ClientData clientData = client.getClientData();

while(clientData.getNativeLibraryMapInfo().hasNext()){

System.out.println("library: " + clientData.getNativeLibraryMapInfo().next().getLibraryName());

}

}

does not print anything. Why is the library containing my C function (libsquared.so in my case) not listed in NativeLibraryMapInfo? What do I have to trigger to get NativeLibraryMapInfo initialized properly?

I spent hours experimenting with 'requestNativeHeapInformation()', 'requestAllocationDetails()', 'requestThreadUpdate()' and

'executeGarbageCollector()' without success and I cannot find any useful documentation about this issue.

I am using ddmlib-r13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值