Обновлен до android studio 4, теперь сообщает, что основное действие 'недоступно из класса android .app.Instrumentation' - PullRequest
0 голосов
/ 12 июля 2020

Это происходит каждый раз, когда я обновляюсь, обычно по разным причинам: я только что обновился до Android Studio 4, я нацелен на android 5 / Api21 вверх. На этот раз моя активность вылетает при запуске с утверждением, что мое основное действие 'недоступно из класса android .app.Instrumentation'

Я не уверен, что такое 'android .app.Instrumentation' или есть ли в моем коде какое-то требование, зависимость или android студия, которая этого требует. Мой основной класс - publi c, поэтому он должен его видеть.

Объявление моего класса выглядит так:

public class AnthracitePlayer extends AppCompatActivity

и AppCompatActivity, что, как мне кажется, я использовал Удалить строку заголовка объявляется так:

public class AppCompatActivity extends FragmentActivity implements AppCompatCallback,
        TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider {

, а мой метод создания начинается так:

Override
    public void onCreate(Bundle savedInstanceState)
    {
        Log.d(TAG,"Entered onCreate");
        super.onCreate(savedInstanceState);
        Display display = getWindowManager().getDefaultDisplay();

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        String displayName = display.getName();

Я не уверен, что это нарушает работу инструментария. Следующая ошибка:

07-12 14: 32: 26.251 20528-20528 / totga.anthraciteplayerapi21 D / ResourcesManager: создание нового AssetManager и установка /data/app/totga.anthraciteplayerapi21-2/base .apk 07-12 14: 32: 26.341 20528-20528 / totga.anthraciteplayerapi21 D / Android Время выполнения: Завершение работы ВМ 07-12 14: 32: 26.341 20528-20528 / totga.anthraciteplayerapi21 E / Android Время выполнения: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: totga .anthraciteplayerapi21, PID: 20528 java .lang.RuntimeException: невозможно создать экземпляр действия ComponentInfo {totga.anthraciteplayerapi21 / totga.anthraciteplayerapi21.AnthracitePlayer}: java .lang.IlleplayerAccessanthracitexception: недоступен класс android .app.Instrumentation в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2515) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 2723) в android .app.ActivityThread.access $ 900 (ActivityThread. java: 172) в android .app.ActivityThread $ H.handleMessa ge (ActivityThread. java: 1422) в android .os.Handler.dispatchMessage (Handler. java: 102) в android .os.Looper.l oop (Looper. java: 145 ) в android .app.ActivityThread.main (ActivityThread. java: 5832) в java .lang.reflect.Method.invoke (собственный метод) в java .lang.reflect.Method.invoke (Method . java: 372) на com. android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 1399) на com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1194) Вызвано: java .lang.IllegalAccessException: totga.anthraciteplayerapi21.AnthracitePlayer () недоступен из класса android .app.Instrumentation в java .lang.Class.newInstance (Class. java: 1647) в android .app.Instrumentation.newActivity (Instrumentation. java: 1079) в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 2505) в android .app.ActivityThread .handleLaunchActivity (ActivityThread. java: 2723) в android .app.ActivityThread.access $ 900 (ActivityThread. java: 172) в android .app.ActivityThread $ H.handleMessage (Ac ttivityThread. java: 1422) в android .os.Handler.dispatchMessage (Handler. java: 102) в android .os.Looper.l oop (Looper. java: 145) в android .app.ActivityThread.main (ActivityThread. java: 5832) в java .lang.reflect.Method.invoke (собственный метод) в java .lang.reflect.Method.invoke (Method. java: 372) на com. android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 1399) на com. android .internal.os.ZygoteInit.main (ZygoteInit. java : 1194)

1 Ответ

0 голосов
/ 13 июля 2020

Мне удалось запустить это (хотя сейчас у меня новые проблемы), изменив onCreate с publi c на «protected». Я думаю, что произошло то, что либо разрешения в родительском классе внутри библиотеки android изменились, либо правила, регулирующие уровни доступа, стали более строгими - publi c должен был работать в любом случае.

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