android - मैं छुपे हुए और आंतरिक एपीआई के साथ एंड्रॉइड एसडीके कैसे बना सकता हूं?




android-sdk-2.3 android-source (8)

मैं छुपा और आंतरिक एपीआई शामिल करने के लिए एंड्रॉइड एसडीके (या बल्कि केवल android.jar) का पुनर्निर्माण करना चाहता हूं।

मुझे इस बारे में कैसे जाना है इस पर कोई दस्तावेज या चर्चा नहीं मिल सका। मेरे पास उबंटू साइनोजनमोड बिल्ड पर्यावरण पहले से ही सेटअप है जो cm7 बनाने में सक्षम है।

अब, मैंने पढ़ा है कि एसडीके एसडीके का निर्माण करेगा, लेकिन मैं एक एसडीके बनाना चाहता हूं जिसमें विधियों और फ़ील्ड शामिल हैं जिन्हें @ हाइड का उपयोग करके छुपाया गया है। क्या यह संभव है?

मैं जो करना चाहता हूं वह उस एप्लिकेशन में परिवर्तन करता है जो छुपा एपीआई का उपयोग करता है और इसे पुनर्निर्माण के लिए मैं संशोधित एसडीके का उपयोग करना चाहता हूं।


आप इस भंडार से छुपा एपीआई के रूप में इस्तेमाल करने के लिए संशोधित android.jar डाउनलोड कर सकते हैं। वहां निर्देशों का पालन करें।


इसे देखने का प्रयास this :

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

लेकिन यदि आप इन गैर-सार्वजनिक एपीआई का उपयोग कर रहे हैं तो आपको अवगत होना चाहिए कि आपका आवेदन बहुत बड़ा जोखिम है। असल में ऐसी कोई गारंटी नहीं है कि एपीआई एंड्रॉइड ओएस के अगले अपडेट के साथ नहीं टूटा जाएगा। अलग-अलग विक्रेताओं के उपकरणों में निरंतर व्यवहार के बारे में भी कोई गारंटी नहीं है। आप पूरी तरह से अपने आप हैं।

ऐसे तीन परिदृश्य हैं जिन्हें आप अनुसरण करना चाहते हैं:

  1. आंतरिक और छुपा एपीआई दोनों सक्षम करें (परिदृश्य ए)
  2. केवल छुपा एपीआई सक्षम करें (परिदृश्य बी)
  3. केवल आंतरिक एपीआई सक्षम करें (परिदृश्य सी)

परिदृश्य ए बी और सी का एक योग है। परिदृश्य बी सबसे आसान है (किसी ग्रहण एडीटी प्लगइन संशोधन की आवश्यकता नहीं है)।

परिदृश्य ए : भागों 1 , 2 , 3 , 4 , 5 पढ़ें

परिदृश्य बी : भागों 1 , 2 , 3 , 5 पढ़ें

परिदृश्य सी : भागों 1 , 2 , 3 , 4 , 5 पढ़ें


छिपी एपीआई का उपयोग करने के लिए मैं हमेशा यही करता हूं।

  1. https://sites.google.com/site/hippunosource/home/android/androidnohide-apiwo-shi-yongsuru-rifurekushonha-wei-shi-yong से रेपो या डाउनलोड जार बनाएं
  2. प्रतिलिपि / लक्ष्य / सामान्य / obj / JAVA_LIBRARIES / framework_intermediates / classes.jar (फ्रेमवर्क_all.jar जैसे कुछ का नाम बदलने के लिए बेहतर)
  3. अपने प्रोजेक्ट बिल्ड पथ को कॉन्फ़िगर करें -> लाइब्रेरीज़ -> यह बाहरी जार जोड़ें। आदेश और निर्यात में, इसे ऊपर और पहले android.jar पर ले जाएं

