Giter Club home page Giter Club logo

apk-explorer-editor's People

Contributors

apk-editor avatar bluechipps avatar cuixiaoyiyi avatar easyvector avatar lennoard avatar nik-kot avatar sguinetti avatar sunilpaulmathew avatar threethan avatar tvirushive3 avatar visionr1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apk-explorer-editor's Issues

Suggest

I suggest a term search option. There are several files in applications.

UI improvements

The current UI of this app is very clunky...
May I suggest updating MaterialComponentsforAndroid or using Jetpack Compose .

Cryptographic APIs misuses

I'm a PhD student interested in finding security vulnerabilities in open source projects.

We found a total of 21 warnings (indicating potential vulnerabilities) when running the CogniCrypt static analyzer (*) on APK-Explorer-Editor (or its library dependencies). We documented each one of these issues in private gists for the sake of confidentiality (non-disclosure).

Can you please let us know whether we can share these gists with you? We are eager to evaluate the perception of developers (e.g. severity of these warnings) and improve APK-Explorer-Editor's security, and the quality of the reports of static analysis tools.

(*) https://github.com/CROSSINGTUD/CryptoAnalysis

Show progress for really large apks

Hi, just tried it on ~100MB apk on a pretty new device and had to force close after about an hour. So a more detailed progress indication, if possible with percentage of completion would be very welcome.

Also a way to gracefully quit or interrupt the process would be nice.

xapk or bundle export not working

Hi!

I tried to export some apps from my phone. All apk-s were working, but the bundles just wouldn't "Save to Downloads"

Is this known behavier?

Unable to install projects

I am making a "simple" sound modification to the game Dino T-rex and whenever I try and install the project APK, it fails. Error says invalid APK files selected

[Feature Request] Open files in an external editor

This app is an AMAZINGLY powerful application, but it would really be elevated by the ability to open files in an external editor, or better yet to save the decompiled data in a user accessible location.

Being able to open the files in an external editor (basically an "open with" functionality, or a setting option to use an external app as an editor) would free up the developer time to work on APK editing expertise, and not need to spend time developing the errata of a text editor and all the feature requests that come with it.

Permanent crash on launch. Reinstall and clear cache/data have no effect

Everything was working fine. I tested modifying and rebuilding a couple apps with no problem. Just all of a sudden would start crashing right after the splash/loading activity. Here is the logcat. I left out the pages of "unknown manifest element" prior to the ones seen here.

02-17 12:09:03.566 15545 15576 W PackageParser: Unknown element under <manifest>: queries at /product/priv-app/SafetyHubPrebuilt/SafetyHubPrebuilt.apk Binary XML file line #66
02-17 12:09:03.575 15545 15576 W PackageParser: Unknown element under <manifest>: queries at /data/app/~~7UvVqcXJSfy2t8zay8MDyQ==/net.gsantner.markor-Fnz0ovtirWGnzg30cBQFYg==/base.apk Binary XML file line #42
02-17 12:09:03.578 15545 15576 W PackageParser: Unknown element under <manifest>: queries at /data/app/~~7UvVqcXJSfy2t8zay8MDyQ==/net.gsantner.markor-Fnz0ovtirWGnzg30cBQFYg==/base.apk Binary XML file line #42
--------- beginning of crash
02-17 12:09:03.582 15545 15576 E AndroidRuntime: FATAL EXCEPTION: pool-2-thread-1
02-17 12:09:03.582 15545 15576 E AndroidRuntime: Process: com.apk.editor, PID: 15545
02-17 12:09:03.582 15545 15576 E AndroidRuntime: java.lang.NullPointerException
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at java.util.Objects.requireNonNull(Objects.java:220)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at l2.e.b(:2)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at t0.y.a(:1)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at s0.b.run(:3)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
02-17 12:09:03.582 15545 15576 E AndroidRuntime:        at java.lang.Thread.run(Thread.java:1012)

I do have a theory about what could have caused it. A few minutes prior to the start of the crashes, I uninstalled an app differently than I typically do. In an app management app I use, when I uninstalled I selected an option to "Keep data and signatures". I believe afterwards I tried to reinstall using my modified version of the same app. This is just a theory.

Texts of version and size overlap with each other

