Schließen Sie eine Klasse aus dem Build in Android Studio aus

Lesezeit: 5 Minuten

Benutzer-Avatar
Beyond4D

Ich habe in den letzten Monaten Android gelernt und verwendet Eklipse v4.2 (Juno) als meine IDE.

Ich versuche, zu Android Studio zu migrieren. Wie kann ich einige der Klassen aus dem Build-Pfad ausschließen, den ich noch abschließen muss?

In Eclipse war es ein einfacher Rechtsklick. Ich kann in Android Studio keinen Hinweis darauf finden.

  • Wenn Sie lernen, warum versuchen Sie, zu einem unveröffentlichten Vorschauprodukt zu migrieren, das Erfahrung benötigt, um es erfolgreich zu verwenden und die verschiedenen Fehler darin zu umgehen?

    – Simon

    22. Mai 2013 um 21:51 Uhr

  • Gute Frage Simon. Ich sehe die Schrift an der Wand. Außerdem konnte ich zwischen der Dokumentation und StackOverflow eine App erstellen, die Best Practices anwendet.

    – Jenseits von 4D

    24. Mai 2013 um 2:10 Uhr

Benutzer-Avatar
robotoaster

AFAIK IntelliJ ermöglicht das Ausschließen von Paketen. Öffnen Sie die Projektstruktur (Strg+Alt+Umschalt+S unter Linux) > Module > Registerkarte „Quellen“.

Wenn Sie jedoch nur eine Klasse ausschließen möchten, verwenden Sie die Gradle-Build-Datei.

Android Studio verwendet Gradle, also fügen Sie in der Datei build.gradle innerhalb der Android-Konfiguration ein benutzerdefiniertes SourceSet hinzu, das Ihre Klasse ausschließt, z.

android {
  compileSdkVersion 19
  buildToolsVersion "19.0.3"

  defaultConfig {
     minSdkVersion 19
     targetSdkVersion 19
     packageName "org.homelab.lab"
     testPackageName "org.homelab.lab.test"

  }
  sourceSets {
     main {
         java {
             exclude '**/SomeExcludedClass.java'
         }
     }
     androidTest {
         java {
             exclude '**/TestSomeExcludedClass.java'
        }
     }
  }
 }

  • Können wir Dateien in Build-Typen ausschließen? Wenn es möglich ist, können wir es genauso machen wie in sourceSets?

    – Ahmed

    29. September 2014 um 20:13 Uhr


  • Antwort ist veraltet. der erste Teil hat bei mir nicht funktioniert. zweiter Teil wahrscheinlich nicht

    – Vedant Agarwala

    20. Dezember 2014 um 7:52 Uhr

  • Dies funktioniert derzeit mit AndroidStudio 3.1. Das nette Feature ist, dass die Java-Klassen vom Build ignoriert werden, aber Sie können immer noch Fehler sehen, die von den Inspektionen usw. aufgelistet werden. Sehr nützlich, wenn Sie Code umgestalten und den alten Code als Referenz behalten möchten, auch wenn er mit Abhängigkeiten inkompatibel wird wie Sie Code ändern.

    – Brendon Whateley

    29. November 2017 um 20:11 Uhr

  • Es funktioniert nicht. Irgendwelche Neuigkeiten? Was hat sich geändert, seit diese Antwort gepostet wurde?

    – SirKnigget

    22. September 2020 um 19:32 Uhr

  • Irgendwelche Neuigkeiten? Tritt auch in dieses Problem ein!

    – Lawonga

    11. April 2021 um 19:32 Uhr

Funktioniert gut mit Android Studio v3.0

apply plugin: 'com.android.application'

android {
    defaultConfig {...}
    buildTypes {...}
    sourceSets {
        main {
            java {
                exclude 'com/example/full/package/path/MainActivity.java'
            }
        }
    }
}

Es geht nicht.

Vielleicht könnte es im Mai 13 zurückgehen, als die akzeptierte Antwort bereitgestellt wurde, aber nicht mehr (ab 1.2).

Hier ist das Problem:
https://code.google.com/p/android/issues/detail?id=64957

