Android java.lang.NoClassDefFoundError Proguard-无法解析虚拟方法

Android java.lang.NoClassDefFoundError Proguard-无法解析虚拟方法,android,obfuscation,proguard,Android,Obfuscation,Proguard,在应用程序的主类中,我以编程方式处理API变体: private static BluetoothHeadset mBluetoothHeadset; // later in code if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mBluetoothHeadset = proxy; } 我假设NoClassDefFoundError是因为我声明的变量是API11,但我的

在应用程序的主类中,我以编程方式处理API变体:

    private static BluetoothHeadset mBluetoothHeadset;

// later in code

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

    mBluetoothHeadset = proxy;

    }
我假设NoClassDefFoundError是因为我声明的变量是API11,但我的应用程序可以从API9获得。我认为自己很聪明,没有直接引用缺少的类,因此将其参数化:

    private static Object mBluetoothHeadset;

// later in code

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

    mBluetoothHeadset = (BluetoothHeadset) proxy;

    }
但这不起作用,我想知道Proguard的混淆是否是罪魁祸首:

Could not find class 'com.package.name.qc', referenced from method com.package.name.Example.<init>

VFY: unable to resolve virtual method 435: Landroid/bluetooth/BluetoothHeadset;.startVoiceRecognition (Landroid/bluetooth/BluetoothDevice;)Z
找不到从方法com.package.name.Example引用的类“com.package.name.qc”。
VFY:无法解析虚拟方法435:Landroid/bluetooth/BluetoothHeadset;。startVoiceRecognition(Landroid/bluetooth/bluetooth设备;)Z
在观察过程中,Proguard是否映射在API级别9上找不到的BluetoothHeadset类

我以这种方式处理许多其他API变体,以前从未遇到过这个问题,所以我不明白为什么会在这些情况下发生这种情况?也许是因为我使用的变量声明

我真的,真的不想为每个API级别创建单独的类,因为它会在我的代码中造成如此多的重复,而且在我看来,管理起来要困难得多

我提前向你表示感谢,希望你能帮助我


编辑-我在Eyes中找到了免费的源代码,他们使用反射实现了自己的类,我认为这就是他们解决问题的方法。尽管如此,它并不是直截了当的,所以当我浏览代码时,任何其他的建议都是受欢迎的

正如你所说:但我的应用程序可以从API 9获得……你的构建sdk版本是什么?@Sam崩溃只发生在API 9和10设备上-这是你的意思吗?也许我应该补充一点。我的舱单