Android Studio 1.0 ve "Kitaplık projeleri uygulama kimliğini ayarlayamıyor" hatası


109

Android Studio'yu 1.0'a güncelledikten sonra şu hatayı görüyorum:

Hata: Kitaplık projeleri applicationId'yi ayarlayamaz. applicationId, varsayılan yapılandırmada "com.super.app" olarak ayarlanmıştır .

Gradle eklentisini önerildiği gibi güncelledim ancak bunu nasıl düzelteceğimi anlamadım.

Yanıtlar:


208

Bu bilgilere göre :

Kütüphane Projelerinde ApplicationId

Bir kitaplık projesinin paketini özelleştirmek için applicationId'yi kullanamazsınız. Paket adı, kitaplık projelerinde sabitlenmelidir (ve bildirimde paketAdı olarak belirtilmelidir). Gradle eklentisi bu kısıtlamayı daha önce uygulamadı.

ApplicationId değişkeninin kitaplığın build.gradledosyasından kaldırılması sorunu çözmelidir.


Teşekkürler, beni doğru yöne götürüyorsun. Sahip olduğum "lezzet" sorununu açıklayan bir yanıt ekledim.
Seraphim

1
@Joel: Modülü bir kitaplığa dönüştürdüm, ancak kaldırılacak ApplicationId'yi bulamıyorum. ApplicationId, build.gradle dosyasında dr değildir. Android studio 1.0.1'de nerede bulabileceğimi söyleyebilir misin
kumar

Bu bağlantı soruyu cevaplayabilirken, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantı verilen sayfa değişirse yalnızca bağlantı yanıtları geçersiz hale gelebilir
Nerdroid

62

Doğru cevabı için Joel'e teşekkürler: te .gradledosyasından sadece 1 satırı kaldırmam gerekiyor :

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

olur

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

ve AndroidManifest.xml dosyam

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

Uygulamanızın paket adını yeniden adlandırmanız gerekmiyorsa bu doğru çözümdür. Yeniden adlandırmak için "tatlar" kullanmanız gerekir:

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

Joel'in alması gereken bir örneği eklediğiniz için iki yanıtın kontrol edilememesi çok kötü.
Androidcoder

1
Uygulama kimliği satırını kaldırırsam, Play Store'da yayınlayabilir miyim? (Güncellemeyi kastediyorum) Çünkü google play için uygulama kimliği olmayacak.
gurkan stack

1
@gurkanstack Gradle dosyasındaki satırı kaldırırsanız, AndroidManifest.xml "paketinde" tanımlanan ad alanı yayınlama için kullanılacaktır.
Seraphim

1

Sadece birine yardımcı olması için:

Bir tutulma projesini android stüdyosuna aktardığımda bir hata aldım:

"Hata: Uygulama ve test uygulama kimliği aynı olamaz"

Garip ama build.gradle'a baktım ve biri uygulama, diğeri test uygulaması için iki yer tutucu buldum.

TestApplicationId'yi bu gönderide önerildiği gibi kaldırdım ve bu sorunu çözmeme yardımcı oldu.

Not: Bu açıklama, bu soruda yayınlanan hatalarla ilgili değildir, ancak benzer bir hata alan birine yardımcı olabilir.


0

Kitaplığınız için applicationId tanımlayamazsınız. Ancak, yapı dosyanızda size kitaplık paketinizin adını verecek bir tanımlayıcı kullanmak istemeniz durumunda, modül için bir değişken tanımlayabilir ve ardından değeri gerektiği gibi kullanabilirsiniz.

örneğin: Library's build.gradle

apply plugin: 'com.android.library'

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

Ayrıca, aşağıdaki değeri gerektiği gibi, inşa dosyanızın kendisinde lib'de kullanabilirsiniz.

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.