यह एंड्रॉइड स्टूडियो नई बिल्ड सिस्टम गाइड, lint support से सारांश है।
एक प्रकार का वृक्ष समर्थन
संस्करण 0.7.0 के रूप में, आप फाहा के लिए एक विशिष्ट प्रकार चला सकते हैं, या सभी वेरिएंट, जिस स्थिति में यह एक रिपोर्ट जो जो विशिष्ट वर्णन करता है उत्पादन के लिए एक दिया वेरिएंट मुद्दा पर लागू होता है।
आप निम्न जैसे लिंटऑप्शन अनुभाग जोड़कर लिंट को कॉन्फ़िगर कर सकते हैं। आप आमतौर पर केवल इनमें से कुछ निर्दिष्ट करते हैं; यह अनुभाग सभी उपलब्ध विकल्पों को दिखाता है।
android {
lintOptions {
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
// if true, emit full/absolute paths to files with errors (true by default)
//absolutePaths true
// if true, check all issues, including those that are off by default
checkAllWarnings true
// if true, treat all warnings as errors
warningsAsErrors true
// turn off checking the given issue id's
disable 'TypographyFractions','TypographyQuotes'
// turn on the given issue id's
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// check *only* the given issue id's
check 'NewApi', 'InlinedApi'
// if true, don't include source code lines in the error output
noLines true
// if true, show all locations for an error, do not truncate lists, etc.
showAll true
// Fallback lint configuration (default severities, etc.)
lintConfig file("default-lint.xml")
// if true, generate a text report of issues (false by default)
textReport true
// location to write the output; can be a file or 'stdout'
textOutput 'stdout'
// if true, generate an XML report for use by for example Jenkins
xmlReport false
// file to write report to (if not specified, defaults to lint-results.xml)
xmlOutput file("lint-report.xml")
// if true, generate an HTML report (with issue explanations, sourcecode, etc)
htmlReport true
// optional path to report (default will be lint-results.html in the builddir)
htmlOutput file("lint-report.html")
// set to true to have all release builds run lint on issues with severity=fatal
// and abort the build (controlled by abortOnError above) if fatal issues are found
checkReleaseBuilds true
// Set the severity of the given issues to fatal (which means they will be
// checked during release builds (even if the lint target is not included)
fatal 'NewApi', 'InlineApi'
// Set the severity of the given issues to error
error 'Wakelock', 'TextViewEdits'
// Set the severity of the given issues to warning
warning 'ResourceAsColor'
// Set the severity of the given issues to ignore (same as disabling the check)
ignore 'TypographyQuotes'
}
}
संपादित करें: वास्तविक और व्यावहारिक उदाहरण
जोड़ने हम सभी जानते हैं, नए Android निर्माण प्रणाली Gradle पर आधारित है। ग्रेडल बिल्ड सिस्टम का मुख्य घटक task
है। यदि आपके पास प्रोजेक्ट के अलग-अलग संस्करण हैं तो अलग-अलग लिंट कार्य हैं। आप एंड्रॉइड स्टूडियो All task list
, या कमांडलाइन ./gradlew tasks
से उन कार्यों को प्राप्त कर सकते हैं। उदाहरण के रूप में एक उदाहरण दिखाता है, दो बिल्ड स्वाद demo
और full
।
lint - Runs lint on all variants.
lintDemoDebug - Runs lint on the DemoDebug build
lintDemoRelease - Runs lint on the DemoRelease build
lintFullDebug - Runs lint on the FullDebug build
lintFullRelease - Runs lint on the FullRelease build
ये फाहा कार्य अन्य कार्यों पर निर्भरता कर रहे हैं, यहाँ मान लीजिए कि preBuild
करते हैं।
लिंट कार्य चलाने से पहले, यह कार्य preBuild
को पहले चलाएगा। कार्य preBuild
एक पहले से ही मौजूदा कार्य है, लेकिन हम इस पूर्व परिभाषित कार्य में हेरफेर कर सकते हैं और इस कार्य में अधिक क्रिया जोड़ सकते हैं। एंड्रॉइड lintOptions
संपत्ति को विभिन्न निर्माण प्रकारों के आधार पर गतिशील रूप से जोड़ा जाएगा और संशोधित किया जाएगा क्योंकि निम्नलिखित कोड फ़ाइल app/build.gradle
में प्रदर्शित होता है।
preBuild.doFirst {
android.applicationVariants.each { variant ->
if (variant.name == 'demoDebug') {
println variant.name
android.lintOptions.quiet = true
android.lintOptions.lintConfig = new File('app/lint_demo_debug.xml')
// you can add more properties
} else if (variant.name == 'fullDebug') {
println variant.name
android.lintOptions.quiet = false
android.lintOptions.lintConfig = new File('app/lint_full_debug.xml')
// you can add more properties
} // more variants...
}
सफलतापूर्वक ऊपर कोड चलाने के लिए, संबंधित लिंट कॉन्फ़िगरेशन फ़ाइल ऐप निर्देशिका के अंतर्गत मौजूद होना चाहिए।
क्या होगा यदि आप एक ऐसा फ़ंक्शन लिखते हैं जो अनचाहे 'lint.xml' फ़ाइलों को गतिशील रूप से नामित करता है, केवल उस स्वाद के लिए जिसे आप चाहते हैं? – Sebastiano
मैं किसी भी प्रकार के समाधान के लिए खुला हूं। फाइल सिस्टम हेरफेर सहित। – Christ
क्या आपको अंततः इसका समाधान मिला? – DataGraham