ddmlib获取本机库信息

时间:2012-12-04 17:09:53

标签: android-sdk-tools

我的任务是使用ddmlib分析方法调用和Android应用程序的相应本机库。我开始创建一个用于测试目的的简单应用程序,它使用jni来调用在C中实现的函数(对给定数字进行平方)。然后我实现了IMethodProfilingHandler:

@Override
public void onSuccess(byte[] data, Client client) {
MethodCallExtractor extractor = MethodCallExtractor.GetInstance();
    List<MethodCall> calls = extractor.extract(data, client);
    System.out.println("methodcalls:");
    for(MethodCall call : calls){
        System.out.println(call);
    }
    printNativeLibraries(client);
}

工作并打印jni函数的调用。 MethodCallExtractor是一个返回MethodCalls列表的简单解析器。我的问题是

private void printNativeLibraries(Client client){
    ClientData clientData = client.getClientData();
    while(clientData.getNativeLibraryMapInfo().hasNext()){
        System.out.println("library: " + clientData.getNativeLibraryMapInfo().next().getLibraryName());
    }
}

不打印任何内容。为什么包含我的C函数的库(在我的情况下为libsquared.so)未在NativeLibraryMapInfo中列出?我需要触发什么才能正确初始化NativeLibraryMapInfo?

我花了几个小时试验'requestNativeHeapInformation()','requestAllocationDetails()','requestThreadUpdate()'和 'executeGarbageCollector()'没有成功,我找不到任何关于这个问题的有用文档。

我正在使用ddmlib-r13

0 个答案:

没有答案