android - ग्रैडल और एंड्रॉइड स्टूडियो के माध्यम से बिल्डिंग और रनिंग ऐप ग्रहण के माध्यम से धीमा है




gradle android-studio build.gradle (23)

एंड्रॉइड प्रलेखन के अनुसार, इसे ऐप मॉड्यूल की gradle फ़ाइल में जोड़ें।

android {
    ...
    dexOptions {
    preDexLibraries true
    maxProcessCount 8
    }
}

मेरे पास एक बहु-परियोजना (~ 10 मॉड्यूल) है जिसमें से प्रत्येक इमारत में लगभग 20-30 सेकंड लगते हैं। जब मैं एंड्रॉइड स्टूडियो में रन दबाता हूं, तो मुझे ऐप के पुनर्निर्माण के लिए हर बार इंतजार करना पड़ता है, जो बेहद धीमी है।

एंड्रॉइड स्टूडियो में बिल्डिंग प्रक्रिया को स्वचालित करना संभव है? या क्या आपको इस प्रक्रिया को तेज़ बनाने के बारे में कोई सलाह है?

ग्रहण में, स्वचालित भवन के लिए धन्यवाद, एक एमुलेटर पर एक ही प्रोजेक्ट चलाने से लगभग 3-5 सेकंड लगते हैं।

यह मेरा build.gradle फ़ाइल (ऐप मॉड्यूल) है:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

एंड्रॉइड स्टूडियो 2.3 के बाद अपडेट करें

सभी उत्तरों बहुत अच्छे हैं, और मैं बिल्ड गति को बेहतर बनाने के लिए उन तरीकों का उपयोग करने के लिए प्रोत्साहित करता हूं।

सितंबर 2016 को एंड्रॉइड 2.2 के रिलीज के बाद, एंड्रॉइड ने gradle बिल्ड प्रदर्शन को तेज करने के लिए प्रयोगात्मक बिल्ड कैश फीचर जारी किया, जो अब एंड्रॉइड स्टूडियो 2.3 कैनरी से आधिकारिक है। (आधिकारिक रिलीज नोट)

यह एक नई बिल्ड कैश सुविधा प्रस्तुत करता है, जो डिफ़ॉल्ट रूप से सक्षम है, उसी समय या अलग एंड्रॉइड के पिछले निर्माण में बनाए गए फ़ाइलों / निर्देशिकाओं को संग्रहीत और पुन: उपयोग करके बिल्ड समय (पूर्ण बिल्ड, वृद्धिशील बिल्ड, और तत्काल रन सहित) को तेज कर सकता है। परियोजना।

कैसे इस्तेमाल करे:

अपनी gradle.properties फ़ाइल में निम्न पंक्ति जोड़ें

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

कैश साफ़ करें:

  • बिल्ड कैश को अधिक आसानी से साफ करने के लिए cleanBuildCache कैश नामक एक नया cleanBuildCache कार्य है। आप इसे अपने टर्मिनल में निम्नलिखित टाइप करके इसका उपयोग कर सकते हैं:

    ./gradlew cleanBuildCache

  • या आप स्थान पर सभी फाइलों को स्टोर करके एंड्रॉइड स्टूडियो 2.2 के लिए कैश साफ़ कर सकते हैं

    C:\Users\<username>\.android\build-cache


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

शुरुआती निर्माण अभी भी क्रूर रूप से धीमा हो सकता है, लेकिन चल रहे ऐप्स के पुनरारंभ अब आमतौर पर बहुत सहनशील होते हैं। मैं एक उप-इष्टतम पीसी का उपयोग कर रहा हूं: एएमडी क्वाड-कोर ए 8-7410 सीपीयू, 8 एमबी रैम, गैर-एसएसडी एचडी, विन 10. (और, यह मेरा पहला स्टैक ओवरफ़्लो पोस्टिंग है ....;)

सेटिंग में -> ग्रेडल:

हां "ऑफ़लाइन काम" के लिए (यह शायद सबसे अधिक आयात सेटिंग है)।

सेटिंग में -> कंपिलर:

हां "समानांतर में स्वतंत्र मॉड्यूल संकलित करें" (सुनिश्चित नहीं है कि यह वास्तव में मल्टीकोर सीपीयू का उपयोग करने में मदद करता है)।

ग्रेड स्क्रिप में , "build.gradle (मॉड्यूल: ऐप)":

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

ग्रैडल स्क्रिप्स में भी , "gradle.properties (प्रोजेक्ट प्रॉपर्टीज)":

org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

org.gradle.parallel = true org.gradle.daemon = true

इसके अतिरिक्त , एमुलेटर की बजाय भौतिक उपकरण पर परीक्षण मेरे लिए अच्छा काम कर रहा है; खड़ा एक छोटा सा टैबलेट सुविधाजनक है।


निम्न निर्देशिका में gradle.properties नाम की एक फ़ाइल बनाएं:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

फ़ाइल में इस लाइन को जोड़ें:

org.gradle.daemon=true

मेरे लिए गति अब ग्रहण के बराबर है।

स्रोत: https://www.timroes.de/2013/09/12/speed-up-gradle/


एक मामूली परिवर्तन (एक resoruce xml करने के लिए) अभी भी 10 मिनट लिया। जैसा कि @rivare अपने जवाब में कहते हैं, एक कमांड लाइन बिल्ड मच तेज है (इसे 15 सेकंड तक ले गया)।
Windows के लिए कमांड लाइन से कम से कम एक छोटा सा निर्माण करने के लिए यहां कुछ चरण दिए गए हैं।

  1. अपनी परियोजनाओं रूट पर जाएं (जहां gradlew.bat है):

    सीडी सी: \ एंड्रॉइड \ मास्क एक्टिविटी

  2. निर्माण निष्पादित करें:

    Grlelew इकट्ठा Debug

  3. सीधे फोन से एपीके अनइंस्टॉल करें (इसे अनइंस्टॉल करने के लिए खींचें)।

  4. जब निर्माण समाप्त हो जाता है, तो विंडोज टास्क मैनेजर का उपयोग करके बड़ी जावा प्रक्रिया को मार दें।

या यदि आपके पास विंडोज़ मशीन पर यूनिक्स टूल्स हैं:

ps

"पिड" दिखाए जाते हैं:

kill -9 <pid>
  1. अब अपना एपीके इंस्टॉल करें:

    adb -d इंस्टॉल करें सी: \ एंड्रॉइड \ मास्क एक्टिविटी \ ऐप \ बिल्ड \ outputs \ apk \ app-debug.apk


आप स्टूडियो के दाहिने तरफ ग्रेडल मेनू खोलने का प्रयास कर सकते हैं, और केवल आपके द्वारा बदला गया मॉड्यूल इकट्ठा कर सकते हैं, फिर इंस्टॉल कमांड चलाएं। जब आप रन दबाते हैं तो यह आपके द्वारा एकत्र किए जा रहे कोड में किए गए किसी भी बदलाव के बावजूद सब कुछ इकट्ठा करता है


बस एक और प्रदर्शन imporvement टिप:

एंड्रॉइड स्टूडियो 3.0 में डी 8 नामक नया डीईएक्स कंपाइलर शामिल है।

"डेक्स कंपाइलर ज्यादातर आपके दिन-प्रति-दिन ऐप विकास में हुड के नीचे काम करता है, लेकिन यह आपके ऐप के निर्माण समय, .ex फ़ाइल आकार और रनटाइम प्रदर्शन को सीधे प्रभावित करता है।"

"और वर्तमान डीएक्स कंपाइलर के साथ नए डी 8 कंपाइलर की तुलना करते समय, डी 8 तेजी से संकलित करता है और छोटे या डीडीएक्स फ़ाइलों को आउटपुट करता है, जबकि एक ही या बेहतर ऐप रनटाइम प्रदर्शन होता है।"

डी 8 वैकल्पिक है - इसका उपयोग करें हमें प्रोजेक्ट की gradle.properties में रखना होगा

android.enableD8=true

अधिक जानकारी: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

पुनश्च। यह मेरे निर्माण समय को लगभग 30% तक लगा देता है।


मैंने हाल ही में एक नया एसएसडी खरीदा और विंडोज से लिनक्स तक चला गया। मेरा निर्माण समय अब ​​तीव्रता का क्रम है, और अब परेशान नहीं है।

