出问题代码片段如下:
Class cls = null;
try {
cls = Class.forName("ohos.system.version.SystemVersion");
String string = cls.getMethod("getApiVersion", new Class[0]).invoke(cls, new Object[0]).toString();
Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
代码逻辑也比较简单,通过反射调用SystemVersion的getApiVersion方法,获取HarmonyOs系统的api level。这段代码在正常的64位运行的应用没有问题,但是在32位的应用上就会有异常了。
大体的报错堆栈如下:
08-05 15:11:49.748 2734 2734 E AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String ohos.system.Parameters.nativeGet(java.lang.Str

博客讲述了在HarmonyOS中,32位应用通过反射调用SystemVersion.getApiVersion方法时会出现java.lang.UnsatisfiedLinkError,原因是HarmonyOS的相关方法实现仅存在于64位库中。解决办法是将应用切换为64位或使用替代方案,如读取系统属性来获取API级别和版本信息。
最低0.47元/天 解锁文章
7万+

被折叠的 条评论
为什么被折叠?