Describe the bug

Dear developer!
In the process of using, I found a bug in layout / display. As shown in the figure below, on the main page, texts of version and size overlap with each other. This may be an adaptation problem. I suspect it is because display and font size are set to large (mainly due to display size).
Because of some problems with my eyesight, I often use the largest font and display.
103165857-dbaf8580-4857-11eb-9e22-120ae1901389

App version is 0.17, my mobile phone is Google Pixel 2, and the screen resolution setting is 1920* 1080. And my font size and display size are the largest ! ! ! Also, my Android system version is 10.0.
The above is a description of the problem. The overall experience of the software is good. You can see that the design is very attentive. Thank you very much for the efforts of the developers all the time. I hope to receive a reply. Thank you so much!!

Expected behavior

I hope the texts are separated in this situation.

Steps to reproduce the behavior:

1.use the largest font and display in the display setting
2.open this app, and wait until the loading progress is done
3.this error could be seen

Screenshot

(The overlap is marked in red)

copy

Environment

  1. Version of APK Explorer & Editor : 0.17
  2. Device : Google Pixel 2,
  3. OS version : Android 10.0

Exporting to storage overwrites previous version of the app

Hi,

I regularly export to storage some apps when there is an update just in case I need to rollback to a previous version.

However when doing so the previous version is overwritten even though it's a different version number. Wouldn't it make sense to not overwrite?

Thank you

Open Github Discussion Panel?

Hey! :-)

I'd like to modify an app with the apk-editor but hesitate because I'm a bit of a noob. I've already raised the issue in several other places but didn't get a (helpful) response. Is it perhaps possible to open the "Discussions" panel here on Github to talk about things like these?

many thanks for your work!

cheers

Hindi Translation

