Android Studio 1.0 та помилка "Бібліотечні проекти не можуть встановити applicationId"


109

Після оновлення Android Studio до 1.0 я бачу цю помилку:

Помилка: бібліотечні проекти не можуть встановити applicationId. У налаштуваннях за замовчуванням applicationId встановлено на "com.super.app".

Я оновив плагін Gradle, як було запропоновано, але не зрозумів, як це виправити.

Відповіді:


208

На основі цієї інформації :

ApplicationId у бібліотечних проектах

Ви не можете використовувати applicationId для налаштування пакету бібліотечного проекту. Ім'я пакета має бути зафіксовано в бібліотечних проектах (і вказано як макет пакету в маніфесті). Плагін Gradle раніше не застосовував це обмеження.

Видалення змінної applicationId з build.gradleфайлу бібліотеки повинно вирішити проблему.


Спасибі, ви ведете мене в потрібному напрямку. Я додав відповідь, яка пояснює проблему "аромату" у мене.
— Серафима

1
@Joel: я перетворив модуль у бібліотеку, але я не в змозі знайти ApplicationId для видалення. ApplicationId не є dr у файлі build.gradle. ви можете сказати мені, де я можу знайти в Android studio 1.0.1
— kumar

Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться
— Nerdroid

62

Дякую Джоелю за його правильну відповідь: мені потрібно видалити лише 1 рядок із .gradleфайлу:

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

стає

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

і мій AndroidManifest.xml

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

Це правильне рішення, якщо вам не потрібно перейменовувати назву пакета свого додатка. Щоб перейменувати його, потрібно використовувати "ароматизатори":

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

Дуже погано два відповіді неможливо перевірити, оскільки ви включили приклад, який повинен мати Джоел.
— Androidcoder

1
Якщо я видалю рядок applicationID, чи можу я публікувати в ньому магазин Play? (Я маю на увазі оновлення), оскільки для google play не буде ідентифікатора програми.
— gurkan stack

1
@gurkanstack якщо ви видалите рядок у файлі Gradle, простір імен, визначений у AndroidManifest.xml "пакет", буде використовуватися для публікації.
— Серафима

1

Просто обкладіть, що це допомагає комусь:

Коли я імпортував проект затемнення в студію Android, у мене з’явилася помилка:

"Помилка: ідентифікатор програми та тестовий додаток не можуть бути однаковими"

Дивно, але я заглянув у build.gradle і виявив два заповнювачі, одного для програми та іншого для тестаплікації.

Я видалив testApplicationId з того, що пропонується в цій публікації, і це допомогло мені вирішити проблему.

Примітка. Це пояснення не пов’язане з помилками, розміщеними в цьому запитанні, але може допомогти тому, хто отримує подібну помилку.


0

Ви не можете визначити applicationId для своєї lib. Але якщо ви хочете використовувати ідентифікатор у вашому файлі збірки, який дасть вам назву вашого бібліотечного пакета, ви можете визначити змінну для модуля, а потім використовувати необхідне значення.

наприклад: build.gradle бібліотеки

apply plugin: 'com.android.library'

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

Крім того, ви можете використовувати наведене нижче значення за потреби у вашому файлі збірки у lib.

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.