ProGuard不会混淆蓝牙类

时间:2014-10-15 11:10:54

标签: java android bluetooth proguard

我在Android中使用ProGuard来混淆我的代码。我的应用程序使用Android蓝牙API,以下是我整个代码段的一部分

  import android.app.Activity;
  import android.bluetooth.BluetoothAdapter;
  import android.os.Bundle;
  import android.widget.Toast;

public class MainActivity extends Activity {

private BluetoothAdapter mBluetoothAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    // If the adapter is null, then Bluetooth is not supported
    if (mBluetoothAdapter == null) {
        Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
        finish();
        return;
    }

    //more code over here
}

当我启用ProGuard并尝试模糊我的代码时,我使用Java decompiler

看到以下输出

Output

我的问题是为什么BluetoothAdapter类没有被混淆。为什么ProGuard不会将自己的命名添加到BluetoothAdapter等默认类中。我是否需要在配置文件中添加任何参数以混淆适配器类,或者这是不可能的?

请帮我解决这个问题

1 个答案:

答案 0 :(得分:2)

BluetoothAdapter类是android API(android.bluetooth.BluetoothAdapter)的一部分,proguard无法模糊对它的引用,否则VM无法知道您正在使用此类。混淆只能在您的课程上进行,而不会篡改您无法控制的课程。