<string name="about">के बारे में</string> 
<string name="all">सभी</string> 
<string name="android_version">एंड्रॉइड %s</string> 
<string name="apk_corrupted">एपीके फ़ाइल(फ़ाइलें) दूषित हैं. गर्भपात हो रहा है...</string> 
<string name="apk_installer">एईई एपीके इंस्टॉलर</string> 
<string name="apks">एपीके</string> 
<string name="app_name_short" translatable="false">AEE</string> 
<string name="apps">ऐप्स</string> 
<string name="apps_exported">निर्यातित APK\'s</string> 
<string name="apps_installed">इंस्टॉल किए गए ऐप्स</string> 
<string name="assembling">संयोजन\n\'%s\'</string> 
<string name="build">निर्माण</string> 
<string name="building">भवन\'%s\'...</string> 
<string name="bundle_install_question">क्या आप निश्चित रूप से ऐप बंडल \'%s\' इंस्टॉल करना चाहते हैं?</string> 
<string name="bundles">बंडल</string> 
<string name="cancel">रद्द करना</string> 
<string name="cancelling">रद्द किया जा रहा है...</string> 
<string name="certificate">प्रमाणपत्र</string> 
<string name="clear_cache">कैश को साफ़ करें</string> 
<string name="clear_cache_summary">AEE की आंतरिक सेटिंग्स हटाएँ</string> 
<string name="clear_cache_message">निर्यात किए गए एप्लिकेशन को छोड़कर, सब कुछ हटा दिया जाएगा।</string> 
<string name="clearing_cache_message">कैश साफ़ किया जा रहा है...</string> 
<string name="copying">\'%s\' की प्रतिलिपि बनाई जा रही है...</string> 
<string name="decompiling">\'%s\' को विघटित करना...</string> 
<string name="delete">मिटाना</string> 
<string name="delete_question">%s हटाएँ?</string> 
<string name="deleting">\'%s\' को हटाया जा रहा है...</string> 
<string name="details">विवरण</string> 
<string name="documentation">प्रलेखन</string> 
<string name="documentation_summary">AEE दस्तावेज़ देखें</string> 
<string name="donations">दान</string> 
<string name="donations_summary">AEE के विकास का समर्थन करें</string> 
<string name="discard">खारिज करना</string> 
<string name="discard_message">इस फ़ाइल में किए गए परिवर्तनों को ख़ारिज करें?</string> 
<string name="export">निर्यात</string> 
<string name="export_app_question">\'%s\' को डिवाइस स्टोरेज में निर्यात करें?</string> 
<string name="export_complete_message">चयनित संसाधन सफलतापूर्वक \'%s\' में निर्यात किया गया है</string> 
<string name="export_options">निर्यात पर (एपीके)</string> 
<string name="export_project_question">इस प्रोजेक्ट फ़ोल्डर की एक प्रतिलिपि डिवाइस स्टोरेज में बनाएं?</string> 
<string name="export_project_replace">\'%s\' पहले से मौजूद है। क्या आप इसे रिप्लेस करना चाहते हैं?</string> 
<string name="export_path_apks">निर्यात पथ (एपीके)</string> 
<string name="export_path_default">आंतरिक भंडारण/एईई</string> 
<string name="export_path_download">डाउनलोड करना</string> 
<string name="export_path_files_dir">बाहरी फ़ाइलें निर्देशिका</string> 
<string name="export_path_resources">निर्यात पथ (गैर-एपीके)</string> 
<string name="export_question">डिवाइस स्टोरेज में निर्यात करें?</string> 
<string name="export_resign">निर्यात एवं amp; इस्तीफ़ा देना</string> 
<string name="export_storage">भंडारण में निर्यात करें</string> 
<string name="exporting">%s निर्यात किया जा रहा है...</string> 
<string name="exploring">%s को खोजा जा रहा है...</string> 
<string name="explore_error_status">%s का पता लगाने में विफल</string> 
<string name="failed">असफल</string> 
<string name="failed_smali_message">निम्नलिखित \'smali\' फ़ाइलें असेंबल करने में विफल रहीं।\n\n%s</string> 
<string name="file_path_error">बाह्य फ़ाइल प्रबंधक से फ़ाइल पथ प्राप्त करने में विफल</string> 
<string name="grant">अनुदान</string> 
<string name="got_it">समझ गया</string> 
<string name="important">महत्वपूर्ण</string> 
<string name="install">स्थापित करना</string> 
<string name="install_bundle_question">क्या आप निश्चित रूप से चयनित ऐप बंडल इंस्टॉल करना चाहते हैं?</string> 
<string name="install_question">%s स्थापित करें?</string> 
<string name="install_resign">पुन: हस्ताक्षर करें & amp; स्थापित करना</string> 
<string name="install_storage">स्टोरेज से इंस्टॉल करें</string> 
<string name="installer_action">APK इंस्टॉल करने पर</string> 
<string name="installer_message">एईई स्प्लिट एपीके इंस्टॉलर सामान्य एपीके, स्प्लिट एपीके के साथ-साथ \'xapk\', \'apks\' और \'apkm\' ऐप बंडल को संभालेगा। किसी इंस्टॉलेशन को आरंभ करने के लिए, बस अगली स्क्रीन से इंस्टॉलेशन फ़ाइल का चयन करें और ऑनस्क्रीन निर्देशों का पालन करें।</string> 
<string name="installation_cancel_message">क्या आप निश्चित रूप से स्थापना रद्द करना चाहते हैं?</string> 
<string name="installing">%s स्थापित किया जा रहा है...</string> 
<string name="invite_friends">मित्रों को आमंत्रित करें</string> 
<string name="invite_friends_Summary">AEE आज़माने के लिए अपने दोस्तों को आमंत्रित करें</string> 
<string name="language">भाषा</string> 
<string name="last_modified">अंतिम संशोधित: %s</string> 
<string name="loading">लोड हो रहा है…</string> 
<string name="manifest">घोषणापत्र</string> 
<string name="name_empty">नाम खाली नहीं होना चाहिए. गर्भपात हो रहा है...</string> 
<string name="ok">ठीक</string> 
<string name="open">खुला</string> 
<string name="open_as_text">पाठ के रूप में खोलें</string> 
<string name="permission_denied_message">डिवाइस स्टोरेज तक पहुंचने की अनुमति अस्वीकार कर दी गई</string> 
<string name="permissions">अनुमतियां</string> 
<string name="preparing_apk">%s APK तैयार किया जा रहा है...</string> 
<string name="preparing_bundle">साझा करने के लिए ऐप बंडल तैयार किया जा रहा है...</string> 
<string name="preparing_bundle_install">स्थापना के लिए \'%s\' तैयार किया जा रहा है…</string> 
<string name="preparing_source">एपीके बिल्डिंग के लिए स्रोत तैयार किया जा रहा है...</string> 
<string name="press_back">एपीके एक्सप्लोरर को बंद करने के लिए फिर से बैक बटन दबाएँ</string> 
<string name="privacy_policy">गोपनीयता नीति</string> 
<string name="privacy_policy_summary">गोपनीयता नीति पढ़ें</string> 
<string name="private_key">निजी चाबी</string> 
<string name="private_key_summary">कस्टम निजी कुंजी चुनें</string> 
<string name="project_exist_action">किसी प्रोजेक्ट से बाहर निकलने पर</string> 
<string name="projects">परियोजनाओं</string> 
<string name="prompt">तत्पर</string> 
<string name="rate_us">एईई को रेट करें</string> 
<string name="rate_us_Summary">Google Play में AEE को रेट करें या/और समीक्षा करें</string> 
<string name="replace">बदलना</string> 
<string name="replace_file_question">%s को चयनित फ़ाइल से बदलें?</string> 
<string name="replace_question">%s को से बदलें</string> 
<string name="report_issue">रिपोर्ट मुद्दा</string> 
<string name="report_issue_summary">GitHub पर कोई मुद्दा उठाएँ</string> 
<string name="resign_only">केवल पुनः हस्ताक्षर करें</string> 
<string name="resigned_apks_error">\'smali\' फ़ाइलों को असेंबल करने में त्रुटियों के कारण बिल्डिंग रोक दी गई है। अधिक जानने के लिए कृपया \'विवरण\' जांचें।</string> 
<string name="resigned_apks_path">पुन: हस्ताक्षरित एपीके फ़ाइल उत्पन्न होती हैं।\n\nपथ: \'%s\'</string> 
<string name="resigning_apks">चयनित एपीके पर पुनः हस्ताक्षर करना...</string> 
<string name="root">जड़</string> 
<string name="save">बचाना</string> 
<string name="save_apk_message">क्या आप वर्तमान संशोधनों के साथ एक हस्ताक्षरित एपीके तैयार करना चाहते हैं?</string> 
<string name="save_projects_question">भविष्य में उपयोग के लिए प्रोजेक्ट सहेजें?</string> 
<string name="save_question">इस फ़ाइल में किए गए परिवर्तन सहेजें?</string> 
<string name="save_to_downloads">डाउनलोड में सहेजें</string> 
<string name="saving">सहेजा जा रहा है...</string> 
<string name="sdcard">आंतरिक स्टोरेज</string> 
<string name="sdk_compile">एसडीके संकलित करें: %s</string> 
<string name="sdk_minimum">न्यूनतम एसडीके: %s</string> 
<string name="search">खोजना…</string> 
<string name="select">चुनना</string> 
<string name="select_apk">स्प्लिट एपीके का चयन करें</string> 
<string name="select_storage">स्टोरेज से चयन करें</string> 
<string name="settings">समायोजन</string> 
<string name="settings_general">आम</string> 
<string name="settings_misc">मिश्रित</string> 
<string name="share">शेयर करना</string> 
<string name="share_message">%s साझा करें?</string> 
<string name="share_with">के साथ शेयर करें</string> 
<string name="sign_apk_custom">कस्टम कुंजी</string> 
<string name="sign_apk_default">डिफ़ॉल्ट कुंजी</string> 
<string name="sign_apk_with">APK के साथ साइन इन करें</string> 
<string name="signature_warning">हस्ताक्षर बेमेल के कारण इंस्टॉलेशन विफलता से बचने के लिए AEE हस्ताक्षरित एपीके/ऐप बंडल इंस्टॉल करने से पहले ऐप के पुराने संस्करण (यदि मौजूद है) को अनइंस्टॉल करना महत्वपूर्ण है।</string> 
<string name="signing">\'%s\' पर हस्ताक्षर...</string> 
<string name="signing_custom">कस्टम कुंजी कॉन्फ़िगर करें</string> 
<string name="signing_default">डिफ़ॉल्ट कुंजी के साथ हस्ताक्षर करें</string> 
<string name="signing_question">\'%s\' को नए के रूप में उपयोग करें</string> 
<string name="signing_select_question">चयनित फ़ाइल को नये %s के रूप में उपयोग करें?</string> 
<string name="signing_summary">कस्टम कुंजी के साथ APK पर हस्ताक्षर करने के लिए, AEE को pk8 प्रारूप में एक निजी कुंजी और उसी कुंजी से निर्यात किए गए X509 प्रमाणपत्र की आवश्यकता होती है। निजी कुंजी और X509 प्रमाणपत्र बनाने के बारे में अधिक पढ़ने के लिए यहां क्लिक करें।</string> 
<string name="signing_title">एपीके हस्ताक्षर</string> 
<string name="size">आकार: %s</string> 
<string name="sort_by">ऐप्स को क्रमबद्ध करें</string> 
<string name="sort_by_id">पैकेज आईडी</string> 
<string name="sort_by_installed">स्थापित समय</string> 
<string name="sort_by_name">नाम</string> 
<string name="sort_by_size">आकार</string> 
<string name="sort_by_updated">अद्यतन समय</string> 
<string name="sort_order">ए-जेड</string> 
<string name="sort_size">छोटे से बड़ा</string> 
<string name="source_code">सोर्स कोड</string> 
<string name="source_code_summary">AEE का स्रोत कोड जांचें</string> 
<string name="split_apk_installer">एईई स्प्लिट एपीके इंस्टॉलर</string> 
<string name="start">शुरू</string> 
<string name="success">सफलता</string> 
<string name="support_group">सहायता समूह</string> 
<string name="support_group_summary">AEE सहायता समूह से जुड़ें</string> 
<string name="system">प्रणाली</string> 
<string name="text_editor">एईई पाठ संपादक</string> 
<string name="transfer_exported_apk">पहले से निर्यात किए गए APK को नए पथ पर स्थानांतरित किया जा रहा है...</string> 
<string name="unknown_file_message">AEE इस समय \'%s\' को संभाल नहीं पाता है। यदि आप इस फ़ाइल प्रारूप को जानते हैं, तो आप इस फ़ाइल को डिवाइस स्टोरेज में निर्यात कर सकते हैं और समर्थित तृतीय-पक्ष एप्लिकेशन का उपयोग करके संपादन का प्रयास कर सकते हैं। वैकल्पिक रूप से, आप इसे टेक्स्ट फ़ाइल के रूप में खोलने का प्रयास कर सकते हैं?</string> 
<string name="unsupported_file">असमर्थित फ़ाइल</string> 
<string name="unsupported_file_arsc">आपने \'resources.arsc\' का चयन किया है, जिसे दुर्भाग्य से AEE के लिए पढ़ना असंभव है।\n\nResources.arsc क्या है?\nresources.arsc एक बाइनरी संसाधन फ़ाइल है जिसमें किसी एप्लिकेशन के कॉन्फ़िगरेशन-विशिष्ट मान होते हैं, जैसे पूर्णांक, बूलियन और स्ट्रिंग्स, साथ ही यूआई लेआउट जैसे अधिक जटिल संसाधनों के संदर्भ।\n\nResources.arsc को कैसे पढ़ें?\nप्रिंट आउट करने के लिए Apktool या Android एसेट पैकेजिंग टूल (AAPT) जैसे टूल का उपयोग किया जाएगा resource.arsc की सामग्री को मानव-पठनीय प्रारूप में बदलें।</string> 
<string name="unsupported_file_dex">आपने एक \'DEX\' (.dex) फ़ाइल चुनी है, जिसे दुर्भाग्य से AEE के लिए पढ़ना असंभव है।\n\nDEX फ़ाइल क्या है?\nDex फ़ाइल में कोड होता है जो अंततः एंड्रॉइड रनटाइम द्वारा निष्पादित होता है। प्रत्येक एपीके में एक \'classes.dex\' फ़ाइल होनी चाहिए, जो ऐप के भीतर उपयोग की जाने वाली किसी भी कक्षा या विधियों का संदर्भ देती है। अनिवार्य रूप से, कोड बेस के भीतर उपयोग की गई कोई भी गतिविधि, ऑब्जेक्ट या फ़्रैगमेंट एक Dex फ़ाइल के भीतर बाइट्स में परिवर्तित हो जाएगा जिसे एंड्रॉइड ऐप के रूप में चलाया जा सकता है।\n\nDEX फ़ाइल को कैसे पढ़ा जाए?\nएक DEX फ़ाइल को परिवर्तित किया जाएगा \'jar\' प्रारूप में और बाद में \'dex2jar\' और \'JD-GUI\' जैसे टूल का उपयोग करके \'Java\' फ़ाइल में।</string> 
<string name="update">अद्यतन</string> 
<string name="user">उपयोगकर्ता</string> 
<string name="user_interface">प्रयोक्ता इंटरफ़ेस</string> 
<string name="warning">चेतावनी</string> 
<string name="wrong_extension">कृपया %s एक्सटेंशन वाली फ़ाइल चुनें.</string> 
<string name="x509_certificate">X509 प्रमाणपत्र</string> 
<string name="x509_certificate_summary">कस्टम X509 प्रमाणपत्र चुनें</string> 
<string name="xml_corrupted">XML स्ट्रिंग दूषित है. गर्भपात हो रहा है...</string> 
<string name="xml_decode_failed">%s को डिकोड करने में विफल</string> 
<string name="yes">हाँ</string> 

