安卓安全异常:应用已冻结

22

有没有人看到过这个错误?应用程序在打开时立即崩溃,因为它无法启动默认活动。

Failure starting process com.xyz
                                                java.lang.SecurityException: Package com.xyz is currently frozen!
                                                    at com.android.server.pm.PackageManagerService.checkPackageStartable(PackageManagerService.java:3610)
                                                    at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3791)
                                                    at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3751)
                                                    at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3640)
                                                    at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1582)
                                                    at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:2663)
                                                    at com.android.server.am.ActivityStack.resumeTopActivityUncheckedLocked(ActivityStack.java:2215)
                                                    at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:2066)
                                                    at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:2056)
                                                    at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:5270)
                                                    at com.android.server.am.ActivityManagerService.removeProcessLocked(ActivityManagerService.java:6645)
                                                    at com.android.server.am.ActivityManagerService.killPackageProcessesLocked(ActivityManagerService.java:6289)
                                                    at com.android.server.am.ActivityManagerService.forceStopPackageLocked(ActivityManagerService.java:6421)
                                                    at com.android.server.am.ActivityManagerService$MainHandler.handleMessage(ActivityManagerService.java:2079)
                                                    at android.os.Handler.dispatchMessage(Handler.java:105)
                                                    at android.os.Looper.loop(Looper.java:164)
                                                    at android.os.HandlerThread.run(HandlerThread.java:65)
4个回答

10
您的应用程序可能会遇到“冻结帧”问题(请参见此处:https://developer.android.com/topic/performance/vitals/frozen.html)。如果您的应用程序中某个部分加载时间超过700毫秒,则会发生这种情况。建议查看Android Vital以了解是什么导致您的应用程序挂起。也许您在某个地方有一个无限循环。此外,请检查是否有除此之外的任何其他错误消息。

这不是导致错误的原因;请看我的答案,我会追踪这个错误消息来自哪里。 - mhansen
@mhansen,考虑到我的答案已经有4年了,而且Android SDK发展迅速,我会相信你的话。 - Janac Meena

1

你的包被冻结了,因为Android正在更新你的应用程序包(例如通过Play Store更新或adb install)。

错误来自PackageManagerService

            case PACKAGE_STARTABILITY_FROZEN:
                throw new SecurityException("Package " + packageName + " is currently frozen!");

PACKAGE_STARTABILITY_FROZEN被定义在上面

    /**
     * Used as the result code of the {@link Computer#getPackageStartability(boolean, String, int,
     * int)} to indicate the given package is <b>not</b> allowed to start because it's currently
     * frozen.
     */
    public static final int PACKAGE_STARTABILITY_FROZEN = 3;

这只会从ComputerEngine返回:

        if (mFrozenPackages.containsKey(packageName)) {
            return PackageManagerService.PACKAGE_STARTABILITY_FROZEN;
        }

这是在PackageFreezer中设置的:

/**
 * Class that freezes and kills the given package upon creation, and
 * unfreezes it upon closing. This is typically used when doing surgery on
 * app code/data to prevent the app from running while you're working.
 */
final class PackageFreezer implements AutoCloseable {

0

我的应用在一些本地代码中启动时出现了abort异常。


-1

检查onCreate中的setContentView是否指向正确或现有的布局。

ex: setContentView(R.layout.activity_LAYOUTNAME);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接