Android Studio 1.0 und Fehler "Bibliotheksprojekte können Anwendungs-ID nicht festlegen"


109

Nach dem Update von Android Studio auf 1.0 wird folgender Fehler angezeigt:

Fehler: Bibliotheksprojekte können die Anwendungs-ID nicht festlegen. applicationId ist in der Standardkonfiguration auf 'com.super.app' gesetzt.

Ich habe das Gradle-Plugin wie vorgeschlagen aktualisiert, aber ich habe nicht verstanden, wie ich das beheben kann.

Antworten:


208

Basierend auf diesen Informationen :

Anwendungs-ID in Bibliotheksprojekten

Sie können applicationId nicht verwenden, um das Paket eines Bibliotheksprojekts anzupassen. Der Paketname muss in Bibliotheksprojekten festgelegt (und im Manifest als Paketname angegeben) werden. Das Gradle-Plugin hat diese Einschränkung zuvor nicht durchgesetzt.

Das Entfernen der Variablen applicationId aus der build.gradleDatei der Bibliothek sollte das Problem beheben.


Danke, du fährst mich in die richtige Richtung. Ich habe eine Antwort hinzugefügt, die das "Geschmacksproblem" erklärt, das ich habe.
Seraphims

1
@Joel: Ich habe das Modul in eine Bibliothek konvertiert, aber ich kann die zu entfernende Anwendungs-ID nicht finden. Die Anwendungs-ID befindet sich nicht in der Datei build.gradle.
Kannst

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert
Nerdroid

62

Vielen Dank an Joel für seine richtige Antwort: Ich muss nur 1 Zeile aus der .gradleDatei entfernen :

defaultConfig {
        applicationId "com.super.app"   <---- remove this line
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

wird

defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

und meine AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.super.app">
...

Dies ist die richtige Lösung, wenn Sie den Paketnamen Ihrer App nicht umbenennen müssen. Um es umzubenennen, müssen Sie "Aromen" verwenden:

android {
   ...
   productFlavors {
       flavor1 {
           applicationId 'com.super.superapp'
       }
   }

Schade, dass zwei Antworten nicht überprüft werden können, da Sie ein Beispiel angegeben haben, das Joel haben sollte.
Androidcoder

1
Wenn ich die Zeile applicationID entferne, kann ich sie im Play Store veröffentlichen? (Ich meine Update) Da für Google Play keine Anwendungs-ID vorhanden ist.
Gurkan Stack vor

1
@gurkanstack Wenn Sie die Zeile in der Gradle-Datei entfernen, wird der in AndroidManifest.xml "package" definierte Namensraum für die Veröffentlichung verwendet.
Seraphim ist

1

Nur für den Fall, dass es jemandem hilft:

Als ich ein Eclipse-Projekt in Android Studio importierte, bekam ich eine Fehlermeldung ::

"Fehler: Anwendungs- und Testanwendungs-ID können nicht identisch sein"

Seltsam, aber ich habe in die build.gradle geschaut und die beiden Platzhalter gefunden, einen für die Anwendung und einen für die Testanwendung.

Ich habe die testApplicationId daraus entfernt, wie in diesem Beitrag vorgeschlagen, und dies hat mir geholfen, das Problem zu beheben.

Hinweis: Diese Erklärung bezieht sich nicht auf die in dieser Frage veröffentlichten Fehler, kann jedoch jemandem helfen, der einen ähnlichen Fehler erhält.


0

Sie können applicationId nicht für Ihre Bibliothek definieren. Wenn Sie jedoch einen Bezeichner in Ihrer Build-Datei verwenden möchten, der Ihnen den Namen Ihres Bibliothekspakets gibt, können Sie eine Variable für das Modul definieren und den Wert dann nach Bedarf verwenden.

Beispiel: Build.gradle der Bibliothek

apply plugin: 'com.android.library'

def libraryGroupId = 'com.google.example'
def libraryArtifactId = project.getName()
def libraryVersion = '1.1'

Sie können den folgenden Wert auch nach Bedarf in Ihrer Build-Datei selbst in lib verwenden.

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.