我的应用在除一个设备(LG Leon,已更新至Android 6)上的所有设备上都能正常运行,当我尝试打开存储的文件时崩溃。我得到:
java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/File;)V in class Lcom/leff/midi/MidiFile; or its super classes (declaration of 'com.leff.midi.MidiFile' appears in /system/framework/com.lge.frameworks.jar)
这是被调用的构造函数(以用户选择的文件作为参数):
public MidiFile(File fileIn) throws FileNotFoundException, IOException
{
this(new FileInputStream(fileIn));
}
我在使用Android 9的LG用户中遇到了这个问题。看来LG确实包装了没有此类或方法的旧版本。我建议您在应用程序中隐藏库,以确保您使用的是自己的库,而不是LG的库。因此,将类复制到您的项目中,然后将包更改为com.leff_shadowed.midi之类的文件并使用它。
遇到这些问题的用户报告说,此更改解决了他的问题。