यद्यपि यह सीधे आपके प्रश्न का उत्तर नहीं देता है कि यह ग्रहण से धीमा क्यों है, यह दिखाता है कि प्रक्रिया डिस्क-बाध्य है और एक एसएसडी में अपग्रेड एक (कुछ महंगा) समाधान हो सकता है। मुझे लगता है कि लोग इस मुद्दे को गुमराह करेंगे और यहां समाप्त होंगे, जो मेरे अनुभव की सराहना कर सकते हैं।


हाय मुझे पता है कि यह बहुत देर हो चुकी है लेकिन शायद किसी की मदद करें
मेरे मामले में मैं उपयोग कर रहा था

compile 'com.android.support:support-v4:23.1.1'

मेरे ऐप में ग्रैडल निर्भरता
लेकिन मेरे पुस्तकालयों में से एक में यह था

 compile 'com.android.support:support-v4:23.0.1'

सभी को नवीनतम संस्करण में बदलने के बाद मेरी समस्या हल हो गई।


मेरा हल हल

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

ग्रैडल बिल्ड 8 मिनट से 3 सेकंड तक चला गया।


इस सुडो डीपीकेजी का उपयोग करें - मैड-आर्किटेक्चर i386 sudo apt-get अद्यतन sudo apt-get install libncurses5: i386 libstdc ++ 6: i386 zlib1g: i386

एंड्रॉइड स्टूडियो नई परियोजना बनाने में विफल रहता है, दास एपेट प्रक्रिया के लिए wating जबकि समय समाप्त हो गया


हार्डवेयर

मुझे खेद है, लेकिन विकास स्टेशन को एसएसडी और रैम के टन में अपग्रेड करने से शायद नीचे दिए गए अंकों की तुलना में बड़ा प्रभाव पड़ता है।

टूल्स संस्करण

विकास टीमों के लिए बढ़ते निर्माण प्रदर्शन की प्राथमिकता है, इसलिए सुनिश्चित करें कि आप नवीनतम Gradle और एंड्रॉइड ग्रैडल प्लगइन का उपयोग कर रहे हैं।

विन्यास फाइल

जो भी निर्देशिका लागू होती है में gradle.properties नाम की एक फ़ाइल बनाएं:

  • /home/<username>/.gradle/ (लिनक्स)
  • /Users/<username>/.gradle/ (मैक)
  • C:\Users\<username>\.gradle (विंडोज़)

जोड़ें:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

यदि आप उन्हें projectRoot\gradle.properties पर projectRoot\gradle.properties और वैश्विक रूप से यदि आप उन्हें user_home\.gradle\gradle.properties पर user_home\.gradle\gradle.properties तो projectRoot\gradle.properties गुण स्थानीय काम user_home\.gradle\gradle.properties । गुण लागू होते हैं यदि आप कंसोल से या सीधे विचार से क्रमबद्ध कार्य चलाते हैं:

आईडीई सेटिंग्स

आईडीई सेटिंग्स जीयूआई से ग्रैडल-इंटेलिजे एकीकरण को ट्विक करना संभव है। "ऑफ़लाइन काम" सक्षम करना (नीचे yava से उत्तर की जांच करें) प्रत्येक "सिंक ग्रेडल फ़ाइल" पर वास्तविक नेटवर्क अनुरोध अक्षम कर देगा।

मूल बहु-डेक्स

एपीके बिल्ड के सबसे धीमे कदमों में से एक जावा बाइटकोड को एकल डीएक्स फ़ाइल में परिवर्तित कर रहा है। देशी मल्टीडेक्स को सक्षम करना (केवल डीबग बिल्ड के लिए मिनीएसडीके 21) टूलिंग को काम की मात्रा को कम करने में मदद करेगा (नीचे Aksel Willgert से जवाब देखें)।

निर्भरता

पुस्तकालय उप-परियोजनाओं पर @aar निर्भरताओं को पसंद करें।

mavenCentral , jCenter पर mavenCentral उपयोग करें या github से किसी भी लाइब्रेरी का निर्माण करने के लिए jitpack.io का उपयोग करें। यदि आप निर्भरता लाइब्रेरी के स्रोतों को संपादित नहीं कर रहे हैं तो आपको इसे अपने प्रोजेक्ट स्रोतों के साथ हर बार नहीं बनाना चाहिए।

