Получите «ошибка: невозможно получить доступ к FragmentActivity» после обновления моего Android SDK - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть приложение Android, основанное на библиотеке libuvccamera.

Моя проблема возникла после обновления моего SDK до последней версии.

Когда я пытаюсь "Создать проект""это работает хорошо.

Но когда я пытаюсь запустить проект, у меня появляется следующее сообщение об ошибке:

error: невозможно получить доступ к FragmentActivity

файл класса для android.support.v4.app.FragmentActivity не найден

Примечание. Некоторые входные файлы используют или отменяют устаревший API.

в этой конкретной строке:

baseActivity.setPath(path);

Эта строка является частью этой функции:

public void handleUpdateMedia(final String path) {
            if (DEBUG) Log.v(TAG_THREAD, "handleUpdateMedia:path=" + path);
            mHandler.setPath(path);
            final Activity parent=mWeakParent.get();

            BaseActivity baseActivity=(BaseActivity) parent;
            if (baseActivity != null) {
                baseActivity.setPath(path);
            }
            final boolean released=(mHandler == null) || mHandler.mReleased;
            if (parent != null && parent.getApplicationContext() != null) {
                try {
                    if (DEBUG) Log.i(TAG, "MediaScannerConnection#scanFile");
                    MediaScannerConnection.scanFile(parent.getApplicationContext(), new String[]{path}, null, null);
                } catch (final Exception e) {
                    Log.e(TAG, "handleUpdateMedia:", e);
                }
                if (released || parent.isDestroyed())
                    handleRelease();
            } else {
                Log.w(TAG, "MainActivity already destroyed");
                // give up to add this movie to MediaStore now.
                // Seeing this movie on Gallery app etc. will take a lot of time.
                handleRelease();
            }
        }

, которая находится в библиотеке usbCameraCommon (одна из библиотек, используемая библиотекой libuvccamera).

делает кто-нибудьеще сталкивался с такой проблемой?

Спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Я нашел решение, но есть лучшее решение, я очень признателен, если кто-то может написать его здесь более подробно, и я объясню.

Причиной провала проекта было неправильное использование implementation и api в файле gradle проекта libuvccamera.

Я просто использовал implementation для всех проектов зависимостей, которые теперь я знаю, что это неправильно, но я до сих пор не понимаю различий между ними.

Так что код, который внизне работало:

dependencies {
    implementation fileTree(dir: new File(buildDir, 'libs'), include: '*.jar')
    implementation "com.android.support:support-annotations:${supportLibVersion}"
    implementation 'com.android.support:support-v4:25.3.1'
    implementation ("com.serenegiant:common:${commonLibVersion}") {
        exclude module: 'support-v4'
    }
}

И когда я возвращаю старый код, он работает:

dependencies {
    compile fileTree(dir: new File(buildDir, 'libs'), include: '*.jar')
    compile "com.android.support:support-annotations:${supportLibVersion}"
    compile 'com.android.support:support-v4:25.3.1'
    compile ("com.serenegiant:common:${commonLibVersion}") {
        exclude module: 'support-v4'
    }
}

Я действительно ценю, если кто-то может решить это правильно с небольшим количеством объяснений.

Спасибо!

ОБНОВЛЕНИЕ:

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

dependencies {
    implementation fileTree(dir: new File(buildDir, 'libs'), include: '*.jar')
    implementation "com.android.support:support-annotations:${supportLibVersion}"
    api 'com.android.support:support-v4:25.3.1'
    api("com.serenegiant:common:${commonLibVersion}") {
        exclude module: 'support-v4'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...