Android Studio 1.0 และข้อผิดพลาด“ โครงการไลบรารีไม่สามารถตั้งค่า applicationId”


109

หลังจากอัปเดต Android Studio เป็น 1.0 ฉันเห็นข้อผิดพลาดนี้:

ข้อผิดพลาด: โปรเจ็กต์ไลบรารีไม่สามารถตั้งค่า applicationId applicationId ถูกตั้งค่า เป็น 'com.super.app' ในการกำหนดค่าเริ่มต้น

ฉันอัปเดตปลั๊กอิน Gradle ตามที่แนะนำ แต่ไม่เข้าใจวิธีแก้ไข

คำตอบ:


208

จากข้อมูลนี้:

ApplicationId ในโครงการไลบรารี

คุณไม่สามารถใช้ applicationId เพื่อปรับแต่งแพ็คเกจของโปรเจ็กต์ไลบรารี ชื่อแพ็กเกจต้องได้รับการแก้ไขในไลบรารีโปรเจ็กต์ (และระบุเป็น packageName ในไฟล์ Manifest) ปลั๊กอิน Gradle ไม่ได้บังคับใช้ข้อ จำกัด นี้ก่อนหน้านี้

การลบตัวแปร applicationId ออกจากbuild.gradleไฟล์ของไลบรารีควรแก้ไขปัญหาได้


ขอบคุณคุณขับเคลื่อนฉันไปในทิศทางที่ถูกต้อง ฉันเพิ่มคำตอบที่อธิบายปัญหา "รสชาติ" ที่ฉันมี
Seraphim

1
@ Joel: ฉันแปลงโมดูลเป็นไลบรารี แต่ฉันไม่พบ ApplicationId ที่จะลบ ApplicationId ไม่ใช่ dr ในไฟล์ build.gradle บอกหน่อยได้ไหมว่าหาได้ที่ไหนใน Android studio 1.0.1
kumar

แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์อย่างเดียวอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป
Nerdroid

62

ขอบคุณ Joel สำหรับคำตอบที่ถูกต้อง:ฉันต้องการลบเพียง 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'
       }
   }

ไม่สามารถตรวจสอบคำตอบสองข้อที่น่าเสียดายเนื่องจากคุณรวมตัวอย่างที่ Joel ควรมี
Androidcoder

1
ถ้าฉันลบ applicationID line ฉันจะเผยแพร่ใน Play store ได้ไหม (ฉันหมายถึงการอัปเดต) เนื่องจากจะไม่มีรหัสแอปพลิเคชันสำหรับ Google Play
gurkan stack

1
@gurkanstack หากคุณลบบรรทัดในไฟล์ Gradle ช่องว่างชื่อที่กำหนดไว้ใน "package" ของ AndroidManifest.xml จะถูกใช้สำหรับ pubblication
Seraphim

1

ในกรณีที่มันช่วยบางคน:

เมื่อฉันนำเข้าโปรเจ็กต์ eclipse ไปยัง android studio ฉันได้รับข้อผิดพลาด ::

"ข้อผิดพลาด: แอปพลิเคชันและรหัสแอปพลิเคชันทดสอบต้องไม่เหมือนกัน"

แม้ว่าจะแปลก แต่ฉันมองเข้าไปใน 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"
 }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.