एंटीवायरस

एंटीवायरस स्कैनिंग से परियोजना और कैश फ़ाइलों को बाहर करने के लिए विचार करें। यह स्पष्ट रूप से सुरक्षा के साथ एक व्यापार बंद है (घर पर यह कोशिश मत करो!)। लेकिन यदि आप शाखाओं के बीच बहुत अधिक स्विच करते हैं, तो एंटीवायरस धीरे-धीरे प्रक्रिया का उपयोग करने की अनुमति देने से पहले फाइलों को पुन: स्कैन करेगा, जो बिल्ड समय धीमा कर देता है (विशेष रूप से एंड्रॉइडस्टूडियो सिंक प्रोजेक्ट में ग्रेडल फाइलों और इंडेक्सिंग कार्यों के साथ)। एंटीवायरस के साथ और बिना CPU के निर्माण समय को मापें और प्रक्रिया करें, यह देखने के लिए सक्षम है कि यह संबंधित है या नहीं।

एक निर्माण प्रोफाइलिंग

ग्रैडल प्रोफाइलिंग परियोजनाओं के लिए अंतर्निहित समर्थन है। विभिन्न परियोजनाएं प्लगइन और कस्टम स्क्रिप्ट के एक अलग संयोजन का उपयोग कर रही हैं। उपयोग करना - --profile बाधाओं को खोजने में मदद करेगा।


मैं ग्रैडल पर एक विशेषज्ञ होने से बहुत दूर हूं लेकिन मेरे पर्यावरण में निम्नलिखित पंक्ति थी .gradle / init.gradle

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

फिर भी मुझे नहीं पता कि वह लाइन क्यों थी, लेकिन मैं बदलने की कोशिश करता हूं

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

और अब मैं अंततः एंड्रॉइड स्टूडियो और ग्रैडल बिल्डिंड योजना की शपथ ग्रहण किए बिना काम कर सकता हूं।


कम विन्यास मशीन पर एंड्रॉइड वातावरण चलाने के लिए।

  1. ब्राउज़र में अनावश्यक वेब टैब बंद करें
  2. एंटीवायरस उपयोगकर्ताओं के लिए, ऑटो जेनरेट किए गए बिल्ड फ़ोल्डर को बाहर कर दें
  3. एंड्रॉइड स्टूडियो में 1.2 जीबी डिफ़ॉल्ट ढेर 512 एमबी सहायता में कमी हो सकती है> कस्टम वीएम विकल्प संपादित करें studio.vmoptions -Xmx512m लेआउट प्रदर्शन तेज हो जाएगा

  4. एंड्रॉइड स्टूडियो Mkae में कोर घटक में से एक के लिए Gradle के लिए निश्चित रूप से अभी 3.0beta नवीनतम है

नीचे युक्तियाँ कोड की गुणवत्ता को प्रभावित कर सकती हैं, इसलिए कृपया सावधानी के साथ उपयोग करें:

  1. स्टूडियो में पावर सेफ मोड होता है जब इसे चालू किया जाता है तो पृष्ठभूमि ऑपरेशन बंद हो जाएगा जो लिंट, कोड पूर्णताएं आदि।

  2. आवश्यकता होने पर आप मैन्युअल रूप से लिंट चेक चला सकते हैं ./gradlew lint

  3. अधिकांश एंड्रॉइड अनुकरणकर्ताओं का औसत औसतन 2 जीबी रैम का उपभोग करते हैं, इसलिए यदि संभव हो तो वास्तविक एंड्रॉइड डिवाइस का उपयोग करें, इससे आपके कंप्यूटर पर आपके संसाधन लोड को कम कर दिया जाएगा। वैकल्पिक रूप से आप एमुलेटर की रैम को कम कर सकते हैं और यह आपके कंप्यूटर पर वर्चुअल मेमोरी खपत को स्वचालित रूप से कम कर देगा। आप इसे वर्चुअल डिवाइस कॉन्फ़िगरेशन और अग्रिम सेटिंग में पा सकते हैं।

  4. ऑफ़लाइन मोड ग्रैंडल बैंडविड्थ सीमित उपयोगकर्ताओं के लिए बिल्ड निर्भरताओं को डाउनलोड करने को अक्षम करने के लिए एक सुविधा है। यह पृष्ठभूमि ऑपरेशन को कम करेगा जो एंड्रॉइड स्टूडियो के प्रदर्शन को बढ़ाने में मदद करेगा।

  5. एंड्रॉइड स्टूडियो समानांतर में एकाधिक मॉड्यूल संकलित करने के लिए एक अनुकूलन प्रदान करता है। कम रैम मशीनों पर इस सुविधा का प्रदर्शन पर नकारात्मक प्रभाव पड़ सकता है। आप इसे कंपाइलर सेटिंग्स संवाद में अक्षम कर सकते हैं।


