21

如何找出我的应用程序安装或引用的当前 SDK 的版本?我查看了类文件和清单,但没有关于它是什么版本的参考。

提前致谢。

4

4 回答 4

34

你有FacebookSdkVersion当前版本的课程:https ://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/FacebookSdkVersion.java

final class FacebookSdkVersion {
    public static final String BUILD = "3.5.2";
    public static final String MIGRATION_BUNDLE = "fbsdk:20130708";
}

由于此类没有修饰符,并且您无法从包中访问它,因此请使用反射。这将返回您的 sdk 版本:

private String getFacebookSDKVersion()
{
    String sdkVersion = null;
    ClassLoader classLoader = getClass().getClassLoader();
    Class<?> cls;
    try
    {
        cls = classLoader.loadClass("com.facebook.FacebookSdkVersion");
        Field field = cls.getField("BUILD");
        sdkVersion = String.valueOf(field.get(null));
    }
    catch (ClassNotFoundException e)
    {
        // error
    }
    catch (NoSuchFieldException e)
    {
        // error
    }
    catch (IllegalArgumentException e)
    {
        // error
    }
    catch (IllegalAccessException e)
    {
        // error
    }
    return sdkVersion;
}
于 2013-10-07T16:35:58.640 回答
7

最简单的方法:

1.- 转到您的 AndroidManifest.xml

2.- 查看底部导航视图,有两个选项卡:文本和合并清单,单击最后一个。

3.- 在右侧会出现 Manifest Sources,它是:例如我有这个:facebook-android-sdk:4.20.0 manifest。

我知道它有点旧,但我在 2017 年 3 月搜索了这个,没有像这样简单的答案。

于 2017-03-26T19:27:06.367 回答
1

有一个公共 API:

import com.facebook.Settings;

Settings.getSdkVersion()

“获取当前版本的 Android 版 Facebook SDK 作为字符串。”

我不建议使用反射来访问包类——它们将来可能会改变它并破坏你的代码,但这个公共 API 应该被认为是稳定的。

于 2014-09-29T20:41:40.577 回答
0

迟到了,但我在尝试@sromku 的答案时又发现了一门课。

有一个类叫做 FacebookSdk:import com.facebook.FacebookSdk;

它公开了两种我们可以尝试的有用方法:

  1. getGraphApiVersion()
  2. getSdkVersion()
于 2020-08-05T12:36:44.413 回答