7

मैंने हाल ही में एक्लिप्स + एडीटी से एंड्रॉइड स्टूडियो में स्विच किया है। मेरा ऐप एक पूर्ण देशी सी ++ एप्लिकेशन है। मैं एंड्रॉइड स्टूडियो 2.0 बीटा 5 और ग्रैडल प्रायोगिक 0.6.0-बीटा 4 का उपयोग करता हूं।एंड्रॉइड स्टूडियो देशी कोड संकलन धीमा है

एंड्रॉइड स्टूडियो की निर्माण प्रक्रिया देशी कोड के लिए बहुत धीमी है। मैंने स्टैक ओवरफ्लो और इंटरनेट पर सभी प्रश्न पढ़े। मैंने सभी सुझाए गए तरीकों को लागू किया (- ऑफलाइन, --डेमन, - समांतर, -एक्सएमएक्स आकार, आदि ..)। वे ज्यादातर जावा कोड के निर्माण को तेज करने के लिए संबोधित करते हैं। देशी सी ++ फ़ाइलों (ndk-build) की संकलन प्रक्रिया अभी भी बहुत धीमी है। यहां तक ​​कि यदि मैं एक पंक्ति सी ++ कोड लिखता हूं, तो भी मैं प्रत्येक बार रन बटन पर क्लिक करने पर 5-7 मिनट प्रतीक्षा करता हूं, जहां एक ही नौकरी के लिए ग्रहण का संकलन समय लगभग 15-20 सेकंड था।

क्या आपके पास एंड्रॉइड स्टूडियो पर मूल कोड (सी/सी ++) की संकलन प्रक्रिया को गति देने के लिए कोई सुझाव है?

+0

http://ph0b.com/android-studio-gradle-and-ndk-integration/ –

+0

@AlexCohn में वर्णित ndkBuild चरण को अलग करने का प्रयास करें जो एंड्रॉइड स्टूडियो से नौकरी निकाल देता है। यह जावा ऐप्स के लिए एक विकल्प हो सकता है जो मूल फ़ाइलों से निपटता नहीं है लेकिन कुछ देशी पुस्तकालयों का उपयोग करता है। मेरा ऐप एक शुद्ध देशी ऐप है। मैं ग्रेडल-प्रयोगात्मक निर्माण प्रणाली के अंदर एक समाधान की तलाश में हूं। – Rancs

+1

एक चाल एबीआई को सीमित करने के लिए हो सकती है कि एंड्रॉइड स्टूडियो –

उत्तर

1

आप लिनक्स पर निर्माण कर रहे हैं अगर मैं तुम्हें NDK निर्माण में तेजी लाने के लिए एक हैक मिल गया है:

cd <ndk-bundle-path> 
mv ndk-build ndk-build2 

अब नामक एक खोल स्क्रिप्ट "NDK-निर्माण" बनाने के निम्नलिखित युक्त

#!/bin/sh 
$(dirname $0)/ndk-build2 -j 8 [email protected] 

अब सेट नई स्क्रिप्ट के लिए अनुमतियों को निष्पादित करें:

chmod 775 ndk-build 
अब

, जो कोई NDK-निर्माण (लांच में क्लडिंग ग्रेडल/एंड्रॉइड स्टूडियो) एक साथ 8 कोर पर ऑब्जेक्ट फाइलों को धक्का देने के लिए मजबूर होंगे। 8 कोर सिर्फ एक उदाहरण है। आपको यह निर्धारित करना होगा कि आपके पास कितने कोर उपलब्ध हैं। यदि आप उपलब्ध कोर की संख्या की तुलना में इसे बहुत अधिक सेट करते हैं तो आप आमतौर पर प्रदर्शन खो देंगे। यदि सीपीयू में हाइपर थ्रेडिंग है तो आप कोर की संख्या को दोगुना कर सकते हैं।

मुझे यकीन है कि बैच स्क्रिप्ट या कुछ के साथ विंडोज़ पर ऐसा करने का एक समकक्ष तरीका है लेकिन मेरे पास विंडोज़ मशीन उपलब्ध नहीं है।

+0

क्यों ** 8 ** कोर? क्या यह एक आविष्कार है? –

+0

ऐसा इसलिए है क्योंकि मेरे पास हाइपर थ्रेडिंग के साथ 4 कोर हैं। आपको इसे जो भी उपलब्ध है, उसे सेट करना चाहिए। यदि आप इसे भौतिक कोर की संख्या से अधिक सेट करते हैं (यदि हाइपर थ्रेडिंग डबल होता है) तो आप आम तौर पर प्रदर्शन खो देते हैं। – bofjas

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