2016-09-17 12 views
9

मैं 2 स्वादों के साथ एक एकल परियोजना बनाने की कोशिश कर रहा हूं: मुफ़्त और समर्थक (संस्करण)।स्वाद के बीच विभिन्न पैकेज नामों का उपयोग कैसे करें?

मेरा ऐप विभिन्न संकुल के साथ PlayStore में पहले से ही है (उदाहरण के लिए: com.example.appfree और com.example.app)

यह मेरा build.gradle है:

defaultConfig { 
    applicationId "com.example.appfree" 
} 
productFlavors{ 
    lite { 
     applicationIdSuffix 'lite' 
    } 

    pro { 

    } 
} 

और ये मेरे है मैनिफेस्ट फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.app"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <activity 
      android:name=".SplashScreenActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".MainActivity"/> 

    </application> 

</manifest> 

मैंने मुफ्त और प्रो स्वाद के लिए एक बिल्ड एपीके अपलोड करने का प्रयास किया। प्रो स्वाद ठीक है, लेकिन Google द्वारा मुफ्त स्वाद स्वीकार नहीं किया जाता है, क्योंकि पैकेज गलत है। इसे कैसे हल किया जा सकता है?

====== हल: ====== एप्लिकेशन आईडीडफिक्स केवल बिल्डटाइप के साथ काम करता है।

+4

मुझे पता है कि 'applicationIdSuffix' जायके के लिए काम किया नहीं था। स्वाद के लिए उपयोग करने के लिए सटीक एप्लिकेशन आईडी का स्पेल करने के लिए 'applicationId' का उपयोग करें। – CommonsWare

+0

@ कॉमन्सवेयर, महान जवाब! applicationIdSuffix केवल BuildTypes के साथ काम करता है! मैंने applicationId का उपयोग किया और यह पूरी तरह से काम करता है! :) –

उत्तर

9

नए एंड्रॉइड ग्रैडल बिल्ड सिस्टम के साथ, आप आसानी से अपने ऐप के कई अलग-अलग संस्करण बना सकते हैं; उदाहरण के लिए, आप एक "फ्री" संस्करण और अपने ऐप के "समर्थक" संस्करण (स्वाद का उपयोग करके) दोनों बना सकते हैं, और इन्हें Google Play store में अलग-अलग पैकेज होना चाहिए, जैसे कि उन्हें इंस्टॉल और अलग से खरीदा जा सकता है, दोनों स्थापित एक ही समय, और इतने पर। इसी तरह, आप अपने ऐप (बिल्ड प्रकारों का उपयोग करके) दोनों "डीबग" और "अल्फा" और "बीटा" संस्करण भी बना सकते हैं और ये समान पैकेज नामों में भी योगदान दे सकते हैं।

एप्लिकेशन/build.gradle:

apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1" 
    defaultConfig { 
     applicationId "com.example.my.app" 
     minSdkVersion 15 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
... 

एप्लिकेशन/build.gradle:

productFlavors { 
    pro { 
     applicationId = "com.example.my.pkg.pro" 
    } 
    free { 
     applicationId = "com.example.my.pkg.free" 
    } 
} 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 
.... 

Android Studio Project Site - ApplicationId versus PackageName से

+0

आपने मेरे प्रश्न का उत्तर नहीं दिया: मैंने मुफ्त और प्रो स्वाद के लिए एक बिल्ड एपीके अपलोड करने का प्रयास किया। प्रो स्वाद ठीक है, लेकिन Google द्वारा मुफ्त स्वाद स्वीकार नहीं किया जाता है, क्योंकि पैकेज गलत है। इसे कैसे हल किया जा सकता है? –

+1

उसने आपको दिखाया कि यह कैसे करना है आपको स्वाद परिभाषाओं में अपने ऐप के लिए उचित पैकेज नामों का उपयोग करने की आवश्यकता है। – nasch

संबंधित मुद्दे

 संबंधित मुद्दे