Laut den Labels zielen sie auf AS 1.5 ab, um diese Funktion hinzuzufügen.

  • Dieser Link sagt: “Die java/resources-Komponenten der Sourcesets ermöglichen Include/Exclude-Muster. Wir sollten dies für aidl/rs/jni/assets tun.” Es hört sich so an, als würden sie erwarten, dass “Java”-Ausschlüsse derzeit funktionieren.

    – Brian Weiß

    26. Mai 2015 um 0:32 Uhr

  • @BrianWhite Danke für die Korrektur. Freut mich zu hören, dass dies unterstützt wird.

    – Tom

    26. Mai 2015 um 23:57 Uhr

  • Nein, es wird nicht unterstützt. Zumindest funktioniert es bei mir nicht. Es ist nur so, dass das Problem explizit aidl/rs/jni/assets erwähnt, aber nicht java.

    – Brian Weiß

    27. Mai 2015 um 1:21 Uhr

  • Ich war ganz aufgeregt, als ich es sah jetbrains.com/idea/help/exclusing-files-from-project.html und dann wurde ich auf eine klitzekleine NOTIZ aufmerksam This action is not applicable to Java files and binaries. bah!

    – Irgendwer irgendwo

    18. November 2015 um 13:44 Uhr

Benutzer-Avatar
Lins Louis

Die Art und Weise, wie ich das Gleiche getan habe, ist,

Für Windows: Klicken Sie mit der rechten Maustaste auf die Java-Datei -> Im Explorer anzeigen -> ändern Sie die Dateierweiterung von „.java“ in „.c“.

Für Mac: Rechtsklick auf die Java-Datei -> Im Finder anzeigen -> Dateierweiterung von „.java“ in „.c“ ändern

So einfach ist das.

Verschieben in einen neuen Ordner. Rechtsklick -> Im Explorer anzeigen -> Ausschneiden und dann in einen neuen Ordner einfügen (außerhalb eines Projekts). Ich erstelle einfach einen neuen Ordner im AndroidStudioProjects-Ordner und lege sie dort ab.

  • Das ist die hässlichste Lösung, die ich mir für dieses Problem vorstellen kann und doch genau das, was ich letztendlich getan habe. 🙁

    – Bowi

    30. Juli 2019 um 8:15 Uhr

  • Wenn Sie die Datei verschieben, werden alle verbundenen Klassen und Ressourcen getrennt, und das führt zu einem weiteren Problem. Nicht gut.

    – Tuhin Subhra

    9. Juli 2020 um 12:44 Uhr

Cross-Posting von https://stackoverflow.com/a/69261642/3689782, aber es scheint sinnvoll, hier zu wiederholen.

Ich bin auf eine Möglichkeit gestoßen, dies speziell für Android-Einheitentests zu machen (aber ich gehe davon aus, dass es anpassbar ist), indem ich eine Kombination anderer Lösungen aus dem obigen Link verwende:

def filesToExclude = [
    '**/*TestOne*.kt',
    '**/*TestTwo*.kt',
    ...
]
tasks.withType(org.gradle.api.tasks.SourceTask.class).configureEach {
  it.exclude(filesToExclude)
}
android.sourceSets.test.kotlin.exclude(filesToExclude)

In meinem speziellen Fall wurden die zusätzlichen Platzhalter um den Testnamen benötigt, da andere Generationen auftraten (insbesondere Dolch mit Kapt).

Dies scheint ein etwas abgehackter Ansatz zu sein, aber es funktioniert, indem sichergestellt wird, dass das Testziel von allen Aufgaben ausgeschlossen wird, von denen es tatsächlich ausgeschlossen werden könnte (einschließlich Build- und Kapt-Aufgaben). Der sourceSets-Ausschluss ist immer noch notwendig, damit die Datei nicht zur Kompilierung abgeholt wird (ich denke, das macht das Kotlin Gradle Plugin, aber es könnte auch das Android Gradle Plugin sein – ich bin nicht gut genug im Debuggen von Gradle-Builds zu Steck es an).

  • Das ist die hässlichste Lösung, die ich mir für dieses Problem vorstellen kann und doch genau das, was ich letztendlich getan habe. 🙁

    – Bowi

    30. Juli 2019 um 8:15 Uhr

  • Wenn Sie die Datei verschieben, werden alle verbundenen Klassen und Ressourcen getrennt, und das führt zu einem weiteren Problem. Nicht gut.

    – Tuhin Subhra

    9. Juli 2020 um 12:44 Uhr

1011170cookie-checkSchließen Sie eine Klasse aus dem Build in Android Studio aus

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy