nostra13/Android-Universal-Image-Loader
62.2
Adequate · 24 September 2026
12.3k
lines of production code
Java
primary language
5
measurements over time
What this system is
This system is an Android image loading and caching library that manages image loading, memory caching, and disk caching with various expiration and eviction strategies. It provides a sample application demonstrating diverse image loading scenarios, including list, grid, and gallery views, along with support for multiple image downloaders and error handling. The project is built using Gradle and published to Maven repositories, offering developers a comprehensive toolkit for handling image resources in Android applications.
Features
Add Universal Image Loader sample application with multiple image loading demos
The sample application now includes a complete set of activities and fragments demonstrating various image loading scenarios. This includes a home screen for navigation, simple and complex image activities, and fragments for lists, grids, and galleries. The sample also introduces custom image downloaders for Base64-encoded images, OkHttp, and Apache HttpClient, as well as a broken JPEG decoder for testing error states. Additionally, the app provides UI controls to pause image loading on scroll or fling, and options to clear memory and disk caches.
sample/src · high confidence
Initial project scaffolding and documentation
The repository is initialized with essential project files: a comprehensive CHANGELOG.md documenting the library's history, a README.md with usage examples and feature list, a .gitignore for build artifacts, a .travis.yml for CI, and the Apache 2.0 LICENSE. This establishes the project's structure and provides users with immediate access to installation instructions, API examples, and version history.
(repo-wide) · high confidence
Introduce new disk and memory cache implementations
The library adds a new disk caching system with multiple strategies: a base \DiskCache\ interface and \BaseDiskCache\ implementation, alongside specific implementations like \LimitedAgeDiskCache\ (for time-based expiration), \UnlimitedDiskCache\, and \LruDiskCache\ (Least Recently Used). It also introduces a \MemoryCache\ interface with \BaseMemoryCache\ and \LimitedMemoryCache\ (FIFO) implementations to manage in-memory bitmap storage. These changes provide more control over how images are cached on disk and in memory.
library/src · high confidence
Behavioural changes
Updated Android target SDK to 21 (Lollipop)
The sample project's build configuration has been updated to target Android 21 (Lollipop). This change ensures the sample app is built against the Lollipop API level, which may affect runtime behavior and available APIs for developers using this sample.
library, sample · medium confidence
Dependencies
Initial Gradle build system and Maven publishing setup
The project is now built using the Gradle build system, replacing previous build configurations. This includes top-level and module-level build scripts for the library and sample app, along with Gradle properties defining versioning and metadata. Additionally, Maven publishing scripts are added to enable deploying artifacts to Sonatype, supporting both release and snapshot builds with proper POM metadata and signing.
(dependencies) · medium confidence
Updated Gradle wrapper to version 5.6.4
The project's Gradle wrapper has been updated to version 5.6.4, as specified in the gradle-wrapper.properties file. This ensures the build process uses a consistent and modern version of the Gradle build tool.
gradle · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 56 → 62 (+6.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 94 → 97 (+2.7)
- Architecture 100 → 100 (+0.0)
- Maturity 49 → 49 (+0.0)
- Readiness 47 → 64 (+16.9)
- Security 65 → 73 (+8.1)
Resolved (13)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (library/src/main/java/com/nostra13/universalimageloader/core/DisplayImageOptions.java)
- Duplicated block (10 lines × 3) (sample/src/main/java/com/nostra13/universalimageloader/sample/fragment/ImageGalleryFragment.java)
- Duplicated block (6 lines × 2) (library/src/main/java/com/nostra13/universalimageloader/core/imageaware/ViewAware.java)
- Duplicated block (7 lines × 2) (library/src/main/java/com/nostra13/universalimageloader/utils/StorageUtils.java)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- OldRoundedBitmapDisplayer.roundCorners (cyclomatic 17) (sample/src/main/java/com/nostra13/universalimageloader/sample/ext/OldRoundedBitmapDisplayer.java)
- Test reliability not included
- The 'Acceptable URIs examples' section would list acceptable URI formats (file paths, URLs) for loading. (README.md)
- dormant codebase — no living knowledge left to concentrate
New (15)
- ClassTooLong: DiskLruCache (library/src/main/java/com/nostra13/universalimageloader/cache/disc/impl/ext/DiskLruCache.java)
- ClassTooLong: LinkedBlockingDeque (library/src/main/java/com/nostra13/universalimageloader/core/assist/deque/LinkedBlockingDeque.java)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (12 lines × 2) (sample/src/main/java/com/nostra13/universalimageloader/sample/activity/HomeActivity.java)
- Duplicated block (19 lines × 2) (library/src/main/java/com/nostra13/universalimageloader/core/DisplayImageOptions.java)
- Duplicated block (6 lines × 2) (sample/src/main/java/com/nostra13/universalimageloader/sample/fragment/AbsListViewBaseFragment.java)
- Duplicated block (7 lines × 2) (library/src/main/java/com/nostra13/universalimageloader/utils/StorageUtils.java)
- Duplicated block (9 lines × 3) (sample/src/main/java/com/nostra13/universalimageloader/sample/fragment/ImageGalleryFragment.java)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- No dependency advisory monitoring
- TodoComment (library/src/main/java/com/nostra13/universalimageloader/core/LoadAndDisplayImageTask.java)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
nostra13/Android-Universal-Image-Loader was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ba33ec64d0daaa881d35852460e78c58d086bc18 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-f917f263222d.