मैं टिप्पणी नहीं कर सकता लेकिन यह मूल रूप से @ केनीटीएम ( https://.com/a/13550030/2923406 ) पर एक टिप्पणी है उत्कृष्ट उत्तर:

यदि आप ग्रहण में निम्न त्रुटि के साथ स्वयं को पाते हैं:

The type com.android.internal.util.Predicate cannot be resolved. It is indirectly referenced from required .class   files

(यानी, android.internal। * उपलब्ध नहीं है)

फिर एक संभावित समाधान /system/framework/framework2.jar के लिए एक ही विधि को लागू करना है। एसडीके 1 9 के लिए एंड्रॉइड एमुलेटर का उपयोग करके मेरे पास यह अतिरिक्त जार है। मेरे एचटीसी वन पर एक फ्रेमवर्क 3.jar भी है।


मैंने एक बार http://source.android.com/ से रेपो चेकआउट से जावा फाइलों को निकालने के लिए कुछ ग्रोवी स्क्रिप्ट लिखीं और फिर आवश्यक सभी चरणों सहित सभी एंड्रॉइड स्रोतों को संकलित करने के लिए उन्हें पूर्ण टूलचैन की आवश्यकता के बिना संकलित किया ( पैकेजिंग, संसाधन पैदा करना आदि)।

उन्हें यहाँ ढूँढा जा सकता है:

https://github.com/thoutbeckers/CollectAndroid

लेकिन निश्चित रूप से इसे जिंजरब्रेड के बाद कुछ भी अपडेट करने की आवश्यकता होगी, ज्यादातर कॉन्फ़िगरेशन फ़ाइल (CollectConfig.groovy) में "rootdirs" में सही निर्देशिका सेट करके।

उस समय मैंने नियमित रूप से सभी छुपे हुए एपीआई और स्रोतों (उस समय भी समस्याग्रस्त) के साथ विकास के लिए इसका इस्तेमाल किया।

जैसा कि उल्लिखित नियम नियम के कारण एडीटी के हाल के संस्करणों में कहीं और कॉम / एंड्रॉइड / आंतरिक / ** का उल्लेख किया गया है।


लॉलीपॉप के लिए प्रवाह थोड़ा अलग है:

  1. लॉलीपॉप डिवाइस से /system/framework/arm/boot.oat प्राप्त करें

  2. 'Java oat2dex.jar बूट boot.oat' का प्रयोग करें

  3. आपको 2 फ़ोल्डर्स मिलेगा: डेक्स और ओडेक्स। डेक्स पर जाएं और 'जावा dex2jar.jar framework.dex' dex2jar.jar
  4. परिणामस्वरूप फ्रेमवर्क .jar से .zip का नाम बदलें, निकालें और आपको आवश्यक कक्षाएं खोजें
  5. [Sdk_path] / प्लेटफॉर्म / [target_platform] पर जाएं और android.jar निकालें (पहले इसे ज़िप करने के लिए नाम दें)।
  6. निकाले गए फ्रेमवर्क से फ़ाइलों को निकालने के लिए android.jar। फिर ज़िप करने के लिए संपीड़ित करें और .jar :)

ps: शायद आपको 'framework_classes2.dex' के लिए दोहराने के चरण 4-6 की आवश्यकता है


DroidCon 2011

यहां सोनी एरिक्सन के एरिक हेलमैन बताते हैं कि छुपे हुए एंड्रॉइड एपीआई का उपयोग कैसे करें:

http://vimeo.com/30180393 (हम्म लिंक काम पर प्रकट नहीं होता है)।

गोटो DroidCon वेबपृष्ठ दिन 2 छुपा एपीआई 10:15 का उपयोग करने के लिए नीचे स्क्रॉल करें और आप इसे वहां देख सकते हैं।

लिंक मर रहे हैं!

मुझे यह एक मिला है: http://skillsmatter.com/podcast/os-mobile-server/hidden-api dunno यह कितना समय लगेगा

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


लांग का जवाब मेरे लिए काम करता था, लेकिन मुझे अभी भी कुछ कक्षाएं याद आ रही थीं, विशेष रूप से android.provider.Telephony में। मैं इसे इस तरह जोड़ने में सक्षम था:

  1. कक्षा कहां खोजें

    $ cd /path/to/out/target/common/obj/JAVA_LIBRARIES
    $ find . | grep "/Telephony.class"
    ./telephony-common_intermediates/classes/android/provider/Telephony.class
    ./android_stubs_current_intermediates/classes/android/provider/Telephony.class
    
  2. नई कक्षाएं जोड़ें और फ्रेमवर्क जेएआर फ़ाइल का पुनर्निर्माण करें

    cd /path/to/temp/folder
    cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes .
    cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes .
    cd classes
    jar cvf ../framework.jar .
    

या आप केवल आलसी हो सकते हैं और सभी वर्गों को एक विशाल जार फ़ाइल में शामिल कर सकते हैं:

cd /path/to/temp/folder
cp -r /path/to/out/target/common/obj/JAVA_LIBRARIES/*/classes .
cd classes
jar cvf ../framework.jar .




android-source