Feature suggestion: App Cloning

It would be great if APK Explorer and Editor could support App Cloning.
Being able to sign apks is part of the solution, so adding an option to edit the app name and app UID could make it easier to install multiple versions of the same apps (not only 2 versions like when using Android Work profile, but many more like App Cloner. Has this feature been considered? Thanks for the feedback!

Add APK Export Quickstart and description of exported APK structure

APK Export Quickstart

I wanted to extract APK form the phone. And it appears that only this app can do it and not dead. (Thank you very much for that!)

However, I have faced unexpected difficulties.
I have read the content on this page ( https://apk-editor.github.io/general/ ) on the page and in the documentation in application's "About".
But there is no information where APKs are stored after exporting and why the export path settings are disabled.

In the same time after I have clicked "Export to storage" I have found nothing on the APK's page.
Also, my file manager has showed me nothing about new files in the system.
So I was almost in the desperation that this app is not working too.
As I have read after, only Google's Files can read /storage/emulated/0/Android/data.
I suppose it is the reason why both my file manager and the APK's page (both `APK'S' and 'BUNDLES' tabs) shows nothing about the exported APK.

(By the way, Android: 11 MIUI: 12.5.1 Global)

However, I have found this issue #18 . I check .../Android/data/com.apk.editor/files using Google's Files and have found the exported application.

I suppose it would be less stressful if, for example, the documentation says where the exported APK must be stored.
Also, I suppose it possible to check after the export that the APK is actually discoverable by the APK's page. If no, alert about it and say where the files must be located.

Description of exported APK structure

The Google Play Services on another phone (or some its dependencies) goes wild (by the way I think you have much experience and you maybe know the solution so just in case the problem description).
In order to extract one thing from the broken phone an app must be updated.
I decided to update it using ADB using an APK from another phone (since google market is unusable but the app is distributed only there).
I have exported the APK from the other phone using this app. I have end up with the following structure:

| com.%ID_OF_APP%
| - base.apk
| - split_config.arm64_v8a.apk
| - split_config.%LANGUAGE_CODE%.apk (there are two such .apk because of two languages).
| - split_config.xxhdpi.apk

And it is unknown what to do with such construction if one has not met "Split APK" before (like me). I was able to find some info because I have noticed the mentions of "Split APK" in the app description and have searched this term. But it would useful to have some description at hand.

Slow file browser

It's extremly slow when browsing file system. Could you please use the native DocumentProvider instead? Thanks!

Editing .dex files

Using apktool (Apache License 2.0), you can decompile an .apk file. (apktool d)
While the .apk file is decompiled, the classes.dex is converted to smali and the resources are extracted.
After making the changes to e.g. the smali files, the apk can be assembled (apktool b).

This tool could be integrated into the app, as it would give the app even more abilities.

Failing to install modified apk

I am getting this error when installing modified app with App Manager:
-124: Failed parse during installPackageLl: Targeting R+ (version 30 and above) requires the resources. arsc of installed APKS to be stored uncompressed and aligned on a 4-byte boundary

Export paths option are disabled in settings

Hi,

Both of the export path settings (APK & non-APK) are lined through and disabled.

Exports do work as expected. They just default to \Android\data\com.apk.editor\files

What would cause the path settings to be disabled? Storage permission is on.

Edit APK without install...

Why is install the only option when you go into apk tab? Some apps are impossible to install - can only be dropped into /system folder so not being able to edit those without installing is a major pain in the ass ( Some apps you don't wanna install either without opening first and checking... Some might even need edit first to even be able to install - think unsupported android version although very rare nowadays - But your app does not allow any sort of edit without installing app on device )

It offers re signing tho so surely it can also offer full edit ?

Can you add ability to do edit on selected apk file in a future release?

Thanks!

"Invalid APK files" issue still exists as of v0.25

This still happens with some APKs. The first I tried was EVGo 6.0.67, which worked just fine. All I did was change the version to disable an update nag. The second was UPS 9.7.9.6, which failed to build even with no modifications. I noticed that the new APK was about 10 MB smaller than the original, so perhaps that's part of it.

Steps to reproduce issue:

  • Load UPS into the app
  • When the list of files pops up, hit build without changing anything
  • The build will seem to complete and says it's exported, but it can't be installed, either with this app or the native package installer with "invalid APK files" as the error

Originally posted by @dragos240 in #25 (comment)

Also seems to be the same issue as #9

Bug ".xml"

I changed the "main.xml". I saved and installed the app with changes made. Given error in executing the apk... I went back to APK Explorer Editor I tried to view the file "main.xml" and crash the execution.

App Name: APK Explorer & Editor Package Name: com.apk.editor App Version: v0.24 SDK Version: 30

Crash Report

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.apk.editor/com.apk.editor.activities.TextViewActivity}: o2.a: Unexpected chunk type:19516
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3491)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3659)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2115)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:250)
at android.app.ActivityThread.main(ActivityThread.java:7755)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Caused by: o2.a: Unexpected chunk type:19516
at p2.b.b(Unknown Source:58)
at m2.a.d(:3)
at t2.c.H(:1)
at w0.g.c(:9)
at com.apk.editor.activities.TextViewActivity.onCreate(:5)
at android.app.Activity.performCreate(Activity.java:8077)
at android.app.Activity.performCreate(Activity.java:8061)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3464)
... 11 more

