Android Studio 1.0 dan kesalahan "Proyek perpustakaan tidak dapat menyetel applicationId"

109

Setelah memperbarui Android Studio ke 1.0, saya melihat kesalahan ini:

Kesalahan: Proyek perpustakaan tidak dapat menyetel applicationId. applicationId disetel ke 'com.super.app' dalam konfigurasi default.

Saya memperbarui plugin Gradle seperti yang disarankan tetapi saya tidak mengerti cara memperbaikinya.

Seraphim
sumber

Jawaban:

208

Berdasarkan info ini :

ApplicationId di Proyek Perpustakaan

Anda tidak dapat menggunakan applicationId untuk menyesuaikan paket proyek perpustakaan. Nama paket harus diperbaiki dalam proyek perpustakaan (dan ditetapkan sebagai nama paket dalam manifes). Plugin Gradle tidak memberlakukan pembatasan ini sebelumnya.

Menghapus variabel applicationId dari file perpustakaan build.gradleseharusnya menyelesaikan masalah.

Joel
sumber
Terima kasih, Anda mengantarkan saya ke arah yang benar. Saya menambahkan jawaban yang menjelaskan masalah "rasa" yang saya miliki.
Seraphim's
1
@ Joel: saya mengubah modul menjadi perpustakaan, tetapi saya tidak dapat menemukan ApplicationId untuk dihapus. ApplicationId bukan dr dalam file build.gradle. dapatkah Anda memberi tahu saya di mana saya dapat menemukannya di Android studio 1.0.1
kumar
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban tautan saja bisa menjadi tidak valid jika halaman tertaut berubah
Nerdroid
62

Terima kasih kepada Joel untuk jawaban yang benar: Saya hanya perlu menghapus 1 baris dari .gradlefile te :

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

menjadi

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

dan AndroidManifest.xml saya

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

Ini adalah solusi yang tepat jika Anda tidak perlu mengganti nama paket aplikasi Anda. Untuk mengganti namanya, Anda perlu menggunakan "flavours":

android {
   ...
   productFlavors {
       flavor1 {
           applicationId 'com.super.superapp'
       }
   }
Seraphim
sumber
Dua jawaban yang terlalu buruk tidak dapat diperiksa karena Anda memasukkan contoh yang seharusnya dimiliki oleh Joel.
Androidcoder
1
Jika saya menghapus baris applicationID, Dapatkah saya mempublikasikan di dalamnya Play store? (Maksud saya update) Karena tidak akan ada id aplikasi untuk google play.
gurkan stack
1
@gurkanstack jika Anda menghapus baris dalam file Gradle, ruang nama yang ditentukan dalam "paket" AndroidManifest.xml akan digunakan untuk pubblication.
Seraphim
1

Hanya memetikan itu membantu seseorang:

Ketika saya mengimpor proyek eclipse ke studio android, saya mendapat kesalahan ::

"Kesalahan: Aplikasi dan ID aplikasi uji tidak boleh sama"

Aneh, tetapi saya melihat ke build.gradle dan menemukan dua placeholder, satu untuk aplikasi dan lainnya untuk testapplication.

Saya menghapus testApplicationId dari itu seperti yang disarankan dalam posting ini dan ini membantu saya menyelesaikan masalah.

Catatan: Penjelasan ini tidak terkait dengan kesalahan yang diposting dalam pertanyaan ini, tetapi mungkin membantu seseorang yang mendapatkan kesalahan serupa.

Kunal Khaire
sumber
0

Anda tidak dapat menentukan applicationId untuk lib Anda. Tetapi jika Anda ingin menggunakan pengenal dalam file build Anda, yang akan memberi Anda, nama paket library Anda, Anda dapat menentukan variabel untuk modul dan kemudian menggunakan nilai yang diperlukan.

misal: Library's build.gradle

apply plugin: 'com.android.library'

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

Selain itu, Anda dapat menggunakan nilai di bawah ini sesuai kebutuhan dalam file build Anda sendiri di lib.

android {
compileSdkVersion 28

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