如何获取aar文件的包名?

How to get packagename of aar file?

我正在创建一个 aar 库,我需要获取 aar packagename 以获得 aar 文件的标志。

我正在尝试下面的代码,但是 getPackageName() 方法没有 return aar packagename

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs){
    Log.i("MyApp", "Signature hashcode : " + sig.hashCode());
}

AAR 库仅在编译期间读取。当您构建一个使用该库的应用程序时,AAR 是 "included" 并与应用程序代码合并,因此运行时的 PackageName 是应用程序之一,而不是您的库之一。登录 AAR 文件用于让开发人员确定该文件的来源,仅此而已。在运行时,签名在构建过程后丢失。

您可以通过访问 .aar 库中的 class 来简单地获取包名称。假设你在名为Sample.java的库中有一个class,那么你可以这样获取包名:

String packageName = Sample.class.getPackage().getName();