2012-09-28 20 views
6

मुझे एपीके-फाइल से ऐप आइकन निकालने की आवश्यकता है। मुझे बस एक आइकन चाहिए, मैं एपीके में बाकी सब कुछ निकालना नहीं चाहता हूं। फ़ाइलों को पकड़ना आसान है, लेकिन मैं कैसे निर्धारित करूं कि कौन सी आइकन फ़ाइल सही ऐप-आइकन है। मुझे लगता है कि यह संसाधन तालिका में संग्रहीत है? इसलिए मुझे लगता है कि मुझे वास्तव में संसाधन तालिका को पढ़ने की ज़रूरत है और मुझे उम्मीद है कि संसाधन तालिका से मैं आइकन फ़ाइल नाम निर्धारित कर सकता हूं जिसे मैं ऐप से निकाल सकता हूं।एपीके फ़ाइल से ऐप आइकन निकालें

मैं इस के लिए एक सरल उपकरण की जरूरत है, मैं apktool कि पूरे apk फ़ाइल निकाल सकते हैं के बारे में पता है, लेकिन यह नहीं है जो मैं चाहता

  • के बाद से यह अन्य सामान का एक lof है कि मैं की आवश्यकता नहीं है (करता है डिकंपाइल, अन्य फ़ाइलों आदि)

  • यह

क्या कोई अन्य उपकरण मैं सिर्फ आइकन फ़ाइल पथ की पकड़ पाने के लिए उपयोग कर सकते हैं है चलाने के लिए बहुत समय लेता है संपीड़न हटाने?

सभी सुझाव की सराहना की कर रहे हैं

संपादित करें: स्पष्ट करने के लिए, मैं डिवाइस पर यह करने के लिए कोशिश नहीं कर रहा हूँ। मैं इसे एक पीसी पर करने की कोशिश कर रहा हूं।

+0

वास्तव में आप एक drawable कार्यक्रम संबंधी के बाद कि आप इसे बिटमैप में बदल जाएंगे और आपके डिवाइस स्मृति में सहेज सकते हैं के रूप में एप्लिकेशन आइकन मिलता है। – Dharmendra

+0

@ धर्मेंद्र, मैं वास्तव में एक वास्तविक सेवा पर नहीं, बल्कि वेब सेवा पर ऐसा करने की कोशिश कर रहा हूं। मैं इस जवाब में –

उत्तर

10

aapt एंड्रॉइड एसडीके के साथ टूल जहाजों, platform-tools के तहत पाए गए आपको आपको आवश्यक विवरण देना चाहिए। apktool ships with aapt

aapt d --values badging payload.apk

इस उत्पादन का उपयोग करके आप apk से बाहर आइकन फ़ाइल निकाल सकते हैं (जो एक ज़िप फ़ाइल है)।

0

apktool का स्रोत उपलब्ध है। चूंकि संसाधन निष्कर्षण और कोड अपघटन काफी भिन्न हैं, इसलिए मुझे संदेह है कि इसे कोड अपघटन को हटाने के लिए इसे संशोधित करना आसान होगा ताकि आपको इसकी आवश्यकता के अनुसार इसे कम किया जा सके।

आइकन फ़ाइल नाम का निर्धारण करने के लिए के रूप में, आप AndroidManifest.xml की सामग्री पर कि आधार, लेकिन आप स्क्रीन घनत्व, अभिविन्यास, भाषा विन्यास के आधार पर आइकन के कई संस्करण के लिए खाते, आदि की आवश्यकता हो सकती

+0

प्रश्न में स्पष्ट कर दूंगा। मैं इन शर्तों में भी सोच रहा हूं और मैंने apktool से मैनिफेस्ट अपघटन भाग निकालने के लिए काम शुरू कर दिया है। लेकिन कुछ औजारों को ढूंढना बहुत अच्छा होगा जो बॉक्स के बाहर ऐसा करेंगे। मैं उम्मीद कर रहा था कि कहीं ऐसा उपकरण है। –

5

