Android Studio 1.0 e erro “Projetos de biblioteca não podem definir applicationId”

109

Depois de atualizar o Android Studio para 1.0, vejo este erro:

Erro: projetos de biblioteca não podem definir applicationId. applicationId é definido como 'com.super.app' na configuração padrão.

Atualizei o plug-in Gradle conforme sugerido, mas não entendi como consertar isso.

Serafim
fonte

Respostas:

208

Com base nesta informação :

ApplicationId em projetos de biblioteca

Você não pode usar applicationId para personalizar o pacote de um projeto de biblioteca. O nome do pacote deve ser corrigido em projetos de biblioteca (e especificado como packageName no manifesto). O plug-in Gradle não aplicou essa restrição anteriormente.

Remover a variável applicationId do build.gradlearquivo da biblioteca deve resolver o problema.

Joel
fonte
Obrigado, você me leva na direção certa. Acrescentei uma resposta que explica o problema de "sabor" que tenho.
Serafim de
1
@Joel: converti o módulo em uma biblioteca, mas não consigo encontrar o ApplicationId para remover. ApplicationId não é dr no arquivo build.gradle. você pode me dizer onde posso encontrar no Android Studio 1.0.1
kumar
Embora este link possa responder à pergunta, é melhor incluir as partes essenciais da resposta aqui e fornecer o link para referência. As respostas somente com link podem se tornar inválidas se a página do link mudar
Nerdroid
62

Agradeço a Joel pela resposta correta: Preciso remover apenas 1 linha do .gradlearquivo:

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

torna-se

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

e meu AndroidManifest.xml

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

Esta é a solução certa se você não precisa renomear o nome do pacote do seu aplicativo. Para renomeá-lo, você precisa usar "sabores":

android {
   ...
   productFlavors {
       flavor1 {
           applicationId 'com.super.superapp'
       }
   }
Serafim
fonte
Pena que duas respostas não podem ser verificadas, pois você incluiu um exemplo que Joel deveria ter.
Androidcoder
1
Se eu remover a linha do applicationID, posso publicar na Play Store? (Quero dizer, atualizar) Porque não haverá ID do aplicativo para o Google Play.
pilha gurkan
1
@gurkanstack se você remover a linha no arquivo Gradle, o namespace definido em AndroidManifest.xml "pacote" será usado para publicação.
Serafim em
1

Apenas no caso de ajudar alguém:

Quando importei um projeto Eclipse para o Android Studio, recebi um erro:

"Erro: o aplicativo e o ID do aplicativo de teste não podem ser iguais"

Estranho, porém, mas olhei para o build.gradle e encontrei os dois espaços reservados, um para o aplicativo e outro para o aplicativo de teste.

Removi o testApplicationId como sugerido nesta postagem e isso me ajudou a resolver o problema.

Observação: esta explicação não está relacionada aos erros postados nesta pergunta, mas pode ajudar alguém que está recebendo um erro semelhante.

Kunal Khaire
fonte
0

Você não pode definir applicationId para sua biblioteca. Mas, caso você queira usar um identificador em seu arquivo de construção, que fornecerá o nome do seu pacote de biblioteca, você pode definir uma variável para o módulo e então usar o valor conforme necessário.

por exemplo: build.gradle da biblioteca

apply plugin: 'com.android.library'

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

Além disso, você pode usar o valor abaixo conforme necessário em seu próprio arquivo de construção em lib.

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
Mayuri Khinvasara
fonte