Я проверил вопрос: 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 он собирает первую библиотеку (или любую библиотеку, я не уверен) из любых модулей и запускает ее использование в вашем модуле. Это неправильно на стольких уровнях! Я объясню вам, как, пожалуйста, поправьте меня в любом месте, так как это поможет всем нам.
Вызывает вопрос лицензирования: Как здесь, я использую библиотечный модуль поставщика в проекте (Facebbok SDK в данном случае), он использует некоторые библиотеки для своих собственных целей (v4 Lib в данном случае). Теперь, как разработчик, я не знаю, какие условия лицензирования используют библиотека моего поставщика в этой сторонней библиотеке. Но тем не менее я могу использовать одну и ту же библиотеку в своем модуле, ДАЖЕ, КОГДА Я НЕ ОПРЕДЕЛЕН В МОИХ СОБСТВЕННЫХ ЗАВИСИМОСТИ, нарушая лицензионное соглашение.
Вызывает путаницу: представьте себе это, я даже не знаю, что я использую функцию из сторонней библиотеки. Поскольку я вижу, что я не определил эту библиотеку, мой build.gradle. Но внутренне я мог бы использовать функцию, которая возникла из случайной библиотеки. Редактор, конечно же, будет молчаливо импортировать классы для этого метода, и разработчик не будет иметь понятия о том, какую библиотеку он вызвал. Это именно то, что произошло здесь, поскольку я не знал, что этот метод поступает из библиотеки v4, поскольку я не импортировал его в файл build.gradle!
Невозможно обновить до последней версии: Это еще одна проблема, с которой я столкнулся. После обсуждения ниже я знаю, что AS использовал библиотеку facebook, но теперь я не могу обновить библиотеку для моего использования. Зачем? потому что facebook использовал старую библиотеку
на момент разработки. Я не могу обновить библиотеку facebook (технически я могу, но не должен), и я не хочу обновлять facebook sdk из-за некоторых других ограничений. Кроме того, нет оснований обновлять факс-книгу sdk, поскольку все мои текущие потребности выполняются из этого sdk.
Все это просто потому, что AS считает, что он лучше меня знает, какую библиотеку я должен использовать в своем собственном проекте.
Какую версию поддерживающей библиотеки вы используете? Помните, что метод групповой настройки был добавлен в NotificationCompat совсем недавно, и если вы используете старую версию библиотеки, она может отсутствовать. –
@MartinRevert Как проверить версию файла поддержки jar? –
Почему вы не используете Gradle? Прекратите использование JAR и Eclipse (ADT Tools для Eclipse устарели и неподдерживаются) и используйте Android Studio + Gradle. Вам нужно добавить недавнюю поддержку v4 в качестве зависимости в Android Studio в этом формате 'compile 'com.android.support: support-v4: 25.1.0'' Android Studio поможет вам поддерживать ваши библиотеки поддержки, предупреждая вас, когда они не обновляются. –