9

मान लीजिए कि मैं 3 मॉड्यूल था: mod1, mod2 और mod3।एंड्रॉइड स्टूडियो - उपनिर्देशिका के अंदर मॉड्यूल कैसे बनाएं?

सामान्य मामले में, फाइल सिस्टम पदानुक्रम होना चाहिए:

[android_root_dir] 
build.gradle # list this file just to make it clear. 
----mod1 
----mod2 
----mod3 

लेकिन क्या मैं चाहता हूँ है:

[android_root_dir] 
build.gradle # list this file just to make it clear. 
----modules 
    ----mod1 
    ----mod2 
    ----mod3 

कैसे एंड्रॉयड स्टूडियो 1.1.0 में यह करने के लिए?

पुनश्च: मैं इस लेख को खोजने, लेकिन यह काम करने के लिए प्रतीत नहीं होता है, या यह के रूप में के पुराने संस्करणों के लिए काम करता है, 1.1.0 नहीं: How can I move a module inside a subdirectory?

उत्तर

12

आप यह कर सकते हैं:

root 
    build.gradle 
    settings.gradle 
    modules 
    mod1 
     build.gradle 
    mod2 
     build.gradle 
    mod3 
     build.gradle 

अपने settings.gradle

include ':modules:mod1' , ':modules:mod2', ':modules:mod3' 
+3

THX। इस विधि से काम करता है ... कुछ हद तक ... के रूप में एक नकली और "मॉड्यूल" के नाम के साथ अशक्त मॉड्यूल उत्पन्न होगा, और "मॉड्यूल/modules.iml" उत्पन्न करते हैं। अगर मैं एएस प्रोजेक्ट स्ट्रक्चर में इस मॉड्यूल को हटा देता हूं, तो एएस इसे फिर से उत्पन्न करेगा। कोई विचार? –

+0

मैं इसे इस विषय पर शोध के घंटों के लिए देता हूं ... प्रोजेक्ट स्वयं ही महत्वपूर्ण है ... मैं इसका मतलब अब उपयोग करता हूं: मॉड्यूलमेन, मॉड्यूलफंका, मॉड्यूलफनसीबी आदि जैसे नाम मॉड्यूल के नाम उपसर्ग के साथ नाम मॉड्यूल। .. –

3

हालांकि include ':modules:mod1' , ':modules:mod2', ':modules:mod3' तरह का समाधान देता है, के रूप में annoyingly एक खाली मॉड्यूल के लिए उत्पन्न करता है में आर modules। इस पकड़ लिया करने के लिए, gradle github repo पर settings.gradle को देखें। यह मूल रूप से प्रत्येक उपप्रोजेक्ट को शीर्ष स्तर के रूप में शामिल करता है और उसके बाद उप-निर्देशिका के अंदर अपनी प्रोजेक्ट निर्देशिका सेट करता है। इस चाल को आपकी ज़रूरत को पूरी तरह से संबोधित करना चाहिए।

include 'mod1' 
include 'mod2' 
... 
include 'modX' 
rootProject.name = 'gradle' 
rootProject.children.each {project -> 
    String projectDirName = "modules/$project.name" 
    project.projectDir = new File(settingsDir, projectDirName) 
    assert project.projectDir.isDirectory() 
    assert project.buildFile.isFile() 
} 
+1

एक ही परिणाम नए 'build.gradle' सामग्री के साथ, मध्यवर्ती निर्देशिका 'मॉड्यूल' में जोड़ने के द्वारा प्राप्त किया जा सकता है: 'jar.enabled = झूठी; uploadArchives.enabled = FALSE' –

-1

मेरे परियोजना struct

Coding 
    app 
    push-dir 
    coding-push 
    push-xiaomi 
    setting.gradle 

setting.gradle फ़ाइल

// need repeat declarative, i think it's bug 
include ':app' 
include ':coding-push' 
include ':push-dir:coding-push' 
include ":push-xiaomi" 
include ":push-dir:push-xiaomi" 

मैं हल करने के लिए settings.gradle में दोहराने कथात्मक इस्तेमाल किया। (एंड्रॉइड स्टूडियो 3.0), मुझे लगता है कि यह एएस की बग है। कभी-कभी एएस को पुनरारंभ करने की आवश्यकता होती है। आपकी प्रतिक्रिया के लिए

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