0

Я проверил вопрос: setGroup() is undefined for the type NotificationCompat.Builder?NotificationCompat Builder SetGroup() не определен в андроиде студии

Но это не помогло.

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

ошибка: не удается найти символ .setGroup ("группа") ^ символ: метод SetGroup (String)

На прибегая к помощи я нахожу людей, предполагающие обновить библиотеку Android-поддержки. При импорте проекта я использовал возможность сохранить файлы jar из проекта и не преобразовывать их в зависимости от android studio.Hence Я предполагаю, что один и тот же файл поддержки jar используется из папки libs проекта. Тот же код отлично работает на eclipse. При проверке я вижу, что файл поддержки jar точно такой же для обоих проектов. Затем, каким образом один метод не определен в проекте, но видим на другом. Возможно ли, что Android Studio заменяет файл поддержки jar из собственного файла jar?

Код:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
     builder.setContentTitle(text) 
       .setContentText(text) 
       .setStyle(inboxStyle) 
       .setNumber(stack.size()) 
       .setSmallIcon(R.drawable.launcher) 
       .setGroup("group") 
       .setGroupSummary(true); 

EDIT:

Я изменил зависимость согласно ниже предложение, чтобы использовать динамическую библиотеку поддержки вместо кувшина. Но все же вижу ту же ошибку, My build.gradle теперь выглядит так.

compile project(':facebookSDK') 
    compile project(':googleplayservices_lib') 
    compile 'com.android.support:support-v13:25.1.0' 
    compile files('libs/activation.jar') 
    compile files('libs/additionnal.jar') 
    // compile files('libs/android-support-v13.jar') 
    compile files('libs/eat.jar') 
    compile files('libs/gcm-server-1.0.2.jar') 
    compile files('libs/google-api-client-1.10.3-beta.jar') 
    compile files('libs/google-api-client-android2-1.10.3-beta.jar') 
    compile files('libs/google-http-client-1.10.3-beta.jar') 
    compile files('libs/google-http-client-android2-1.10.3-beta.jar') 
    compile files('libs/google-oauth-client-1.10.1-beta.jar') 
    compile files('libs/gson-2.1.jar') 
    compile files('libs/jackson-core-asl-1.9.4.jar') 
    compile files('libs/json-simple-1.1.1.jar') 
    compile files('libs/jsr305-1.3.9.jar') 
    compile files('libs/mail.jar') 

EDIT2:

На основе ниже ответ я добавил библиотеку v4 вместе v13, но все же ошибка повторяется. Есть еще подсказки? Мои текущие зависимости похожи

dependencies { 
    compile project(':facebookSDK') 
    compile project(':googleplayservices_lib') 
    compile files('libs/activation.jar') 
    compile files('libs/additionnal.jar') 
    compile files('libs/android-support-v13.jar') 
    compile 'com.android.support:support-v4:25.1.0' 
    compile files('libs/eat.jar') 
    compile files('libs/gcm-server-1.0.2.jar') 
    compile files('libs/google-api-client-1.10.3-beta.jar') 
    compile files('libs/google-api-client-android2-1.10.3-beta.jar') 
    compile files('libs/google-http-client-1.10.3-beta.jar') 
    compile files('libs/google-http-client-android2-1.10.3-beta.jar') 
    compile files('libs/google-oauth-client-1.10.1-beta.jar') 
    compile files('libs/gson-2.1.jar') 
    compile files('libs/jackson-core-asl-1.9.4.jar') 
    compile files('libs/json-simple-1.1.1.jar') 
    compile files('libs/jsr305-1.3.9.jar') 
    compile files('libs/mail.jar') 
} 

edit4:

Я также попытался это сочетание, ничего не кажется, работает :(

// compile files('libs/android-support-v13.jar') 
    compile 'com.android.support:support-v13:25.1.0' 
    compile 'com.android.support:support-v4:25.1.0' 

Я также заметил одну вещь, даже если удалить v4 из зависимостей, я не получаю ошибку компиляции при импорте классов NotificationCompat. Как это возможно? Может ли быть, что она собирает другую копию библиотеки из какого-либо другого модуля?

EDIT: 5

Основываясь на моих обсуждениях здесь с Мартином, я хотел поделиться некоторыми сведениями, которые помогут нам всем. В соответствии с Android Studio он собирает первую библиотеку (или любую библиотеку, я не уверен) из любых модулей и запускает ее использование в вашем модуле. Это неправильно на стольких уровнях! Я объясню вам, как, пожалуйста, поправьте меня в любом месте, так как это поможет всем нам.

  1. Вызывает вопрос лицензирования: Как здесь, я использую библиотечный модуль поставщика в проекте (Facebbok SDK в данном случае), он использует некоторые библиотеки для своих собственных целей (v4 Lib в данном случае). Теперь, как разработчик, я не знаю, какие условия лицензирования используют библиотека моего поставщика в этой сторонней библиотеке. Но тем не менее я могу использовать одну и ту же библиотеку в своем модуле, ДАЖЕ, КОГДА Я НЕ ОПРЕДЕЛЕН В МОИХ СОБСТВЕННЫХ ЗАВИСИМОСТИ, нарушая лицензионное соглашение.

  2. Вызывает путаницу: представьте себе это, я даже не знаю, что я использую функцию из сторонней библиотеки. Поскольку я вижу, что я не определил эту библиотеку, мой build.gradle. Но внутренне я мог бы использовать функцию, которая возникла из случайной библиотеки. Редактор, конечно же, будет молчаливо импортировать классы для этого метода, и разработчик не будет иметь понятия о том, какую библиотеку он вызвал. Это именно то, что произошло здесь, поскольку я не знал, что этот метод поступает из библиотеки v4, поскольку я не импортировал его в файл build.gradle!

  3. Невозможно обновить до последней версии: Это еще одна проблема, с которой я столкнулся. После обсуждения ниже я знаю, что AS использовал библиотеку facebook, но теперь я не могу обновить библиотеку для моего использования. Зачем? потому что facebook использовал старую библиотеку
    на момент разработки. Я не могу обновить библиотеку facebook (технически я могу, но не должен), и я не хочу обновлять facebook sdk из-за некоторых других ограничений. Кроме того, нет оснований обновлять факс-книгу sdk, поскольку все мои текущие потребности выполняются из этого sdk.

Все это просто потому, что AS считает, что он лучше меня знает, какую библиотеку я должен использовать в своем собственном проекте.

+0

Какую версию поддерживающей библиотеки вы используете? Помните, что метод групповой настройки был добавлен в NotificationCompat совсем недавно, и если вы используете старую версию библиотеки, она может отсутствовать. –

+0

@MartinRevert Как проверить версию файла поддержки jar? –

+0

Почему вы не используете Gradle? Прекратите использование JAR и Eclipse (ADT Tools для Eclipse устарели и неподдерживаются) и используйте Android Studio + Gradle. Вам нужно добавить недавнюю поддержку v4 в качестве зависимости в Android Studio в этом формате 'compile 'com.android.support: support-v4: 25.1.0'' Android Studio поможет вам поддерживать ваши библиотеки поддержки, предупреждая вас, когда они не обновляются. –

ответ

1

Ну, в соответствии с вашим EDIT вы не последуете моему полное предложение поэтому ошибка более сейчас очевидно:. NotificationCompat.Builder не реализована в поддержку v13.app *

Вы должны использовать современную поддержку v4 или вы можете использовать поддержку v7, которая простирается от версии v4, это зависит от ваших текущих или будущих потребностей и других зависимостей библиотек. Но использование одного из них должно сделать setGroup() доступным для вас, потому что обе библиотеки предлагают вспомогательный класс NotificationCompat.Bulder.

https://developer.android.com/reference/android/support/v7/app/NotificationCompat.html

Regardling точные номера версий, официальные документы, которые позволяют следить за выбросы (и их соответствующие изменения) здесь:

https://developer.android.com/topic/libraries/support-library/revisions.html

Но по моему опыту, лучше периодически проверять зависимости build.gradle, так как каждый раз, когда вы загружаете и обновляете пакеты SDK от Google, Android Studio выделяет ваши старые зависимости Google, предлагая новый номер версии для обновления.

+0

AFAIK, если вы хотите поддержать android v> 13, используйте поддержку v13 lib, если вы хотите поддерживать void v4 v4 lib v4 этой логикой, не должны ли обе библиотеки быть одинаковыми, за исключением обратной совместимости? Как один lib не имеет одного метода, а другой? –

+1

Нет, версии Vx не являются инкрементальными, они дополняют друг друга и только в некоторых особых случаях, таких как NotificationCompat, вы можете отказаться от v4 и использовать v7, если вам не нужна слишком большая ретросовместимость. Также во многих случаях они используются вместе. Поддержка v13 предлагает только эти классы в пакете приложений https://developer.android.com/reference/android/support/v13/app/package-summary.html –