Skip to content

"universal" ABI flavor produces identical APK to "arm64" — misleading name and wasted build time #19

Description

@lampte

"universal" ABI flavor produces identical APK to "arm64" — misleading name and wasted build time

Severity: Medium
File: app/build.gradle.kts:265-270

Both the arm64 and universal ABI flavors specify the exact same abiFilters — only arm64-v8a. The "universal" name conventionally implies a multi-architecture APK (e.g. arm64-v8a + armeabi-v7a + x86_64), but here it is a carbon copy:

create("arm64") {
    dimension = "abi"
    ndk {
        abiFilters.clear()
        abiFilters.add("arm64-v8a")
    }
}
create("universal") {
    dimension = "abi"
    ndk {
        abiFilters.clear()
        abiFilters.add("arm64-v8a")
    }
}

The same duplication exists in build-logic/convention/src/main/kotlin/com/t8rin/imagetoolbox/ConfigureKotlinAndroid.kt for library modules and in ImageToolboxLibraryPlugin.kt.

Why it matters

Every CI run and local ./build_release.sh builds both variants, doubling the matrix (7 app flavors × 2 ABI = 14 APKs) while producing byte-identical native libraries. Users who see "universal" in the download list expect broader device compatibility. If 32-bit ARM or x86_64 support is intentionally dropped, the flavor should be renamed (e.g. arm64only) or removed entirely to cut build time in half.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions