2015-09-01 4 views
22

मैं एंड्रॉइड स्टूडियो 1.3.1 का प्रयोग प्रायोगिक ग्रेडल सिंटैक्स का उपयोग करके एनडीके प्रोजेक्ट को संकलित करने के लिए कर रहा हूं।प्रायोगिक ग्रेडल में एक सीपीपी फ़ाइल को कैसे बाहर निकालना है?

मेरे build.gradle बहुत Teapot example

अपवाद है कि मेरे स्रोत पेड़ कुछ फ़ाइलें जो मैं निर्माण में शामिल करने के लिए नहीं करना चाहती है साथ

से एक की तरह लग रहा है। मैं इन फ़ाइलों को नहीं हटा सकता इसलिए मुझे उन्हें अनदेखा करने के लिए धीरे-धीरे आवश्यकता है।

मैं एक exclude परिभाषा जोड़ने की कोशिश की:

android.sources { 
    main { 
     jni { 
      source { 
       srcDirs 'src/main/jni' 

       excludes += "src/main/jni/FileToExclude.cpp" 
      } 
     } 

    } 
} 

लेकिन है कि परिणाम प्रभावित नहीं किया। gradle अभी भी इस फ़ाइल को संकलित करने की कोशिश करता है।

मैंने excludes, exclude=, += के साथ कोशिश की और कुछ भी नहीं, लेकिन कोई क्रमपरिवर्तन काम नहीं करता है।

+0

के साथ 'Gradle-प्रयोगात्मक पर काम करता है। 0', 'बहिष्कृत' वाक्यविन्यास उपलब्ध है, http://stackoverflow.com/questions/32636150/define-local-src-files-in-ndk-dsl/32640823#32640823 –

उत्तर

10

मैं क्या मिल गया है, निर्माण से फ़ाइल को बाहर करने का सही निर्देश से को बाहर, नहीं शामिल नहीं है। यह सुनिश्चित करने के लिए कि आपने यहां कोई गलती नहीं की है, आपने अपना build.gradle जांचें (आपने का उपयोग किया है प्रदत्त नमूने में को छोड़कर)।

अद्यतन: ठीक है, कुछ शोध के बाद मुझे एओएसपी जारीकर्ता ट्रैकर पर this thread मिला। विषय स्टार्टर निम्नलिखित कहते हैं:

स्रोतों के जावा/संसाधन घटक पैटर्न को शामिल/बहिष्कृत करने की अनुमति देते हैं।

हमें इसे सहायता/आरएस/जेनी/परिसंपत्तियों के लिए करना चाहिए।

समस्या अभी भी खुला है इसलिए मुझे लगता है कि यह कार्यक्षमता एंड्रॉइड ग्रैडल प्लगइन या एंड्रॉइड स्टूडियो में या दोनों में लागू की जानी है (और अभी तक लागू नहीं किया गया है)। इसे एंड्रॉइड स्टूडियो 1.5 में लागू किया जाएगा, कम से कम यह टैग कह रहे हैं।

+1

मैंने देखा, अंतिम संपादन देखें। – shoosh

+1

@Shoosh ऐसा लगता है कि इसे अभी तक लागू नहीं किया गया है, अद्यतन उत्तर देखें। – aga

+2

लगता है कि आप भाग्य से बाहर हैं। जब तक आप अपनी खुद की ग्रेडल प्लगइन बनाना नहीं चाहते हैं, तो आपकी सबसे अच्छी पसंद एंड्रॉइड.एमके का उपयोग ndk-build के माध्यम से करना होगा। –

2

मुझे लगता है कि आप गलत तरीके से फ़ाइल का मार्ग दे रहे हैं। यह होना चाहिए:

srcDir 'src/मुख्य/JNI'

को बाहर 'FileToExclude.cpp'

आप इस लिंक का अनुसरण कर सकते हैं। https://discuss.gradle.org/t/how-can-i-exclude-certain-java-files-from-being-compiled/5287/2

भी ध्यान रखें कि आप का उपयोग करना चाहिए को बाहर के बजाय शामिल नहीं और srcDir बजाय srcDirs

0

मैंने एंड्रॉइड स्रोत में देखा, ऐसा लगता है कि आप अपनी फ़ाइल को बाहर करने के लिए फ़िल्टर को अपडेट कर सकते हैं। मुझे नहीं पता कि आप जिस ग्रेबल प्लगइन का उपयोग कर रहे हैं उसका संस्करण क्या है, इसलिए मैं यह सुनिश्चित नहीं कर सकता कि अंतर्निहित एपीआई क्या है। आप फ़ाइल को बाहर करने के लिए मैन्युअल रूप से पैटर्नफिल्टेबल सेट करने का प्रयास कर सकते हैं।

android.sources { 
    main { 
     jni { 
      source { 
       srcDirs 'src/main/jni' 
       getFilter().exclude('**/FileToExclude.cpp') 
      } 
     } 
    } 
} 

मैं Gradle Code Review को देखा, और देखा कि LanguageSourceSet इस्तेमाल किया जा रहा था। LanguageSourceSet के लिए ग्रैडल प्रलेखन को देखते हुए, जिसे आप SourceDirectorySet तक पहुंच सकते हैं, जिसमें PatternFilterable है जिसे आप बाहर सेट कर सकते हैं।

-1

सबसे आसान तरीका है build.gradle में गुण सेट करने के लिए है:

sourceSets.main.jni.srcDirs = [] // now, AS will not try to compile your source files 
sourceSets.main.jniLibs.srcDirs = ['libs'] // now, AS will pick up the compiled SO files from libs (where ndk-build will normally put them) 

तुम भी एक "buildNative" कार्य परिभाषित कर सकते हैं, के रूप में यह answer में परिभाषित है, को चलाने के लिए compileTask के हिस्से के रूप NDK-निर्माण।

+0

यह उत्तर प्रश्न से संबंधित नहीं है – rockeye

0

चूंकि यह अभी भी प्रयोगात्मक है, वहां ग्रैडल प्रायोगिक पर बहुत अधिक दस्तावेज नहीं हैं।

model { 
    //... 

    android.sources { 
     //... 

     jni { 
      //... 

      source { 
       excludes.add("<FILE PATH>") // You can have multiple excludes.add(...) 
      } 
     } 
    } 
} 

नोट:: लेकिन कुछ प्रयोग के साथ मैं कैसे कुछ फ़ाइलों को बाहर करने के लिए पर एक तरह से, यानी खुदाई करने में सक्षम था 0.3: समाधान Gradle-प्रयोगात्मक 0.7.0

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