यह सेटअप मेरे लिए वास्तव में तेज़ हो जाता है (निर्माण के लगभग 2 सेकंड)

build.gradle

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

gradle.properties

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

मेरा पीसी:

  • सीपीयू इंटेल (आर) पेंटियम (आर) सीपीयू जी 2030 @ 3.00 गीगाहर्ट्ज, 3000 मेगाहर्ट्ज, 2 प्रोसेसडॉर प्रिंसिपल, 2 प्रोसेसडोज़ लॉजिकोस
  • 64
  • माइक्रोसॉफ्ट विंडोज 7 पेशेवर
  • (रैम) 16,0 जीबी

परियोजना फाइलें
- सभी स्थानीय एचडी में स्थित है


यदि Google play सेवाओं का उपयोग करते हैं, तो पूरे ब्लॉब की बजाय आपको आवश्यक पुस्तकालयों के आधार पर चीजों को तेज़ी से बना सकते हैं।

यदि आपकी एकमात्र आवश्यकता मानचित्र है, तो इसका उपयोग करें:

compile 'com.google.android.gms:play-services-maps:6.5.+'

के बजाय:

compile 'com.google.android.gms:play-services:6.5.+'

उत्तरार्द्ध कक्षा में 20k विधियों (ब्लॉग देखें) लाता है, जो कुल विधि गणना 64k से अधिक हो सकता है।

इससे डीबग बिल्ड के लिए भी multidex या multidex के उपयोग को मजबूर किया जाएगा। मेरी परियोजनाओं में से एक के लिए मेरे पास निम्नलिखित निर्माण समय थे

  • मल्टीडेक्स बिल्ड (समर्थन पुस्तकालय के साथ) ~ 40sec
  • proguard निर्माण ~ 20sec
  • विधि सीमा <64k ~ 5sec जब निर्माण करें

अगर एसडीके 21+ पर विकास हो रहा है, तो एंड्रॉइड दस्तावेज में बताए गए मल्टीडेक्स बिल्ड को अनुकूलित करना संभव होगा

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

एंड्रॉइड स्टूडियो 3.0 में स्पीड अप ग्रैडल बिल्ड

कभी ऐसा लगता है कि आप एंड्रॉइड स्टूडियो में मिनटों के लिए बिल्ड को पूरा करने की प्रतीक्षा कर रहे हैं? मैं भी। और यह एक बहुत कष्टप्रद है। सौभाग्य से, ऐसे कुछ तरीके हैं जिनका उपयोग आप इसे बेहतर बनाने के लिए कर सकते हैं। एंड्रॉइड बिल्डिंग के लिए ग्रैडल का उपयोग करता है। नवीनतम संस्करण 2.14.1 में पिछले संस्करणों पर एक बड़ा प्रदर्शन बढ़ावा है (विवरण के लिए रिलीज नोट देखें)।

चरण 1: अद्यतन ग्रैडल संस्करण इसे पूरा करने का एक आसान तरीका यहां जाना है: ओपन मॉड्यूल सेटिंग्स (आपकी परियोजना)> परियोजना संरचना

अद्यतन करें

ग्रैडल संस्करण में बदलें : 4.1 और एंड्रॉइड प्लगइन में बदलें संस्करण: 3.0.0

https://services.gradle.org/distributions/gradle-3.1-all.zip से ग्रैडल रिलीज वितरक डाउनलोड https://services.gradle.org/distributions/gradle-3.1-all.zip और इसे ग्रैडल फ़ोल्डर में कॉपी https://services.gradle.org/distributions/gradle-3.1-all.zip :

