adb शेल सु काम करता है लेकिन adb root नहीं करता है


95

मैंने अपने अनलॉक किए गए गैलेक्सी S3 (SGH-T999) को रूट किया

अब, मैं adb rootविंडोज कमांड प्रॉम्प्ट से चलने की कोशिश कर रहा हूं , हालांकि, मुझे adbd cannot run as root in production buildsत्रुटि मिल रही है। तो, मैंने जो पहली चीज़ चेक की, क्या मेरा फोन वास्तव में निहित था?

इसलिए मैंने निम्नलिखित कोशिश की:

कमांड प्रॉम्प्ट खोलें

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

हालांकि, जब मैं करता adb rootहूं, मुझे adbd cannot run as root in production buildsत्रुटि मिलती है। तो, मैंने सोचा, मुझे जो कुछ करना था उससे परे कुछ अतिरिक्त सामान करना पड़ सकता है। मैंने निम्नलिखित SO प्रश्नों में सभी समाधानों की कोशिश की:

उपरोक्त में से किसी ने भी मेरे लिए काम नहीं किया। वे सभी करते हैं शेल की इनसाइड एक्सेस इन्साइड देते हैं। मैं adb rootकाम करना चाहता हूं ताकि मैं शेल में जाने के बिना विभिन्न एडीबी कमांड निष्पादित कर सकूं।


5
Android> 4.3 में काम नहीं करता है। सू गायब है।
drdrej

जवाबों:


36

डिजाइन adb rootकमांड के द्वारा विकास में काम करता है केवल (यानी engऔर userdebugजो ro.debuggable=1डिफ़ॉल्ट रूप से है) बनाता है । तो adb rootअपने अन्यथा रूट किए गए डिवाइस पर कमांड को सक्षम करने के लिए बस ro.debuggable=1निम्नलिखित फ़ाइलों में से एक में लाइन जोड़ें :

/system/build.prop
/system/default.prop
/data/local.prop

यदि आप डिफ़ॉल्ट adb shellरूप से शुरू करना चाहते हैं root- तो ro.secure=0साथ ही साथ जोड़ें ।

वैकल्पिक रूप से आप संशोधित adbdबाइनरी का उपयोग कर सकते हैं (जो जांच नहीं करता है ro.debuggable)

से https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

9
मैं ऊपर दिए गए निष्पादन योग्य संकलन कहां से प्राप्त कर सकता हूं?
वकास बुखारी

3
मैं आपके द्वारा निर्दिष्ट फ़ाइलों के लिए ro.debuggable और ro.secure के नए मान जोड़ता हूं, लेकिन वे अभी भी हर रिबूट पर ओवरराइट हो जाते हैं और परिवर्तनों का कोई प्रभाव नहीं पड़ता है।
पाट्रीक कज़ाचर्सकी

31

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


64
मुझे देव विकल्पों में "रूट एक्सेस" विकल्प दिखाई नहीं देता है।
अमलगोविनास

2
@ ऐमलगोविंस मुझे लगता है कि यह निर्भर करता है कि आप किस कमरे का उपयोग कर रहे हैं। :)
NgaNguyenDuy

@NgaNguyenDuy क्या आप यह पहचान सकते हैं कि आप किस रोम का उपयोग कर रहे हैं?
लॉबस्टर फाइटर

23

मैं इस मुद्दे में भाग गया जब एमुलेटर को जड़ने की कोशिश कर रहा था, मुझे पता चला कि मैं नेक्सस 5x एमुलेटर चला रहा था, जिस पर गूगल प्ले था। एक अलग एमुलेटर बनाया है जिसमें Google प्ले नहीं है और adb rootयह आपके लिए डिवाइस को रूट करेगा। आशा है कि यह किसी की मदद करता है।


हम दोनों एमुलेटर को कैसे अलग कर सकते हैं?
संजय

@Sanjay जब आप एंड्रॉइड वर्चुअल डिवाइस मैनेजर खोलते हैं, तो आपको प्ले स्टोर के लिए एक टैब देखना चाहिए और आप यह सुनिश्चित करना चाहते हैं कि जिस डिवाइस पर आप रूट करने का प्रयास कर रहे हैं उस पर कोई प्ले स्टोर आइकन मौजूद नहीं है।
एंड्रयू स्टेनमेट

1
2020, इससे मुझे मदद मिली लेकिन मुझे इसे बिना रूट किए फोन के साथ प्ले स्टोर से सक्षम डिवाइस पर करने की ज़रूरत है, लेकिन यकीन नहीं होता कि यह
पॉसिबल है

9

मैं पेट के खोल में प्रवेश के लिए उपयोग करता हूं

अदब खोल "सु"


2
Mac OS पर, मुझे "/ system / bin / sh: su: not found" त्रुटि मिल रही है। कृपया कोई सुझाव?
सचिन जी

@SachinG शायद आपने गलत प्रकार के उद्धरणों का उपयोग किया है? इसे चलाने की कोशिश करेंadb shell "su -c whoami"
gkpln3

@ gkpln3 अभी भी वही त्रुटि हो रही है। / प्रणाली / बिन / श: सु: नहीं मिली
सचिन जी

9

