Android Studio 1.0 ed errore "I progetti di libreria non possono impostare l'ID applicazione"


109

Dopo aver aggiornato Android Studio a 1.0, vedo questo errore:

Errore: i progetti di libreria non possono impostare l'ID applicazione. applicationId è impostato su "com.super.app" nella configurazione predefinita.

Ho aggiornato il plugin Gradle come suggerito ma non ho capito come risolvere questo problema.

Risposte:


208

Sulla base di queste informazioni :

ApplicationId nei progetti di libreria

Non è possibile utilizzare applicationId per personalizzare il pacchetto di un progetto di libreria. Il nome del pacchetto deve essere corretto nei progetti di libreria (e specificato come packageName nel manifest). Il plugin Gradle non ha applicato questa restrizione in precedenza.

La rimozione della variabile applicationId dal build.gradlefile della libreria dovrebbe risolvere il problema.


Grazie, mi porti nella giusta direzione. Ho aggiunto una risposta che spiega il problema di "sapore" che ho.
Seraphim's

1
@ Joel: ho convertito il modulo in una libreria, ma non riesco a trovare ApplicationId da rimuovere. ApplicationId non è dr nel file build.gradle. puoi dirmi dove posso trovare in Android Studio 1.0.1
kumar

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo link possono diventare non valide se la pagina collegata cambia
Nerdroid

62

Grazie a Joel per la sua risposta corretta: devo rimuovere solo 1 riga dal .gradlefile te :

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

diventa

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

e il mio AndroidManifest.xml

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

Questa è la soluzione giusta se non hai bisogno di rinominare il nome del pacchetto della tua app. Per rinominarlo devi usare "sapori":

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

Peccato che due risposte non possano essere verificate perché hai incluso un esempio che Joel dovrebbe avere.
Androidcoder

1
Se rimuovo la riga applicationID, posso pubblicare in esso Play Store? (Intendo aggiornare) Perché non ci sarà alcun ID applicazione per Google Play.
pila gurkan il

1
@gurkanstack se rimuovi la riga nel file Gradle, per la pubblicazione verrà utilizzato lo spazio dei nomi definito nel "pacchetto" AndroidManifest.xml.
Seraphim il

1

Solo nel caso in cui aiuti qualcuno:

Quando ho importato un progetto Eclipse in Android Studio, ho ricevuto un errore:

"Errore: l'applicazione e l'ID dell'applicazione di prova non possono essere uguali"

Strano però, ma ho esaminato build.gradle e ho trovato i due segnaposto, uno per l'applicazione e l'altro per testaplication.

Ho rimosso testApplicationId da quello come suggerito in questo post e questo mi ha aiutato a risolvere il problema.

Nota: questa spiegazione non è correlata agli errori pubblicati in questa domanda, ma potrebbe aiutare qualcuno che riceve un errore simile.


0

Non è possibile definire applicationId per la propria libreria. Ma nel caso in cui desideri utilizzare un identificatore nel tuo file di build, che ti darà il nome del pacchetto della libreria, puoi definire una variabile per il modulo e quindi utilizzare il valore come richiesto.

ad esempio: build.gradle della libreria

apply plugin: 'com.android.library'

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

Inoltre, puoi usare il valore di seguito secondo necessità nel tuo file di build stesso in lib.

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.