2011-03-14 8 views
22

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

मैं दस्तावेज में this link देखा था, और विशेष रूप से the FACTORY_TEST permission ने कहा:

public static final String FACTORY_TEST

के बाद से: एक निर्माता परीक्षण आवेदन के रूप में एपीआई स्तर 1

भागो, जड़ उपयोगकर्ता के रूप में चल रहा है। केवल तभी उपलब्ध जब डिवाइस निर्माता परीक्षण मोड में चल रहा है। लगातार मूल्य: "android.permission.FACTORY_TEST"

सबसे अच्छा तरीका है कि है?

यदि एसडीके का उपयोग करना संभव नहीं है, तो मैं "रूट" एप्लिकेशन कैसे काम कर सकता हूं?

+0

कृपया ध्यान दें कि इस अपरिवर्तित प्रश्नों के बहुत सारे उत्थानों के साथ उत्तर है, ** यह उत्तर गलत और बेकार ** है, और तंत्र जो गलत तरीके से इंगित करता है वे खुद को लंबे समय से हटा दिए जाते हैं। यह कुछ भी पूरा नहीं करता है, और लिनक्स कर्नेल और यूनिक्स सुरक्षा और प्रक्रिया मॉडल की मौलिक गलतफहमी से उत्पन्न होता है जिस पर एंड्रॉइड निर्भर करता है। –

उत्तर

30

आप क्या करने की जरूरत की तरह कुछ है। यदि उपयोगकर्ता रूट नहीं है तो यह दृष्टिकोण काम नहीं कर सकता है। Here एक तरीका है जिसका आप परीक्षण कर सकते हैं।

+2

बढ़िया! धन्यवाद मोहित। – Rob

+22

यह एप्लिकेशन को रूट के रूप में नहीं चलाता है। यह क्या करता है, जो सिस्टम इसका समर्थन करता है, एप्लिकेशन को एक नई प्रक्रिया में एक सहायक प्रोग्राम लॉन्च करने की अनुमति देता है जो रूट के रूप में चलता है। इसके अलावा, ऊपर दिखाया गया कोड लगभग कुछ भी नहीं पूरा करता है, क्योंकि कोई कार्यकर्ता प्रक्रिया शुरू नहीं होती है। ऐसा करने की संभावना है कि यह एक हैक में से एक के उपयोगकर्ता पुष्टिकरण संवाद को दिखाता है, और संभवतः उपयोगकर्ता की पसंद को कैश कर सकता है ताकि उन्हें फिर से नहीं पूछा जा सके कि सु का दूसरा आविष्कार किया गया है। लेकिन अभी तक रूट के रूप में कुछ भी नहीं चला है। –

+0

ऊपर क्रिस की टिप्पणी के साथ सहमत हैं - आपको चलाने के लिए एक कार्यकर्ता प्रक्रिया की आवश्यकता होगी और यह निर्धारित करने के लिए परिणाम प्राप्त करें कि आपके पास रूट अनुमति है या नहीं। – ChuongPham

6

एसडीके रूट के रूप में ऐप चलाने का कोई तरीका नहीं प्रदान करता है।

Process root = Runtime.getRuntime().exec("su"); 

SuperUser दिखाने के लिए कारण बनता है यही कारण है कि, या तो आप की अनुमति दें या रूट पहुँच से अवरोधित कर देता है:

+15

ठीक है, श्रीमान Google :) मुझे अपने प्रश्न को सुधारना चाहिए "मैं रूट के रूप में एक एप्लिकेशन कैसे चला सकता हूं?" – Rob

+0

@Rob - आप नहीं कर सकते। अधिकांश सहायक प्रक्रियाओं पर रूट के रूप में चलाया जा सकता है, न कि अनुप्रयोगों को स्वयं। –

12

सबसे पहले हमें मूलभूत बातें प्राप्त करने दें। Android नीचे लिनक्स कर्नेल चलाएं। अब यदि आपको सुपर यूजर विशेषाधिकारों (इसे रूट के रूप में चलाएं) के साथ अपनी प्रक्रिया को चलाने की ज़रूरत है तो आपकी प्रक्रिया को निष्पादित करने का एकमात्र तरीका command line के माध्यम से है क्योंकि यह एकमात्र तरीका है जिससे आप सीधे कर्नेल से बातचीत कर सकते हैं। किसी भी कमांड को चलाने से पहले आपको su का उपयोग करने की आवश्यकता है। इसके अलावा क्रिस ने 1 उत्तर

Process process = Runtime.getRuntime().exec("su"); 

पर लगभग अपनी टिप्पणी में उल्लेख किया है। यह सिर्फ संवाद का उपयोग कर सुपर उपयोग विशेषाधिकार के लिए पूछेगा। आप क्या कर सकते बजाय सिर्फ

Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand}); 

निम्नलिखित -c विकल्प

सबसे अधिक सु के कुछ विकल्पों में से इस्तेमाल किया के अलावा के रूप में su आप सु के साथ अपने प्रक्रिया निष्पादित कर सकते हैं को क्रियान्वित करने के है, -c है जो su to execute the command that directly follows it on the same line बताता है। इस तरह के आदेश को नए उपयोगकर्ता के रूप में निष्पादित किया जाता है, और उसके बाद टर्मिनल विंडो या कंसोल जिसे सु चलाया गया था, कमांड निष्पादन पूरा होने के बाद या उसके द्वारा लॉन्च किए गए किसी भी प्रोग्राम को बंद करने के बाद तुरंत उपयोगकर्ता के खाते में वापस आ जाता है। (More details)

वैकल्पिक विकल्प

उपरोक्त विधि से एक के लिए वैकल्पिक एक और तरीका है कि काम हो सकता है आप /system/app/ निर्देशिका करने के लिए एप्लिकेशन को कॉपी करने के आदेश पंक्ति का उपयोग करें।फिर आपका एप्लिकेशन रूट विशेषाधिकारों (सिस्टम ऐप्स के समान) के साथ स्वचालित रूप से चला जाएगा (More on Android partitions)

+6

नहीं, ऐप/सिस्टम/ऐप में ऐप्स ** रूट के रूप में नहीं चलते ** या तो। वे अधिक एंड्रॉइड-स्तरीय अनुमतियां प्राप्त करने में सक्षम हो सकते हैं, लेकिन अभी भी रूट नहीं हैं। –

+0

रूट के अनुसार, आपको सिस्टम प्रमाणपत्र के साथ साइन इन करना होगा। क्रिस की तरह, ने ऐप को/system/ऐप में डालने या "su" चलाने जैसे कामकाज को आपके ऐप को रूट के रूप में नहीं चलाया। – flicflac

+1

@flicflac मुझे लगता है कि सिस्टम प्रमाण पत्र के साथ साइन इन करना अभी भी आपके ऐप को रूट के रूप में नहीं चलाता है। यह आपको केवल अधिक अनुमति देता है (एंड्रॉइड स्तर)। या मैं गलत हूँ? धन्यवाद! – sjkm

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

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