Preference-v7 - "entries" already defined

  • Antworten:4
  • Bentwortet
Sven R.
  • Forum-Beiträge: 1.904

05.09.2015, 22:58:15 via Website

Moin!

Ich möchte gerne die Support Preference-v7 lib benutzen. Also kommt in die build.gradle:

    compile "com.android.support:preference-v7:23.0.1"

Wenn ich dann das Projekt builde, gibt es eine Fehlermeldung:

    Attribute "entries" has already been defined

Dieser Fehler kommt nicht direkt von der support lib sondern immer von anderen libs. Nehme ich die "fehlerhafte" lib raus, sucht sich Gradle eine andere aus :( Das Problem kann nur gelöst werden, indem ich die Preference lib raus nehme. Die möchte ich aber gerne nutzen...

Mein dependencies in der build.gradle:

dependencies {
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.android.support:support-v4:23.0.1"
    compile "com.android.support:design:23.0.1"
    compile "com.android.support:preference-v7:23.0.1"
    compile "org.roboguice:roboguice:3.+"
    provided "org.roboguice:roboblender:3.+"
    compile("com.mikepenz:aboutlibraries:5.1.1@aar") {
        transitive = true
    }
    compile "com.google.code.gson:gson:2.3.1"
    compile "org.jsoup:jsoup:1.8.3"
    compile 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3'
    compile 'com.intellij:annotations:12.0'
    compile 'com.github.xiprox.errorview:library:2.2.0'
    compile 'com.github.paolorotolo:appintro:3.2.0'
}

Vermutungen:

  • Die Preference lib benutzt libs, die ich auch benutze(v4?). Wenn die zusammenkommen, machst boom, weil beide "entries" definieren.
  • Irgendwas mit den Build tools? Ich habe auf 23.0.1. compileSdk auch 23, targetSdk 23, alle support libs auch 23.0.1

Für Hilfe bin ich sehr dankbar! :)

Sven

— geändert am 05.09.2015, 23:01:26

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.958

05.09.2015, 23:10:21 via App

Hallo Sven,

würde deine Vermutung zur Tatsache erklären, das eine andere Lib die von dir eingebundene Lib mit beinhaltet, möchte sagen das man es aber auch ausschließen kann.

Edit mit exclude sollte das gehen.

— geändert am 05.09.2015, 23:13:34

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Sven R.
  • Forum-Beiträge: 1.904

05.09.2015, 23:54:01 via Website

Habs gelöst:

  1. Mein komplettes Projektverzeichnis nach "entries" durchsucht.
  2. In einer stylable in attrs.xml gefunden. Für ein eigenes Custom View. Dort stand dann sowas:

    <attr name="entries" format="reference" />
    
  3. Den name geändert(temporär "eintraege")

  4. Dann natürlich auch die anderen Vorkommen geändert
  5. Und es funktioniert!

Jetzt aber die Frage: Kann ich wirklich nicht ohne Rücksicht auf alle libs der Welt frei den name einer styleable für ein eigenes Custom View aussuchen?!

Edit: So im Nachhinein: Die Build tools sind ganz schön fies gewesen, weil sie gar nicht auf meine xml verwiesen haben. Bei größeren Projekten könnte das sehr schwierig werden.

— geändert am 06.09.2015, 10:24:50

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Sven R.
  • Forum-Beiträge: 1.904

06.09.2015, 10:31:04 via App

Okay, habs wahrscheinlich gelöst(aber noch nicht ausprobiert):

Ich habe mein eigenen Namespace in der xml nicht genommen, sondern den von den app tools. Zufälligerweise hatte dies auch das Attribut entries. Also werde ich einfach meinen Namespace mitimportieren und dann statt

app:entries

das hier

meinView:entries

nehmen.

— geändert am 06.09.2015, 11:40:43

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Sven R.
  • Forum-Beiträge: 1.904

09.09.2015, 20:25:05 via Website

Jo, geht. Ich kann sogar den "allgemeinen" Namespace nehmen und ihn irgendwie benennen, wie ich will und Gradle suchst sich dann das richtige raus.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten