如何获取Android中库的包名?

How to get package name of the library in Android?

我有一个 android 应用程序,我在其中依赖于几个内部库。现在我正在尝试记录在单个组件级别(这意味着单个库级别)发生的崩溃,以便它可以帮助我分析哪个组件导致了崩溃。

public class MyApplication extends Application implements Thread.UncaughtExceptionHandler {

    public static final String TAG = "myapplication";

    public static MyApplication applicationInstance;

    public MyApplication() {
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    @Override
    public Context getApplicationContext() {
        return super.getApplicationContext();
    }

    public static MyApplication getInstance() {
        return applicationInstance;
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
    }


    @Override
    public void uncaughtException(Thread t, Throwable e) {
        Log.i(TAG, "Inside uncaught exception..." + Thread.currentThread().getId());
        //getPackageName() here returns the name of the application instead of the dependent library's one. 
    }
}

有什么方法可以获取添加到 android 清单中的库的包名称?

不是真的。库没有应用程序 ID。清单中的 package 属性仅用于代码生成,仅此而已。

如果您碰巧有库中的一个对象,您可以获得与该 class 关联的 Java 包,并且也许可以从那里推断出您指的是哪个库。