मेरे ज्ञान के अनुसार (और विकिपीडिया के अनुसार), एपीके फाइलें ज़िप फ़ाइल स्वरूपित पैकेज हैं। इसलिए मुझे लगता है कि आप एपीके-फाइल को अनजिप करने के लिए किसी भी अनजिप टूल का उपयोग कर सकते हैं और इच्छित आइकन ले सकते हैं। लॉन्चर-आइकन के लिए, बस AndroidManifest.xml फ़ाइल खोलें और <application> की android:icon संपत्ति देखें। यह शायद इसलिए तरह दिखता है:

android:icon="@drawable/ic_launcher"

आइकन फ़ाइल तो res/drawable-<dim>/ic_launcher.png, जहां <dim>ldpi, mdpi, hdpi, xhdpi के किसी भी है जो विभिन्न प्रस्तावों के लिए खड़े हो सकता है किया जाएगा। सबसे बड़ी छवि xhdpi या hdpi में होगी।

+0

उत्तर के लिए धन्यवाद लेकिन दुर्भाग्य से AndroidManisfest.xml फ़ाइल को एक बाइनरी प्रारूप में संकलित किया गया है। अगर कोई छोटी उपयोगिता पा सकता है जो AndroidManifest.xml को डीकंपाइल करेगा तो यह एक अच्छा समाधान होगा। –

7
  • 7zip
  • जैसे उपकरण के साथ
  • इसे अनज़िप .zip में .apk फ़ाइल का नाम बदलें के तहत png फ़ाइलों के रूप में प्रतीक खोजें: /res/drawable-hdpi/icon.png

संपादित करें: ध्यान दें कि यह फाइल है सभी एपीके फाइलों में मौजूद नहीं है लेकिन उनमें से ज्यादातर में। मुझे सभी .png फ़ाइलों को निकालने और सूची में से किसी एक को चुनने के अलावा स्वयं को बेहतर समाधान नहीं मिला।

+0

यह सही समाधान नहीं है क्योंकि आप आइकन नाम निर्धारित नहीं कर सकते हैं और ऐप में कई आइकन हो सकते हैं। icon.png का मतलब यह नहीं है कि यह ऐप आइकन है। –

+0

हां, मैंने अपना जवाब संपादित किया। मुझे लगता है कि सही खोजने का कोई तरीका नहीं है; मेरे व्यक्तिगत उपयोग के लिए, मैं सर्वर पर सभी फाइलें निकालता हूं और सभी .png फ़ाइलों को सूचीबद्ध करता हूं, फिर मैं उनमें से एक का चयन करता हूं। – adrianTNT

5
//if your apk is not installed ..only having .apk on sdcard 
    String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example... 
    PackageManager pm = getPackageManager(); 
    PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0); 

    // the secret are these two lines.... 
    pi.applicationInfo.sourceDir  = APKFilePath; 
    pi.applicationInfo.publicSourceDir = APKFilePath; 
    // 

    Drawable APKicon = pi.applicationInfo.loadIcon(pm); 
    String AppName = (String)pi.applicationInfo.loadLabel(pm); 

आप इस लिंक

Get-apk icon

0

तुम भी इस उद्देश्य के लिए उपयोग कर सकते हैं APK Icon Editor उल्लेख कर सकते हैं।

हालांकि यह अस्थायी फ़ोल्डर में पूरी एपीके सामग्री निकालता है, यह आपको आसानी से संपादित करने, प्रतिस्थापित करने या आइकन निकालने की अनुमति देता है। APK चिह्न संपादक aapt (kxb के जवाब में metioned) का उपयोग करता है, इस पर एक सरल बनाने आवरण के रूप में कार्य।

उपकरण खुला स्रोत, सी ++/क्यूटी में लिखा है। विंडोज के लिए द्विआधारी उपलब्ध हैं।

1

यह bash समारोह आइकन निकालने और preview साथ यह प्रदर्शित करेगा। आप पर एक मैक नहीं कर रहे हैं, तो आप ImageMagick से display आदेश का उपयोग कर सकते हैं।

preview-android-icon() { unzip -p $1 $(aapt d --values badging $1 | sed -n "/^application: /s/.*icon='\([^']*\).*/\1/p") > /tmp/$$.png && preview /tmp/$$.png; } 

इस तरह यह प्रयोग करें:

preview-android-icon /path/to/your.apk