अंतिम चरण सेटिंग्स> ग्रैडल में अपना अपवाद जोड़ना है

परिवर्तनों को सहेजने के लिए आवेदन पर क्लिक करना न भूलें।

चरण 2: ऑफ़लाइन मोड, ग्राडल डिमन और प्रोजेक्ट के लिए समांतर बिल्ड सक्षम करें ऑफ़लाइन मोड अद्यतन-टू-डेट चेक को अनदेखा करने के लिए ग्रैडल को बताता है। ग्रैडल हर समय निर्भरताओं के लिए पूछता है और यह विकल्प होने से यह निर्भर करता है कि निर्भरता के लिए मशीन पर पहले से ही क्या है। एंड्रॉइड स्टूडियो सेटिंग से ग्रैडल पर जाएं और ऑफलाइन वर्क बॉक्स में क्लिक करें।

  1. एंड्रॉइड स्टूडियो से कंपाइलर पर जाएं और कमांड लाइन बॉक्स में "ऑफ़लाइन" जोड़ें और समानांतर में स्वतंत्र मॉड्यूल संकलित करें पर क्लिक करें।

अगला चरण आपके प्रोजेक्ट के लिए ग्रैडल डिमन और समांतर बिल्ड को सक्षम करना है। समानांतर बिल्ड आपकी परियोजनाओं को समानांतर में बनाए जाने के लिए कई मॉड्यूल (बहु-प्रोजेक्ट ग्रैडल में निर्मित) के साथ कारण बनेंगे, जिससे बड़ी या मॉड्यूलर परियोजनाएं तेजी से निर्माण करनी चाहिए।

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

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
 org.gradle.daemon=true

डेमॉन का उपयोग करने से आपके बिल्ड स्टार्टअप तेज हो जाएंगे क्योंकि इसे हर बार पूरे ग्रैडल एप्लिकेशन को शुरू नहीं करना पड़ेगा। ग्रैडल डेमॉन डिफ़ॉल्ट रूप से सक्षम नहीं है, लेकिन यह हमेशा डेवलपर्स मशीनों के लिए इसे सक्षम करने की अनुशंसा करता है (लेकिन इसे निरंतर एकीकरण सर्वर के लिए अक्षम कर दिया जाता है)। इस मोड के बारे में अक्सर पूछे जाने वाले प्रश्न https://docs.gradle.org/current/userguide/gradle_daemon.html पाए जा सकते हैं। समांतर बिल्ड सेटिंग कुछ परियोजनाओं के लिए असुरक्षित हो सकती है। आवश्यकता यह है कि आपके सभी मॉड्यूल को डीकॉप्ल्ड किया जाना चाहिए या आपका निर्माण विफल हो सकता है (विवरण के लिए http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects देखें)।

चरण 3: वृद्धिशील डिज़ाइन सक्षम करें और मेमोरी सेटिंग्स को ट्वीक करें आप बढ़ते डिस्क्सिंग को चालू करके अपने निर्माण को तेज कर सकते हैं। आपके मॉड्यूल की बिल्ड फ़ाइल में:

अपने एंड्रॉइड ब्लॉक में यह विकल्प जोड़ें:

dexOptions {
    incremental true
}

उस dexOptions ब्लॉक में आप डीएक्स प्रक्रिया के लिए ढेर आकार भी निर्दिष्ट कर सकते हैं, उदाहरण के लिए:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

जहां "12 जी" 12 जीबी मेमोरी है। इसके बारे में अतिरिक्त जानकारी google.github.io/android-gradle-dsl/current/ पर मिल सकती है। आप सेटिंग्स फ़ाइल में ग्रैडल पैरामीटर को भी कॉन्फ़िगर कर सकते हैं, उदाहरण के लिए यदि आपके पास एक बड़ी परियोजना है तो अधिकतम ढेर आकार बढ़ाएं:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

यहां पैरामीटर की सभी सूची देखें: विवरण के लिए https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties

चरण 4: एंटीवायरस अक्षम करें एंटीवायरस स्कैनिंग से प्रोजेक्ट और कैश फ़ाइलों को बाहर करने के लिए विचार करें। यह स्पष्ट रूप से सुरक्षा के साथ एक व्यापार बंद है। लेकिन यदि आप शाखाओं के बीच बहुत अधिक स्विच करते हैं, तो एंटीवायरस धीरे-धीरे प्रक्रिया का उपयोग करने की अनुमति देने से पहले फाइलों को पुन: स्कैन करेगा, जो बिल्ड समय धीमा कर देता है (विशेष रूप से एंड्रॉइड स्टूडियो सिंक प्रोजेक्ट में धीरे-धीरे फ़ाइलें और अनुक्रमण कार्यों के साथ)। एंटीवायरस के साथ और बिना CPU के निर्माण समय को मापें और प्रक्रिया को मापने के लिए यह सुनिश्चित करें कि यह संबंधित है या नहीं। आशा है कि ये आपकी मदद करेगा। बिल्ड प्रदर्शन में सुधार के लिए आपके पास कोई प्रश्न या कुछ अन्य युक्तियां हैं, तो एक टिप्पणी छोड़ दें।

उपयोगी लिंक


इसके लिए हर जगह खोजा और आखिरकार एक समाधान मिला जो हमारे लिए काम करता है। समांतर बिल्डों को सक्षम करना (ओएसएक्स पर: preferences -> compiler -> gradle -> "Compile independent modules in parallel" ) और 'स्वचालित रूप से प्रोजेक्ट बनाने' को सक्षम करने से इसे ~ 1 मिनट से ~ 20 सेकंड तक नीचे लाया गया। धन्यवाद / यू / कोवलेंस।

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/


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

मुझे भी यही समस्या थी। मैंने जो किया है वह एंटीवायरस को स्थायी रूप से अक्षम कर रहा है (मेरा अवास्ट सुरक्षा 2015 था)। एंटीवायरस को अक्षम करने के बाद, चीज अच्छी तरह से चली गई। धीरे-धीरे सफलतापूर्वक समाप्त हो गया। अब से सेकंड के भीतर धीरे-धीरे परिष्करण (केवल 5-10 सेकेंड लेना) है।


कृपया निम्नलिखित चरणों का पालन करें।

  1. ऑफ़लाइन मोड सक्षम करें: कृपया नीचे प्रिंट स्क्रीन देखें।

    https://i.stack.imgur.com/RF9uG.png

  2. तत्काल रन सक्षम करें: कृपया नीचे प्रिंट स्क्रीन की जांच करें।

    https://i.stack.imgur.com/mvHKJ.png

    यदि आप तत्काल दौड़ के बारे में अधिक जानना चाहते हैं तो कृपया एंड्रॉइड डेवलपर साइट पर जाएं।


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

अधिक जानकारी के लिए जी + पर कुछ देवताओं के साथ इस चर्चा को पढ़ें।


हमारे विशिष्ट मामले में, समस्या रेट्रोम्बाडा प्लगइन होने के कारण थी, जिसने सभी परियोजनाओं और सबप्रोजेक्ट्स को हर बार पुन: संकलित करने के लिए मजबूर कर दिया जब हमने अपने आवेदन को लॉन्च करने का प्रयास किया, भले ही हमारे कोर मॉड्यूल में कोई कोड नहीं बदला गया हो।

रेट्रोलम्बा को हटाने से यह हमारे लिए तय हो गया। उम्मीद है कि यह किसी की मदद करता है।


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

यह हमारे कोड में तीन हिस्सों में किए गए परिवर्तनों को वर्गीकृत करता है: गर्म स्वैप, गर्म स्वैप और ठंडा स्वैप, इस आधार पर कि निर्माण पर कितना भार आएगा। उसके बाद, यह पहले से ही चल रहे ऐप में कोड को स्वैप करता है और हमें कुछ सेकंड चलने वाले बदलाव दिखाई दे सकते हैं। अधिक जानकारी के लिए अपने डॉक्टर देखें।

Here आप एंड्रॉइड स्टूडियो 2.0 पूर्वावलोकन डाउनलोड कर सकते हैं।

पीएस: इस सुविधा के साथ कुछ मुद्दे हैं। उन्होंने इसे दस्तावेज़ों में सूचीबद्ध किया है। स्थापना से पहले इसे देखें।







android gradle android-studio build.gradle