Android: SearchableInfo имеет значение null при использовании packageNameSuffix в скрипте сборки Gradle

Я столкнулся с этим методомgetSearchableInfo всегда возвращает ноль во времяSearchView инициализация, если я используюpackageNameSuffix в скрипте сборки Gradle проекта.

Инициализация SearchView:

final SearchManager searchManager = (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
SearchableInfo info = searchManager.getSearchableInfo(componentName);
mSearchView.setSearchableInfo(info);

Build.gradle проекта:

android {
    [...]
    buildTypes {
        debug {
            packageNameSuffix ".debug"
            versionNameSuffix "-debug"
            signingConfig signingConfigs.debug
        }
        [...]
    }
}

Если суффикс пакета не используется, данныйcomponentName являетсяComponentInfo{com.example.android/com.example.android.MapActivity} иSearchView а также связанные с нимSuggestionsProvider отлично работает

Но еслиpackageNameSuffix установлен в".debug"данныйcomponentName являетсяComponentInfo{com.example.android.debug/com.example.android.MapActivity} иSearchManager возвращаетсяnullвместо возврата соответствующегоSearchableInfo объект.

Кто-нибудь знает как получить праваSearchableInfo изSearchManager? Спасибо!

[РЕДАКТИРОВАТЬ]

В комментариях Евгений Мартинов отметил, что такое поведение может быть связано с неправильным или отсутствующим переименованием властей. Но я также настроил именование полномочий, зависящее от типа сборки, которое для простоты опущено в первоначальном посте.

Build.gradle проекта:

android {
    [...]
    sourceSets {
        debug {
            java.srcDirs = [
                'src/main/java'
            ]
            java.srcDirs = [
                'src/debug/res',
                'src/main/res'
            ]
        }
        release {
            java.srcDirs = [
                'src/main/java'
            ]
            java.srcDirs = [
                'src/release/res',
                'src/main/res'
            ]
        }
        [...]
    }
}

SRC / отлаживать / RES / значения / строить-config.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="cfg_app_name">App - Debug</string>
    <string name="cfg_authorities">com.example.debug.SuggestionsProvider</string>
    <string name="cfg_maps_key"><!-- some key --></string>
</resources>

SRC / отпускания / RES / значения / строить-config.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="cfg_app_name">App</string>
    <string name="cfg_authorities">com.example.SuggestionsProvider</string>
    <string name="cfg_maps_key"><!-- some other key --></string>
</resources>

SRC / главная / RES / XML / searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="@string/action_search_hint"
    android:label="@string/cfg_app_name"
    android:includeInGlobalSearch="false"
    android:queryAfterZeroResults="true"
    android:searchSuggestAuthority="@string/cfg_authorities"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:searchSuggestThreshold="3" />

Установка как отладки (сpackageNameSuffix вариант) и релиз apk на том же устройстве работает. Я не получаю ошибку какFailure [INSTALL_FAILED_CONFLICTING_PROVIDER]... но, как уже было сказано,SearchableInfo являетсяnull тогда.

Установка обоих apk безpackageNameSuffix Опция приводит к следующей ошибке:Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] - Installation failed since the device already has an application with the same package but a different signature.

Или я что-то здесь упускаю?

[/РЕДАКТИРОВАТЬ]

Ответы на вопрос(1)

Ваш ответ на вопрос