Steps to reproduce the issue:

Activity memory leak caused by the anonymous thread and invalid interrupt check

An anonymous inner class will hold a reference to the this pointer of the outer class and will not be released until the thread ends.

It will hold the Activity and prevent its timely release.

com.apk.editor.activities.InstallerActivity

The anonymous thread can be replaced by static class to eliminate unnecessary references.

Besides, an anonymous thread cannot call the interrupt() method until the Activity exits, so calling isInterrupted() in the thread of the InstallerActivity refreshStatus() method may not always work.

The anonymous thread can be replaced by static class to eliminate unnecessary references and taken as a field to interrupt the thread.

If you agree, a PR will be submitted.

APK can't select

I have Xiaomi Poco X3 NFC android 10, when I go to select a apk say that (see picture) but on my Sony Xperia Z5 android 7.1.1 the apk can select the same apk file is not split, why ?
IMG_20220725_192917

Add files inside apk

Hello, it would be nice if we could add new files inside the APK instead of only being able to replace them, thank you !

Editing text files within AEE?

Seriously, Thanks for creating this App It works amazingly well and has saved me tons of time.

Would it be possible to edit text files within AEE? It's a bit clunky to export, edit externally and then replace.

(I'm Currently on v0.14 from F-Droid, If this has already been implemented please ignore this issue.)

[Feature Request] Automatically set android:extractNativeLibs to true to improve success rate of rebuilds

Many applications won't install after being rebuilt with AEE. I tried installing one such apk over adb, and received the following error:
[INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]

This is resolved by setting android:extractNativeLibs to true in the application tag of AndroidManifest.xml.

Doing so may slightly increase the size of an app once installed, but has no other downsides.

One example of this, which I used to test, is Discord. Fails to install with no changes, but just this change fixes that.

please , min_sdk 21 (android 5.0) !

thank you for so usefull application!

please, come up AEE to min_sdk 21 (android 5.0) !
(or , if not possible, then at least to min_sdk 22, Android 5.1)
many thanks in advance!

Crash

App Name: APK Explorer & Editor
Package Name: com.apk.editor
App Version: v0.22
SDK Version: 29

Crash Report

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.EditText.getVisibility()' on a null object reference
at com.apk.editor.MainActivity.onBackPressed(:4)
at android.app.Activity.onKeyUp(Activity.java:3656)
at android.view.KeyEvent.dispatch(KeyEvent.java:2833)
at android.app.Activity.dispatchKeyEvent(Activity.java:3973)
at u.e.f(Unknown Source:0)
at e0.d.b(Unknown Source:10)
at u.e.dispatchKeyEvent(Unknown Source:18)
at b.c.dispatchKeyEvent(Unknown Source:10)
at b.f$d.dispatchKeyEvent(:1)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:371)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5645)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5508)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5011)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5064)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5030)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5170)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5038)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5227)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5011)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5064)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5030)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5038)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5011)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5064)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5030)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5203)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5368)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3064)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2607)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2598)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3041)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:336)
at android.os.Looper.loop(Looper.java:215)
at android.app.ActivityThread.main(ActivityThread.java:7684)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:507)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

