12

मेरे पास एक बहु-मॉड्यूल प्रोजेक्ट है। मेरे प्रोजेक्ट की जड़ से (जिसमें एकाधिक मॉड्यूल शामिल हैं), मैं 'ग्रेडल बिल्ड' को कॉल करने में सक्षम होना चाहता हूं और मेरे पास कुछ पैरामीटर के आधार पर मेरे मॉड्यूल में से एक में एक अलग एंड्रॉइडमैनीफेस्ट का उपयोग करना चाहता हूं। पूरा करने का सबसे अच्छा तरीका क्या है इस? क्या मुझे एक gradle.properties फ़ाइल का उपयोग करना चाहिए या क्या मैं किसी भी तरह से एक अलग build.gradle निर्दिष्ट कर सकता हूं मेरी सेटिंग्स में .gradle फ़ाइल? किसी भी मदद की सराहना की!कमांड लाइन से एक अलग एंड्रॉइडमैनीफेस्ट का उपयोग करने के लिए ग्रैडल को कैसे बताना है?

settings.gradle:

include 'ActionBarSherlock' 
include '<main_app>' 

build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':ActionBarSherlock') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 
} 

मैं सबसे अच्छा तरीका है एक अलग AndroidManifest.xml उपयोग करने के लिए की तलाश में हूँ, एक कहते हैं कि मैं // परीक्षण में है /AndroidManifest.xml। और मुझे कमांड लाइन से इस परिवर्तन को निर्दिष्ट करने में सक्षम होना चाहिए। कोई विचार?

उत्तर

13

मैंने विभिन्न निर्माण प्रकारों का उपयोग करके इसे हल किया।

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':facebook-android-sdk-3.0.1:facebook') 
    compile project(':google-play-services_lib') 
    compile project(':nineoldandroids') 
    compile project(':SlidingMenu-master:library') 
    compile project(':ViewPagerIndicator') 
    compile project(':volley') 
    compile project(':windowed-seek-bar') 
    compile files('compile-libs/androidannotations-2.7.1.jar', 'libs/Flurry_3.2.1.jar', 'libs/google-play-services.jar', 'libs/gson-2.2.4.jar', 'libs/picasso-1.1.1.jar', 'libs/crittercism_v3_0_11_sdkonly.jar', 'libs/gcm.jar', 'libs/apphance-library.jar') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    signingConfigs { 
     debug { 
      storeFile file('keystores/debug.keystore') 
     } 
    } 

    buildTypes { 
     debug { 
      sourceSets { 
       main { 
        manifest.srcFile 'AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 

     release { 
      zipAlign true 
      sourceSets { 
       main { 
        manifest.srcFile 'AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 

     utest { 
      debuggable true 
      signingConfig signingConfigs.debug 

      sourceSets { 
       main { 
        manifest.srcFile 'utest/AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 
    } 
} 

आपको लगता है कि मेरी utest निर्माण के लिए, मैं एक अलग निर्देशिका में प्रकट को निर्दिष्ट कर रहा हूँ देख सकते हैं:

यहाँ मेरी build.gradle है। काम करता है।

+1

मैं अलग-अलग AndroidManifest.xml फ़ाइलों के साथ मुद्दों को एक साथ विलय कर रहा हूं जिसे विलय नहीं किया जाना चाहिए। उदाहरण के लिए, मेरे पास डीबग और एक क्यू बिल्ड टाइप है जिसे डिबग के लिए निर्माण करते समय एक साथ विलय किया जा रहा है। –

+0

मुझे लगता है कि यह डिज़ाइन द्वारा है, ताकि आप विभिन्न बिल्डों के लिए अलग-अलग अनुमतियां प्राप्त कर सकें। –

+1

यह उत्तर पूरे प्लगइन दस्तावेज से अधिक उपयोगी है;) –

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

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