मेरे पास सैमसंग गैलेक्सी ट्रेंड प्लस (GT-S7580) है।

'Adb root' चलाने से मुझे वही मिलता है, 'adbd रन नहीं कर सकता क्योंकि root प्रोडक्शन में' एरर बनाता है।

डेवलपर विकल्प वाले उपकरणों के लिए -> रूट एक्सेस, डिवाइस को एडीबी रूट एक्सेस प्रदान करने के लिए "एडीबी केवल" चुनें (जैसा कि NgaNguyenDuy द्वारा सुझाया गया है )।

फिर ADB के माध्यम से एक स्क्रिप्ट को रूट के रूप में लॉन्च के समाधान के अनुसार कमांड चलाने का प्रयास करें । मेरे मामले में, मैं सिर्फ 'netcfg rndis0 dhcp' कमांड को चलाना चाहता था, और मैंने इस तरह किया:

adb shell "su -c netcfg rndis0 dhcp"

कृपया जांचें कि क्या आप इसे इस तरह से चलाते समय कोई गलती कर रहे हैं।

यदि यह अभी भी काम नहीं करता है, तो जांचें कि क्या आपने डिवाइस को सही तरीके से रूट किया है। यदि फिर भी किस्मत नहीं, तो काम करने के लिए 'adb root' के लिए Cyanogen Mod जैसे एक कस्टम ROM स्थापित करने का प्रयास करें ।


7

आपको adbd बाइनरी को boot.img / sbin / folder में से किसी एक में बदलना होगा जो su सक्षम है। आपको कुछ default.prop संपादन भी करने होंगे।

सैमसंग इसे अन्य विक्रेताओं की तुलना में अधिक कठिन बनाता है। मेरे पास कुछ adbd बायनेरिज़ हैं जिन्हें आप आज़मा सकते हैं, लेकिन नए बाइनरी के साथ boot.img को डी-कंपाइलिंग और री-कंपाइलिंग के ज्ञान की आवश्यकता होगी। इसके अलावा, अगर आपके पास लॉक्ड बूटलोडर है ... तो ऐसा नहीं होगा।

चैनफायर के पास एक ऐप है जो प्ले स्टोर में adbd रूट की अनुमति देगा: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en

अंत में, यदि आप SU अनुमतियों के साथ एक विंडोज़ स्क्रिप्ट लिखने की कोशिश कर रहे हैं, तो आप निम्न कमांड शैली का उपयोग करके यह खरीद सकते हैं ... हालांकि, आपको कम से कम (फोन पर) एसयू अनुमतियों की आवश्यकता होगी जो कि भागा समय उसके भाग गया। ।

adb shell "su -c ls" <-list वर्किंग डायरेक्टरी को su राइट्स के साथ। अदब शेल "सु-सी गूंज एनीकट> / दत्ता / टीस्ट.फाइल"

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

-scosler


5

adbdरूट का उपयोग सक्षम करने के लिए एक संकलन ध्वज / विकल्प है ALLOW_ADBD_ROOT=1:।

एंड्रॉइड 9 तक: यदि adbdआपके डिवाइस को उस ध्वज के बिना संकलित किया गया है, तो शुरू होने पर यह हमेशा विशेषाधिकार छोड़ देगा और इस तरह "एडीबी रूट" बिल्कुल भी मदद नहीं करेगा। मैं पैच करने के लिए किया था के लिए कॉल setuid(), setgid(), setgroups()और क्षमता से बाहर द्विआधारी की अपने आप चला जाता है मेरी ebook पाठक पर एक स्थायी रूप से निहित adbd मिलता है।

Android 10 के साथ यह बदल गया; जब फोन / टैबलेट अनलॉक हो जाता है ( ro.boot.verifiedbootstate == "orange"), तो एडीबी रूट मोड किसी भी मामले में संभव है।


1

यदि आपको वास्तव में ADBचलने की आवश्यकता है root, तो सबसे तेज और आसान तरीका एंड्रॉइड कस्टम रोम स्थापित करना है और सबसे लोकप्रिय है इसके CyanogenModलिए Root Accessडेवलपर विकल्प मेनू में विकल्प हैं जहां आप रूट एक्सेस देना चुन सकते हैं apps and ADB। मैंने पहले सीएम का उपयोग किया था, लेकिन चूंकि यह अब और विकसित नहीं हुआ, इसलिए मैंने वहां कुछ समाधान खोजने की कोशिश की। हालांकि CyanogenMod अभी भी एक अच्छा विकल्प है क्योंकि इसमें ब्लोटवेयर नहीं है।

एक मित्र से मुझे पता चला एक विकल्प adbd insecureऐप का उपयोग कर रहा है जिसे आप यहां से आज़मा सकते हैं: https://forum.xda-developers.com/showthread.php?t=1687590 । मेरे मामले में, यह एक एंड्रॉइड कस्टम कर्नेल के साथ लंबवत काम करता है, लेकिन एंड्रॉइड स्टॉक रोम (केवल वैनिला एंड्रॉइड) के साथ नहीं। आप अन्य विकल्पों को भी आज़मा सकते हैं जैसे boot.imgकि Android ROM को संशोधित करना ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.