Приложение Android падает при установке через Eclipse - PullRequest
9 голосов
/ 22 февраля 2012

Я получаю следующее исключение при каждой переустановке через eclipse.Это происходит каждый раз, когда я переустанавливаю приложение, которое сейчас находится на переднем плане.

Я ожидаю, что эта ошибка возникает только во время разработки, потому что я вызываю удаление работающего приложения через Eclipse.

Кто-нибудь видел эту ошибку на пользовательских телефонах?

Это началось для меня, когда я перешел на Galaxy Nexus с ICS.

02-22 11:31:07.098: E/AndroidRuntime(479): FATAL EXCEPTION: main
02-22 11:31:07.098: E/AndroidRuntime(479): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.access$2200(ActivityThread.java:117)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.os.Looper.loop(Looper.java:123)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-22 11:31:07.098: E/AndroidRuntime(479):  at java.lang.reflect.Method.invokeNative(Native Method)
02-22 11:31:07.098: E/AndroidRuntime(479):  at java.lang.reflect.Method.invoke(Method.java:507)
02-22 11:31:07.098: E/AndroidRuntime(479):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 11:31:07.098: E/AndroidRuntime(479):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 11:31:07.098: E/AndroidRuntime(479):  at dalvik.system.NativeStart.main(Native Method)
02-22 11:31:07.098: E/AndroidRuntime(479): Caused by: java.lang.NullPointerException
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:346)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.LoadedApk.getClassLoader(LoadedApk.java:291)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.LoadedApk.makeApplication(LoadedApk.java:458)
02-22 11:31:07.098: E/AndroidRuntime(479):  ... 11 more

В приведенных выше журналах яне нашел ничего связанного с моим заявлением.Но все равно он падает.

Может кто-нибудь сказать мне, в чем причина этого?Это ошибка в Ice Cream Sandwich на Galaxy Nexus?

Ответы [ 3 ]

1 голос
/ 27 марта 2012

У меня возникла эта проблема, когда что-то в XML не так, может быть, вам просто нужно восстановить ваш R.java

0 голосов
/ 28 марта 2012

У меня недавно была эта проблема, но она появилась в IDEA. Мне пришлось переключить средний проект на Eclipse - ой! В конце концов, я не получил хороших ответов, после того, как я закончил проект, я вернулся в IDEA и попробовал снова. Окончательное решение состояло в том, чтобы переместить проект из моей рабочей области, удалить все, кроме моего источника и ресурсов, а затем создать новый проект из существующих источников. Я потратил впустую часы, пытаясь понять это, и это может сработать для вас в Eclipse. Стоит попробовать ...

Удачи

0 голосов
/ 22 февраля 2012

У вас нулевой указатель на строке 346 в методе initializeJavaContextClassLoader.

02-22 11:31:07.098: E/AndroidRuntime(479): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:346)

Редактировать

Вот метод из GrepCode / com.google.android / android / 2.3_r1 / android.app.LoadedApk (начиная с line 326)

private void initializeJavaContextClassLoader() {
    IPackageManager pm = ActivityThread.getPackageManager();
    android.content.pm.PackageInfo pi;
    try {
        pi = pm.getPackageInfo(mPackageName, 0);
    } catch (RemoteException e) {
        throw new AssertionError(e);
    }
    /*
     * Two possible indications that this package could be
     * sharing its virtual machine with other packages:
     *
     * 1.) the sharedUserId attribute is set in the manifest,
     *     indicating a request to share a VM with other
     *     packages with the same sharedUserId.
     *
     * 2.) the application element of the manifest has an
     *     attribute specifying a non-default process name,
     *     indicating the desire to run in another packages VM.
     */
    boolean sharedUserIdSet = (pi.sharedUserId != null);
    boolean processNameNotDefault =
            (pi.applicationInfo != null &&
            !mPackageName.equals(pi.applicationInfo.processName));
    boolean sharable = (sharedUserIdSet || processNameNotDefault);
    ClassLoader contextClassLoader =
            (sharable)
            ? new WarningContextClassLoader()
    : mClassLoader;
            Thread.currentThread().setContextClassLoader(contextClassLoader);
}

Похоже, вы пытаетесь использовать виртуальную машину совместно с другим пакетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...