What is the purpose of APKMirror.PK? What APKs are accepted? I just uploaded an APK but it’s not going live.
APKMirror.pk is a highly acurated community, so there’s absolutely no guarantee we will publish your app. The site’s primary purposes are, in the order of importance:
- Allow updates to popular apps that are rolling out slowly and may not yet be available to you to be downloaded and installed sooner.
- Get around geo-restrictions and sideload popular apps that may not be otherwise available in your country.
- Provide an archive of popular applications along with changelogs and descriptions, so that you can roll back to an earlier version if a new one starts crashing or removes features you’ve grown to enjoy. You can also use the archive for research purposes to compare changes from one version to another, for example.
- Allow for alternate distribution of select applications, at the discretion of our management and editorial teams.
As you can see in the above list, #4 is in the last place. One of APKMirror’s signature features is careful curation, so, statistically, most new apps that get uploaded will likely get denied, depending on circumstances.
If your app is new, doesn’t have a proven track record, and not unique, it will likely not be approved.
If the app is in beta, lacks a meaningful description or any arguments for why it should be accepted (or we can’t verify its legitimacy), it will likely not be approved.
If you don’t have credibility as a developer (existing popular apps, notoriety in the field, etc), your chances of getting approved go down.
We get hundreds of uploads each day, there are millions of apps out there, the majority of which (if we’re being frank) are not very good, and we simply have no other choice but be selective. We hope you understand why.
Does APKMirror.pk host paid or pirated apps?
APKMirror.pk has a no-piracy policy and does not host paid apps.
Note: There are very rare exceptions to the no paid apps rule. Sometimes, developers make updates to paid apps available to the public, usually to test beta releases. In such cases, there is usually a license check involved to make sure the apps were previously purchased. MX Player Pro is a notable example of such an exception because J2 Interactive, the app’s developer, provides test APKs on its site.
I got an error message that I’ve been blocked by Cloudflare. Why?
If you use a download manager that may download files in multiple simultaneous chunks, such as ADM (Advanced Download Manager), or if you’ve downloaded dozens of APKs in a span of several minutes, you may get temporarily blocked by Cloudflare. The block will lift automatically after a short time, and you don’t need to contact us or do anything but wait.
However, if you are still seeing the block page after an hour or longer, please get in touch.
Safety and Security
Security: What measures do you take to make sure all uploaded APKs are real and created by the respective developers?
- All APKMirror.pk uploads are verified prior to publishing.
- We make sure that the cryptographic signatures for new versions of all previously published apps match the original ones, which means we know if uploaded APKs were signed by the real devs or someone pretending to be them.
Note: APKMirror.pk has been protected from the Janus vulnerability in Android.
- a. For new apps that have never been uploaded to APKMirror.pk, we try to match the signatures to other existing apps by the same developer. If there’s a match, it means that the same key was used to sign a previously known legitimate app, therefore validating the new upload.
b. If we see no matches, we try to obtain and compare to a version of the same app from the Play Store or another verified location. If it’s a beta, we will try to get into it. If we can’t, we will attempt to contact the developer.
c. If we’re unable to verify the legitimacy of a new APK, we will simply not publish it.
If I install an APK from this website, will I be able to update the app from the Play Store?
Yes, absolutely. The Play Store installs APKs it downloads from Google’s servers, and sideloading from a site like APKMirror.pk goes through a very similar process, except you’re the one performing the downloading and initiating the installation (sideloading).
As soon as the Play Store finds a version of the app newer than the one you’ve sideloaded, it will commence an update.
What are these weird terms I’m seeing on some APKs – dpi, nodpi, arm, arm64, x86?
- DPI: screen density, measured in dots per inch. Each device has a certain DPI metric, and some APKs are optimized for specific DPIs.
- nodpi: APKs marked nodpi, or not marked with any DPI-related info at all, are meant for all devices.
- 120, 160, …, 640 dpi: these APKs are meant for specific DPIs only. See the next several questions for more details.
- arm (armeabi, armeabi-v7a), arm64 (arm64, arm64-v8a), x86, x86_64, mips, mips64: these are CPU architectures. See this FAQ entry for more info.
HowToGeek has a detailed explainer here: How to Find Your Android Device’s Info for Correct APK Downloads.
If there are both nodpi and specific dpi APKs available, which one should I download?
If you’re confident of your device’s DPI (dots per inch) value, go ahead and download the APK that most closely matches it. If there is no exact match, pick the APK with a higher DPI than your device, if available. If not, you’ll probably be alright with a slightly lower DPI.
Otherwise, it’s safe to download the nodpi variant – it essentially contains resources that should look right on any device. The only downside of a nodpi APK is that it’s almost always larger in size since it’s not optimized for a specific DPI.
Rule of thumb: When in doubt, go for nodpi.
How can I find out my device’s DPI, architecture, screen size, and other specs?
After trying numerous system info apps, we are currently recommending Droid Hardware Info. It contains the DPI (Device tab), architecture (System tab), Android OS version (Device tab) as well as a plethora of other info.
Is it OK to install arm64 apps on an arm device? What about arm apps on an arm64 device? Likewise, for x86 and x86_64?
Since 64-bit operating systems are backwards-compatible with 32-bit apps, but not vice versa, it’s safe to install 32-bit apps on both 32-bit and 64-bit OSes, but not the other way around.
32-bit APKs installed on 64-bit devices may not be as optimized, so if you have a 64-bit device, install a 64-bit APK when it becomes available, if it exists at all. Many developers simply don’t bother building 64-bit-optimized APKs.
- arm on arm device: OK.
- arm64 on arm device: Nope.
- arm on arm64 device: OK
- arm64 on arm64 device: OK
Same for x86 and x86_64, mips and mips64, etc.
Do you support Google’s new split APKs/App Bundles/Dynamic Delivery?
Yes, as of March 2020, APKMirror supports split APKs. Unfortunately, split APKs cannot be sideloaded with a single tap like regular APKs, so in order to install these .apkm bundles, you will need APKMirror Installer.
Can I use Google’s Advanced Protection and sideload APKs?
On March 18th, Google announced that if you enroll in the Advanced Protection program, you will be able to install apps using only the pre-installed app store, like the Play Store, and sideload APKs using only adb.
This means you can still download packages from APKMirror, but you won’t be able to install them via simple taps. Instead, you’ll need to connect the device to your computer and install via the adb install command.
To enroll into Advanced Protection, you’ll need to purchase two security keys and register them to your Google Account. If you have an Android 7.0+ phone, you can use your phone’s built-in security key.
Why do some APKs require libraries to be installed first, such as Chrome/WebView and the TriChromeLibrary?
Before Android 10, Chrome and WebView both shipped with a copy of a huge library called libmonochrome.so, wasting a bunch of space because each shipped with a full copy inside. With Android 10+, Google moved to a new dependency model to avoid this duplication. What happens in Android 10+ is there’s an entirely new APK called TriChromeLibrary which contains libmonochrome.so that both Chrome and WebView are able to use and in turn don’t have to ship with. This explains why Chrome for Android 10+ is <10MB, whereas Chrome for Android 7+ is over 100MB.
These libraries are weird and funky in several ways:
- You won’t find a TriChromeLibrary listing on the Play Store, even if you use the right pname. The Play Store apparently has a special way of downloading it.
- The correct TriChromeLib has to be installed before Chrome or WebView, or else they will fail to install.
The good news is APKMirror.pk itself now supports detecting these library dependencies and from April 29th, 2020 on will show a warning when you attempt to download an APK with a library dependency (whether we already have the necessary library or not) like so:
We also worked with the developer of ML Manager APK manager app to not only include support for showing and uploading libraries like the TriChromeLibrary, but also having such libraries uploaded automatically when you upload APKs that need them (like Chrome or WebView).
Why can’t I sideload some system APKs? I’m getting a signature error.
For some reason, some manufacturers sometimes forget to sign some system APKs with APK Signature Scheme v2, while indicating that these APKs are indeed v2-signed. These APKs are usually signed with only APK Signature Scheme v1 (jar signature), so we can still confirm the signature is valid, but Android will refuse to sideload them due to the missing v2 signature.
The only way to install such APKs is with root, by copying them directly to the system partition and bypassing the typical sideloading flow – a procedure beyond the scope of this FAQ.
APKMirror now displays a warning for such APKs:
Why did I just get an error when trying to install an APK?
There could be several reasons for installation errors. Here are some of them. You’re trying to install an APK:
- with a cryptographic signature that doesn’t match the already installed one. All APKs hosted on APKMirror.pk are signed with official release keys, so make sure the app you’re trying to update was not previously re-signed or that you’re using the matching signature for cases when an app has multiple valid signatures.
- with a version lower than the one already installed. In other words, you’re trying to downgrade without uninstalling the current app first.
- with libraries meant for a device with a different CPU architecture. For example, if you’re using a 32-bit arm device, you’ll get an error trying to install an APK with arm64 libs inside. However, 64-bit OSes are backwards-compatible with 32-bit ones, so you should have no issues installing APKs with arm libs on an arm64 device.
If you want to find out why an app isn’t installing, you can use our own APKMirror Installer to install the APK – it’ll tell you the exact reason, like so:
Why do some apps have multiple signatures? Which one do I pick?
The majority of applications have only one valid signature, but there are cases when an app can be signed with one (or sometimes more than one) of several valid signatures. You need to make sure the signature of the APK you are downloading matches the one you already have installed, otherwise the update will fail with a signature mismatch error.
Here are some reasons an app may have multiple valid signatures:
- As of Android 9, thanks to APK Signature Scheme v3, developers can now perform key rotations and swap out existing keys for new ones.
- Apps distributed via the Play Store could have different signatures from other app stores or even direct downloads (for example, Aptoide, Github, etc.).
- Keys used to sign system apps sometimes vary depending on the device or OS version. For example, Google uses many different signatures for its system apps.
- Sometimes, we don’t know why multiple valid keys exist. For example, the Play Store app itself has 2 valid signatures, as do Files by Google, Google Play services, and others.
As of May 2022, we now show a notice when an app could have multiple valid keys. We also show the first few characters of the SHA-1 signature for each listed APK so that you can more easily select the right download to match the signature of the app you already have installed.
The easiest method is to install a file manager that prints app signatures, like My APK. At this point, you may start wondering how you can tell which signature is used by the app you’re trying to update. Here are some ways you can do that:
- Try downloading an APK with one signature, and if it fails to update with the mismatched signature error, try another APK signed with a different signature. If the update succeeds, you’ve found the right signature – try to remember it for next time.
- Install ML Manager and try to upload the app you’re trying to update to APKMirror. If the APK is already present on the site, you will see the url of that APK and the corresponding signature if you visit the page.
- Use desktop tools like apksigner or keytool. See this StackOverflow link for more info. This github project makes using apksigner for signature printing easier.
Disable any screen-dimming apps, like Lux or Twilight. For security reasons, Android will gray out the Install button when an app like that is active. See this HowToGeek article for more info.
I have an APK I want to upload. How can I extract it from my device and upload to APKMirror.pk?
The easiest way to extract an APK is by using an APK extractor app built for this purpose, or a file manager with extracting capabilities. We highly recommend ML Manager APK Extractor because it has APKMirror uploading built right in. It supports split APKs too.
Do I need to be rooted to extract an APK from my device?
No, you do not need root if you use an APK extractor app.
Note: If you insist on a manual method and try to browse /data or /data/app, you’re going to have a bad time without root, as Android won’t let you list the dirs. You’ll need to know the exact name of the APK file to pull it.