Android Studio 1.0 и ошибка «Проекты библиотеки не могут установить applicationId»


109

После обновления Android Studio до 1.0 я вижу эту ошибку:

Ошибка: в проектах библиотеки не может быть установлен applicationId. applicationId в конфигурации по умолчанию установлено значение com.super.app.

Я обновил плагин Gradle, как было предложено, но не понял, как это исправить.

Ответы:


208

Основываясь на этой информации :

ApplicationId в проектах библиотеки

Вы не можете использовать applicationId для настройки пакета проекта библиотеки. Имя пакета должно быть зафиксировано в проектах библиотеки (и указано как packageName в манифесте). Плагин Gradle ранее не применял это ограничение.

Удаление переменной applicationId из build.gradleфайла библиотеки должно решить проблему.


Спасибо, вы ведете меня в правильном направлении. Я добавил ответ, объясняющий мою проблему "вкуса".
Seraphim's

1
@Joel: я преобразовал модуль в библиотеку, но не могу найти ApplicationId, который нужно удалить. ApplicationId не указан в файле build.gradle. Подскажите, где я могу найти Android Studio 1.0.1
Кумар

Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы только по ссылке могут стать недействительными, если ссылка на страницу изменится
Nerdroid

62

Спасибо Джоэлю за его правильный ответ: мне нужно удалить только 1 строку из .gradleфайла te :

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 store? (Я имею в виду обновление), потому что не будет идентификатора приложения для google play.
стек gurkan

1
@gurkanstack, если вы удалите строку в файле Gradle, пространство имен, определенное в AndroidManifest.xml "package", будет использоваться для публикации.
Серафим

1

На всякий случай это кому-то поможет:

Когда я импортировал проект eclipse в студию Android, у меня возникла ошибка:

«Ошибка: идентификатор приложения и тестового приложения не могут совпадать»

Как ни странно, но я заглянул в build.gradle и нашел два заполнителя, один для приложения, а другой для testapplication.

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

Примечание: это объяснение не связано с ошибками, указанными в этом вопросе, но может помочь кому-то, кто получает аналогичную ошибку.


0

Вы не можете определить applicationId для своей библиотеки. Но если вы хотите использовать идентификатор в своем файле сборки, который даст вам имя вашего пакета библиотеки, вы можете определить переменную для модуля, а затем использовать значение по мере необходимости.

например: 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.