Steps to reproduce the issue: I opened a app Android system..then pressed back ..it asked me I want to save project...I declined and deleted the project and pressed back and came back to apps...then again pressed back to exit .then..this crash showed..

Portuguese short_description is too long

Fastlane's short_description.txt is limited to 80 chars. Yours for pt-BR currently has 86 chars and thus will be truncated in the middle of its last word. Could you please fix that? I don't speak Portuguese, so I cannot vouch for correctness – but as it's clear it's an Android app, maybe it can simply be shortened to

Instalador/explorador/editor de APKs/Pacote de apps de software livre

Done that locally in my repo now; would be nice if you could fix it here as well before the next release is tagged and "unfixes" it again with your listing 😉 Thanks in advance!

Bug ".XML"

Simplesmente tentei abrir um arquivo ".xml":

App Name: APK Explorer & Editor
Package Name: com.apk.editor
App Version: v0.24
SDK Version: 30

Crash Report

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.apk.editor/com.apk.editor.activities.TextViewActivity}: o2.a: Unexpected chunk type:16188
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3491)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3659)
	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2115)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:250)
	at android.app.ActivityThread.main(ActivityThread.java:7755)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Caused by: o2.a: Unexpected chunk type:16188
	at p2.b.b(Unknown Source:58)
	at m2.a.d(:3)
	at t2.c.H(:1)
	at w0.g.c(:9)
	at com.apk.editor.activities.TextViewActivity.onCreate(:5)
	at android.app.Activity.performCreate(Activity.java:8077)
	at android.app.Activity.performCreate(Activity.java:8061)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3464)
	... 11 more


Steps to reproduce the issue: 

APP question regarding package installer

Dear Team AEE - My question is regarding the installer: Does the AEE app rely on the built-in Android Package Installer or does it work independently from it?
Thank you and I appreciate your time. Sincerely,

Extract apk to internal storage

It would be very great to extract the apk in the internal storage so you can easily edit it with other apps then recompile with apk explorer editor

Exploring app

FATAL EXCEPTION: AsyncTask #2
Process: com.apk.editor, PID: 2771
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:325)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6994)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1092)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.view.View.requestLayout(View.java:19810)
at android.widget.TextView.checkForRelayout(TextView.java:7369)
at android.widget.TextView.setText(TextView.java:4487)
at android.widget.TextView.setText(TextView.java:4344)
at android.widget.TextView.setText(TextView.java:4319)
at android.app.ProgressDialog.setMessage(ProgressDialog.java:316)
at b.b.a.i.j0.doInBackground(:1)
at android.os.AsyncTask$2.call(AsyncTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more

Ability to delete folders?

Hey.
First of all, thanks for the app. I don't know much about android apps and java, but I do have a basic understanding, which makes me think that it should be possible to delete folders. This would be useful for deleting trackers/crash reporters which potentially invade the user's privacy.
Thanks :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.