记录一个在Android12上,setForceSafeLabels方法找不到,导致没法安装APK的问题

33 阅读1分钟

image.png 在一个Android12的机器上,出现了无法安装应用的情况,报了setForceSafeLabels()方法找不到。

崩溃日志:

06-15 15:52:15.228 D/AndroidRuntime( 9746): Shutting down VM

06-15 15:52:15.233 E/AndroidRuntime( 9746): FATAL EXCEPTION: main

06-15 15:52:15.233 E/AndroidRuntime( 9746): Process: com.android.packageinstaller, PID: 9746

06-15 15:52:15.233 E/AndroidRuntime( 9746): java.lang.NoSuchMethodError: No static method setForceSafeLabels(Z)V in class Landroid/content/pm/PackageItemInfo; or its super classes (declaration of 'android.content.pm.PackageItemInfo' appears in /system/framework/framework.jar)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at com.android.packageinstaller.PackageInstallerApplication.onCreate(PackageInstallerApplication.java:32)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.app.ActivityThread.access$1300(ActivityThread.java:219)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.os.Handler.dispatchMessage(Handler.java:107)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.os.Looper.loop(Looper.java:214)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at android.app.ActivityThread.main(ActivityThread.java:7356)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at java.lang.reflect.Method.invoke(Native Method)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)

06-15 15:52:15.233 E/AndroidRuntime( 9746): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

查了下资料,才发现setForceSafeLabels 方法是在 Android 12 (API 级别 31) 中引入的。

解决方法:在应用程序项目工程中的 minSdkVersion 设置为 Android 12 或更高版本,才能使用这个方法。