martinstyk / androidapkanalyzer Goto Github PK
View Code? Open in Web Editor NEWAndroid application for analyzing installed apps
License: GNU General Public License v3.0
Android application for analyzing installed apps
License: GNU General Public License v3.0
The description view does display this, but it is not seen in either graph.
C
On Android Pie, app v2.7.0, all of my apps (including system) are marked as using min SDK 28 in statistics view. Target SDK and other statistics seem to be correct.
In app list (specific apps) the min SDK also seems to be correct.
No search bar nor keyboard pop-up when selecting search option. Did uninstall some Samsung bloatware I don't know if any are needed for this app to work. Appreciate some help! Samsung Galaxy S20
Example is this Chrome APK from the emulator.
F-Droid apps show up as sideloaded apps and there isn't an easy way to know if the app is from F-Droid.
Since F-Droid is the only source for FOSS exclusive apps, it might be nice to add a Filter for F-Droid and filter the F-Droid signed apps.
For example, I have 7 "prefer external" apps and I would like to know, which apps are they. An intuitive way would be to tap on the graph column to open a popup showing the apps' names and icons.
It would be very useful if it were possible to copy the extracted text fields to the clipboard.
hi
@MartinStyk
@tomo0611
@Unknownman820
Add Arabic Translation in App Android Apk Analyzer
YouTube should be there, for example, but the graph doesn't have even a single app there for Android Q
Happened with two different APK files.
Samsung Galaxy Note 8 / sm-g950w
Oreo
APK Analyzer 2.3.2
I'm available if more logs needed.
3811 V WindowManager: Relayout Window{dd70495 u0 sk.styk.martin.apkanalyzer/sk.styk.martin.apkanalyzer.ui.activity.MainActivity}: viewVisibility=4 req=1080x2220 WM.LayoutParams{(0,0)(fillxfill) sim=#20 ty=1 fl=#81810100 pfl=0x1020000 wanim=0x10302fd vsysui=0x710 needsMenuKey=2 colorMode=0 naviIconColor=0}
08-05 22:54:53.219 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1311).
08-05 22:54:53.220 11088 11088 D ViewRootImpl@87db7c6[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=false 0} changed=false
08-05 22:54:53.221 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1311).
08-05 22:54:53.224 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1309).
08-05 22:54:53.225 1496 2155 D GameManagerService: handleForegroundChange(). pkgName: sk.styk.martin.apkanalyzer, clsName: sk.styk.martin.apkanalyzer.ui.activity.MainActivity,FgActivityName:sk.styk.martin.apkanalyzer/.ui.activity.MainActivity
08-05 22:54:53.225 6243 16216 I TrayUsageStatesWatcher: noteResumeComponent : ComponentInfo{sk.styk.martin.apkanalyzer/sk.styk.martin.apkanalyzer.ui.activity.MainActivity}
08-05 22:54:53.225 1496 2155 D GameManagerService: sem_perfomance_mode: 0
08-05 22:54:53.225 1496 1968 D MARsPolicyManager: onPackageResumedFG pkgName = sk.styk.martin.apkanalyzer, userId = 0
08-05 22:54:53.225 1496 2155 D GameManagerService: notifyResumePause(). pkg: sk.styk.martin.apkanalyzer, type: 0, isMinimized: false, isTunableApp: true
08-05 22:54:53.225 1496 2155 D GameManagerService: notifyResumePause(). changed mKillNotiCount: 0
08-05 22:54:53.225 1496 2155 D GameManagerService: notifyResumePause(). before send intent to GameIntentService
08-05 22:54:53.226 11088 11088 D AndroidRuntime: Shutting down VM
--------- beginning of crash2
08-05 22:54:53.227 11088 11088 E AndroidRuntime: FATAL EXCEPTION: main
08-05 22:54:53.227 11088 11088 E AndroidRuntime: Process: sk.styk.martin.apkanalyzer, PID: 11088
08-05 22:54:53.227 11088 11088 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=66860, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/document/raw:/storage/emulated/0/Download/bugheist.apk flg=0x1 }} to activity {sk.styk.martin.apkanalyzer/sk.styk.martin.apkanalyzer.ui.activity.MainActivity}: java.lang.NumberFormatException: For input string: "raw:/storage/emulated/0/Download/bugheist.apk"
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4491)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread.handleSendResult(ActivityThread.java:4534)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread.-wrap20(Unknown Source:0)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1752)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6940)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: Caused by: java.lang.NumberFormatException: For input string: "raw:/storage/emulated/0/Download/bugheist.apk"
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at java.lang.Long.parseLong(Long.java:590)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at java.lang.Long.valueOf(Long.java:804)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at sk.styk.martin.apkanalyzer.util.file.RealPathUtils.a(Unknown Source:200)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at sk.styk.martin.apkanalyzer.util.file.ApkFilePicker.a(Unknown Source:32)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at sk.styk.martin.apkanalyzer.ui.activity.applist.searchable.AppListFragment.onActivityResult(Unknown Source:37)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.support.v4.app.FragmentActivity.onActivityResult(Unknown Source:69)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.Activity.dispatchActivityResult(Activity.java:7547)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4487)
08-05 22:54:53.227 11088 11088 E AndroidRuntime: ... 9 more
08-05 22:54:53.227 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1308).
08-05 22:54:53.230 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1306).
08-05 22:54:53.230 10901 10901 D ViewRootImpl@906257[PickActivity]: MSG_WINDOW_FOCUS_CHANGED 0
08-05 22:54:53.231 2908 2908 I SemPersonaManager: SecureFolder personaId = 150
08-05 22:54:53.231 4085 4085 I Launcher: onWindowVisibilityChanged : false
08-05 22:54:53.232 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1305).
08-05 22:54:53.233 1496 2155 D GameManagerService: notifyResumePause(). after send intent to GameIntentService
08-05 22:54:53.233 1496 1968 V WindowManager: Relayout Window{72f45e0 u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity}: viewVisibility=4 req=1080x2220 WM.LayoutParams{(0,0)(fillxfill) sim=#120 ty=1 fl=#81910d02 pfl=0x20000 fmt=-2 wanim=0x10302ea vsysui=0x700 needsMenuKey=2 colorMode=0 dimDuration=300 naviIconColor=0 sfl=0x40}
08-05 22:54:53.234 1496 7103 D GamePkgDataHelper: getGamePkgDataIncServer(). sk.styk.martin.apkanalyzer
08-05 22:54:53.235 1496 3893 D Debug : !@DumpState : SHIP
08-05 22:54:53.235 1496 3893 D Debug : !@DumpState : debug level:0x4f4c
08-05 22:54:53.235 6335 11129 D GOS:GameIntentService: onHandleIntent. begin
08-05 22:54:53.235 1496 3893 D Debug : !@Dumpstate : Finally, system will skip dumpstate
08-05 22:54:53.235 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1304).
08-05 22:54:53.235 6335 11129 D GOS:GameIntentService: onHandleIntent. GameIntentService. type 0
08-05 22:54:53.235 1496 3893 W ActivityManager: crash : sk.styk.martin.apkanalyzer,0
08-05 22:54:53.236 2702 2732 D ForegroundUtils: could not check pending caller
08-05 22:54:53.237 6335 11129 D GOS:PkgData: PkgData(), pkgName: sk.styk.martin.apkanalyzer
08-05 22:54:53.237 6335 11129 D GOS:PkgData: setCustomFeatureFlag, pkgName: sk.styk.martin.apkanalyzer, old featureFlag: 346781844236309267, new featureFlag: 274882278167
08-05 22:54:53.237 6335 11129 D GOS:ServiceManager: onTunableNonGameResume. [sk.styk.martin.apkanalyzer]
08-05 22:54:53.237 4085 4085 D ViewRootImpl@c948ffa[LauncherActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=false 0} changed=false
08-05 22:54:53.238 1496 3893 W ActivityManager: Force finishing activity sk.styk.martin.apkanalyzer/.ui.activity.MainActivity
08-05 22:54:53.238 1496 1912 I InputDispatcher: Dropping event because there is no touchable window at (644, 1302).
08-05 22:54:53.239 1496 3893 W MultiScreenManagerService: moveTaskBackToDisplayIfNeeded(): root activity or app is null, task=TaskRecord{70ec98fd0 #13396 A=sk.styk.martin.apkanalyzer U=0 StackId=1 sz=2}, rootActivity=null
08-05 22:54:53.239 1496 1496 D CodecSolution: MultiWindowEventListener::onMultiWindowFocusChanged(0)
08-05 22:54:53.239 1496 1496 D MdnieScenarioControlService: Listener Real Multi Window State : true
08-05 22:54:53.239 1496 1496 D CS_HdrController: MultiWindowEventListener::onFocusStackChanged(0)
08-05 22:54:53.240 6243 16216 I Tr
............. 2nd instance / opening another external APK / same crash
08-05 23:26:50.233 17202 17202 E AndroidRuntime: FATAL EXCEPTION: main
08-05 23:26:50.233 17202 17202 E AndroidRuntime: Process: sk.styk.martin.apkanalyzer, PID: 17202
08-05 23:26:50.233 17202 17202 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=66860, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/document/raw:/storage/emulated/0/Download/com.samsung.android.pluginrecents_1.3.01.62-130162000_minAPI26(nodpi)_apkmirror.com.apk flg=0x1 }} to activity {sk.styk.martin.apkanalyzer/sk.styk.martin.apkanalyzer.ui.activity.MainActivity}: java.lang.NumberFormatException: For input string: "raw:/storage/emulated/0/Download/com.samsung.android.pluginrecents_1.3.01.62-130162000_minAPI26(nodpi)_apkmirror.com.apk"
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4491)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread.handleSendResult(ActivityThread.java:4534)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread.-wrap20(Unknown Source:0)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1752)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6940)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: Caused by: java.lang.NumberFormatException: For input string: "raw:/storage/emulated/0/Download/com.samsung.android.pluginrecents_1.3.01.62-130162000_minAPI26(nodpi)_apkmirror.com.apk"
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at java.lang.Long.parseLong(Long.java:590)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at java.lang.Long.valueOf(Long.java:804)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at sk.styk.martin.apkanalyzer.util.file.RealPathUtils.a(Unknown Source:200)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at sk.styk.martin.apkanalyzer.util.file.ApkFilePicker.a(Unknown Source:32)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at sk.styk.martin.apkanalyzer.ui.activity.applist.searchable.AppListFragment.onActivityResult(Unknown Source:37)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.support.v4.app.FragmentActivity.onActivityResult(Unknown Source:69)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.Activity.dispatchActivityResult(Activity.java:7547)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: at android.app.ActivityThread.deliverResults(ActivityThread.java:4487)
08-05 23:26:50.233 17202 17202 E AndroidRuntime: ... 9 more
Nesxa
Since you already get the signatures, this should be easy.
I hear that every apk is signed by the app store.
So info about wether the app is from Play store, Amazon Store or sideloaded(Unknown source).
There is already an app that has this feature called App detective.
It allows you to filter apps by source (Play Store, Amazon store, Sideloaded)
https://play.google.com/store/apps/details?id=com.zmarties.detective
I tried to compile your app, i can compile it with success, but i cannot show the app in intent-chooser if i launch the intent to install the apk. Can you help mepls?
Maybe you can implement VirusTotal scanning feature.
If you don't want to deal with API keys etc. you can give an option to enter Virustotal API key with link and instructions to signup page.
The user can then go and create an API key on the Virustotal website and copy paste it.
Hi,
I would like to contribute to this open source project and I forked it here on GitHub but when I try to build the app it fails with "> File google-services.json is missing. The Google Services Plugin cannot function without it. " error. Obviously that file (the real one) is not checked in to the repo but can you provide a way to build the project without it (maybe a different flavour)? Maybe you can add a debug variant of this file that does not contain any real information.
It would be awesome if you can write e.g. a section in the README about building the project to contribue too. Thank you!
Would you consider providing some simple functionality along the lines of List My Apps?
It would be great if Apk Analyzer could import and export data individually and in bulk, so that app details could be viewed on a device where the package is not installed and not present as an APK.
XML (perhaps gzipped?) might be the best way to accomplish this.
There seem to be no way of refreshing the list of "Applications" in the app, nor is that refreshed while the app is running and the screen is showing. So it is possible to install an app while Apk Analyzer is running so it will not show up in the list until the app is restarted.
I would like to ask for either an option to refresh the list manually, or a way that the list is refreshed, e.g. when the app comes to the foreground with that screen.
The View AndroidManifest.xml option only support apk that has been installed.
Could you please add an option to support apks that has not been installed?
The app provides detailed report not only about installed app but also not
installed Apk so I expected the not installed apk to load up using the ( analyze apk from external file ) option..
On trying to load apk files on SD card, the operation failed
*Download
*install
*launch
*click the three vertical dots and then click "analyze apk from external file"
*Finally navigate to folder where you have apk files in your external card and then see what happens....
Long-term, would you consider adding the ability to rename APKs based on attributes? The only Android-based utility I'm aware of that can do this is very inflexible, chokes on some Unicode characters, and hasn't been updated in years.
It'd be nice if this app had a intent receiver that gives the user a chance to use this app when he/she clicks the apk to install it.
Since the app already has the option to select apk and analyze it.
Kinda like how some anti viruses like Malwarebytes give the option to scan an apk and install it after scan after clicking on the apk.
The selected option should retain on changing the screen orientation of the app and should show the apps of the selected category on both the screen orientations.
But on changing the orientation of the screen the selected category is changed to "all apps" no matter what you select in another mode.
Install the app from playstore.
Launch the app and click on three horizontal lines on the top right corner of the app and select a category in potrait.
Now change the orientation of the screen to landscape mode. Now you'll be shown all the apps irrespective of the category you selected in step 2. You can even check the catehory being changed by repeating step 2.
App Version: 2.3.1
Device: Samsung Galaxy J5
Operating system: Android 6.0.1
Here's the video recording of the bug.
<iframe width="560" height="315" src="https://www.youtube.com/embed/RTpqQjAmrvw?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Hey, thank you for this nice app. It would be even better if it was installable via F-Droid instead of Google Play Store...
Would you mind attaching the .apk
to the corresponding releases/
for folks avoiding Playstore (or having no access to it)? I'd offer to pick it then and provide it via my F-Droid compatible repository if you'd agree. That way, updates would be available via the F-Droid client within approx. 24h of your creating a new release and attaching the .apk
to it – of course provided the user has my repo added to the client's list.
André Luiz Silva Morais
On the Application details screen, the Android components' (e.g. Services, Content Providers...) properties can change and be displayed incorrectly while browsing the list and expanding/collapsing the corresponding item in the list.
E.g. if you check Chrome (which is pre-installed on most Android devices) and scroll down in the list of Services to the bottom and expand "UsageStatsBrowserServiceProvider" you can see that it is exported (it says "Yes" for the line "Exported", and it can be verified without the app that it is indeed exported). If you then collapse/close that entry and keep expanding/opening others above it ("GooglePlayDataCallbackService", "ScheduledTaskService", etc.) and after expading a bunch, get back to "UsageStatsBrowserServiceProvider" and expand it again, you will see the value for "Exported" displayed as "No".
I think the problem is somewhere in how tha Adapter for this particular RecyclerView is handled, maybe diffing is not working somehow, or items get confused and it caches a value from another item.
This will work like this
Is there any reason why this app doesn't allow you to list intents? That is the only thing that I need, in order to find out how to automate tasks in other apps with Tasker or Automate.
I love your app but I want to analyze apks before sideloading them. Please add a plus button in the bottom right to select an apk from memory.
https://softwarerecs.stackexchange.com/questions/46260/android-application-for-analyzing-apks
ApkAnalyzer fails to analyzer the beta version of https://github.com/ukanth/afwall/releases/download/v3.2.0-BETA/AFWall+_3.2.0-BETA-PS1.apk downloaded from playstore.
That probably happen because the app miss some informations about the it authority.
07-17 13:12:47.512 I/ActivityManager( 2324): START u0 {cmp=sk.styk.martin.apkanalyzer.premium/sk.styk.martin.apkanalyzer.ui.activity.appdetail.base.AppDetailActivity (has extras)} from uid 10174
07-17 13:12:47.544 W/ActivityThread( 6378): handleWindowVisibility: no activity for token android.os.BinderProxy@570bb88
07-17 13:12:47.616 E/AppDetailDataService( 6378): java.lang.IllegalStateException: it.authority must not be null
07-17 13:12:49.548 W/FA ( 6378): setCurrentScreen cannot be called with the same class and name
Hello!
I'd like to have an AMOLED black mode for easier reading and screen protection.
Thanks!
I want to compile this app and I get the error Error:(8, 0) C:\Users\MyUserName\StudioProjects\AndroidApkAnalyzer-master\keystore.properties (The system cannot find the file specified) <a href="openFile:C:\Users\Naruto\StudioProjects\AndroidApkAnalyzer-master\app\build.gradle">Open File</a>
Google doesn't help for some reason.
Thanks!
It's great that the app displays the MD5 hash for installed app (on the Certificate tab) and it would be very useful to additionally display the SHA256 hash as well, which would be especially useful to verify website associations, where that "fingerprint" needs to be used in the JSON you put under your domain.
Thanks a lot in advance!
Hi,
I'm currently trying to write an App that lists all of my installed apps and apks paths to upload them into a vulnerability scanner. Can you tell me which class has this logic in your code?
Android 13 introduced (see documantation) the ability to change language for individual application a couple of years ago and even though this app only supports a couple of languages for now, it would be nice to enable this, also considering that it's quite easy and straightforward to do so.
In fact, I'm happy to give it a crack and I will submit a PR for it I think.
When I have an apk open for analysis, is there a way to install it? If not, it would be great for the bottom-right dot menu to have an install option.
I ended up opening the apk in another tool, and when I selected it's install option, your ApkAnalyzer was offered as an option. So maybe it's possible, but doesn't have a ui?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.