error: cannot access IBase class file for android.hidl.base.V1_0.IBase not found

error: cannot access IBase class file for android.hidl.base.V1_0.IBase not found

Android 哦,AOSP。我正在尝试在 frameworks/base.

中的应用程序中使用 HIDL java 库

根据 the documentation,我已将 HIDL 添加到 Android.mk 文件:

LOCAL_JAVA_LIBRARIES := vendor.myvendor.mylibrary-V1.0-java

MainActivity.java中,我包含它并尝试使用:

import vendor.myvendor.mylibrary.V1_0.IGood;

public class MainActivity extends Activity {

    public void onCreate(Bundle b) {
        super.onCreate(b);
        IGood service;
    }
}

这段代码编译没有任何错误。但是当我尝试访问某些方法时,例如:

import vendor.myvendor.mylibrary.V1_0.IGood;

public class MainActivity extends Activity {

    public void onCreate(Bundle b) {
        super.onCreate(b);
        IGood service = IGood.getService();
    }
}

我收到一个错误:

error: cannot access IBase
            IGood server = IGood.getService();
                                ^
class file for android.hidl.base.V1_0.IBase not found

解决方法是在Android.mk下面添加一行:

LOCAL_STATIC_JAVA_LIBRARIES := android.hidl.base-V1.0-java-static

此外,在那之后我又遇到了另一个错误:由于混淆器,它没有编译。在我的例子中,我不得不禁用它:

LOCAL_PROGUARD_ENABLED := disabled

否则,需要创建混淆器配置并添加所有 .jars,与 HIDL 相关。

之后一切正常。