एंड्रॉइड स्टूडियो 1.0 और त्रुटि "लाइब्रेरी प्रोजेक्ट्स एप्लिकेशन सेट नहीं कर सकते हैं"


109

एंड्रॉइड स्टूडियो को 1.0 में अपडेट करने के बाद, मुझे यह त्रुटि दिखाई देती है:

त्रुटि: लाइब्रेरी प्रोजेक्ट्स ApplicationId सेट नहीं कर सकते हैं। applicationId को डिफ़ॉल्ट कॉन्फिगर में 'com.super.app' पर सेट किया गया है।

मैंने सुझाए गए ग्रेड के प्लगइन को अपडेट किया लेकिन मुझे समझ नहीं आया कि इसे कैसे ठीक किया जाए।

जवाबों:


208

इस जानकारी के आधार पर :

पुस्तकालय परियोजनाओं में ApplicationId

आप किसी लाइब्रेरी प्रोजेक्ट के पैकेज को अनुकूलित करने के लिए ApplicationId का उपयोग नहीं कर सकते हैं। पुस्तकालय परियोजनाओं में पैकेज का नाम तय किया जाना चाहिए (और मेनिफेस्ट में पैकेजनाम के रूप में निर्दिष्ट किया गया है)। ग्रेडल प्लगइन ने पहले इस प्रतिबंध को लागू नहीं किया था।

लायब्रेरी के build.gradleफ़ाइल से ApplicationId चर को हटाकर समस्या को हल करना चाहिए।


धन्यवाद, आप मुझे सही दिशा में ले जाते हैं। मैंने एक जवाब जोड़ा जो बताता है कि मेरे पास "स्वाद" की समस्या है।
सेराफिम का

1
@Joel: मैंने मॉड्यूल को लाइब्रेरी में बदल दिया, लेकिन मैं हटाने के लिए ApplicationId नहीं ढूंढ पा रहा हूं। ApplicationId build.gradle फ़ाइल में dr नहीं है। क्या आप मुझे बता सकते हैं कि मैं एंड्रॉइड स्टूडियो 1.0.1
कुमार

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं
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
यदि मैं एप्लिकेशनआईडी लाइन हटाता हूं, तो क्या मैं इसे प्ले स्टोर में प्रकाशित कर सकता हूं? (मेरा मतलब है अपडेट) क्योंकि Google play के लिए कोई एप्लिकेशन आईडी नहीं होगी।
गुरकान स्टैक

1
@gurkanstack यदि आप ग्रैडल फ़ाइल में लाइन को हटाते हैं, तो AndroidManifest.xml "पैकेज" में परिभाषित नाम स्थान का उपयोग pubblication के लिए किया जाएगा।
सेराफिम का

1

बस यह कुछ मदद करता है:

जब मैंने एंड्रॉइड स्टूडियो में एक ग्रहण परियोजना को आयात किया, तो मुझे एक त्रुटि मिली ::

"त्रुटि: आवेदन और परीक्षण आवेदन आईडी समान नहीं हो सकते"

अजीब है, लेकिन मैं build.gradle में देखा और दो प्लेसहोल्डर्स, एक आवेदन के लिए और अन्य परीक्षण के लिए पाया।

मैंने testApplicationId को हटा दिया, जैसा कि इस पोस्ट में सुझाया गया है और इससे मुझे समस्या को हल करने में मदद मिली।

नोट: यह स्पष्टीकरण इस प्रश्न में पोस्ट की गई त्रुटियों से संबंधित नहीं है, लेकिन किसी ऐसे व्यक्ति की मदद कर सकता है जिसे एक समान त्रुटि मिल रही है।


0

आप अपने परिवाद के लिए ApplicationId को परिभाषित नहीं कर सकते। लेकिन आप अपनी बिल्ड फ़ाइल में एक पहचानकर्ता का उपयोग करना चाहते हैं, जो आपको, आपके लाइब्रेरी पैकेज का नाम देगा, आप मॉड्यूल के लिए एक चर को परिभाषित कर सकते हैं और फिर आवश्यकतानुसार मान का उपयोग कर सकते हैं।

जैसे: लाइब्रेरी का बिल्ड.ग्रेड

apply plugin: 'com.android.library'

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

इसके अलावा, आप अपनी बिल्ड फ़ाइल में आवश्यकतानुसार नीचे दिए गए मान का उपयोग कर सकते हैं।

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.