Skip to content

Add support of '--min-api' d8 argument - #1000

Merged
ekharkunov merged 1 commit into
devfrom
d8-min-api
Jul 27, 2026
Merged

Add support of '--min-api' d8 argument#1000
ekharkunov merged 1 commit into
devfrom
d8-min-api

Conversation

@ekharkunov

@ekharkunov ekharkunov commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Pass --min-api argument to d8. Should fix defold/extension-admob#66

Related changes: defold/defold#12834

@github-actions

Copy link
Copy Markdown

Summary - Extender code coverage report

Summary
Generated on: 07/27/2026 - 09:43:57
Coverage date: 07/27/2026 - 09:43:24
Parser: JaCoCo
Assemblies: 13
Classes: 83
Files: 83
Line coverage: 39.4% (2345 of 5949)
Covered lines: 2345
Uncovered lines: 3604
Coverable lines: 5949
Total lines: 12189
Branch coverage: 42% (988 of 2352)
Covered branches: 988
Total branches: 2352
Method coverage: Feature is only available for sponsors
Tag: 225_30255096920

Coverage

com/defold/extender - 29.5%
Name Line Branch
com/defold/extender 29.5% 34.4%
com/defold/extender/AppManifestConfiguration 100%
com/defold/extender/AppManifestPlatformConfig 100%
com/defold/extender/AsyncBuilder 0% 0%
com/defold/extender/BuilderConstants 80%
com/defold/extender/Configuration 100%
com/defold/extender/Extender 12.5% 11.2%
com/defold/extender/ExtenderApplication 0%
com/defold/extender/ExtenderBuildState 62.5% 57.1%
com/defold/extender/ExtenderConst 0%
com/defold/extender/ExtenderController 17.6% 21.9%
com/defold/extender/ExtenderException 85.7%
com/defold/extender/ExtenderUtil 67.1% 58.4%
com/defold/extender/ExtenderYamlSafeConstructor 100%
com/defold/extender/ExtensionManifestValidator 94.6% 86.3%
com/defold/extender/ManifestConfiguration 100%
com/defold/extender/ManifestPlatformConfig 100%
com/defold/extender/PlatformConfig 100%
com/defold/extender/PlatformNotSupportedException 0%
com/defold/extender/SandboxedPath 70.9% 69%
com/defold/extender/TemplateExecutor 33.3% 50%
com/defold/extender/Timer 100%
com/defold/extender/TreePrinter 0% 0%
com/defold/extender/Version 0%
com/defold/extender/VersionNotSupportedException 0%
com/defold/extender/WebSecurityConfig 0% 0%
com/defold/extender/WhitelistConfig 100%
com/defold/extender/ZipUtils 80.3% 69.2%
com/defold/extender/builders - 0%
Name Line Branch
com/defold/extender/builders 0% 0%
com/defold/extender/builders/CSharpBuilder 0% 0%
com/defold/extender/cache - 33.3%
Name Line Branch
com/defold/extender/cache 33.3% 16.6%
com/defold/extender/cache/CacheEntry 64.7% 75%
com/defold/extender/cache/CacheKeyGenerator 81.8% 100%
com/defold/extender/cache/DataCache
com/defold/extender/cache/DataCacheFactory 5% 0%
com/defold/extender/cache/DummyDataCache 80%
com/defold/extender/cache/GCPDataCache 0% 0%
com/defold/extender/cache/LocalDiskDataCache 64.7% 16.6%
com/defold/extender/cache/info - 100%
Name Line Branch
com/defold/extender/cache/info 100% ****
com/defold/extender/cache/info/CacheInfoFileParser 100%
com/defold/extender/cache/info/CacheInfoFileWriter 100%
com/defold/extender/cache/info/CacheInfoWrapper 100%
com/defold/extender/log - 14.2%
Name Line Branch
com/defold/extender/log 14.2% 0%
com/defold/extender/log/ExtenderLogEnhancer 0% 0%
com/defold/extender/log/ExtenderLogEnhancerConfiguration 0% 0%
com/defold/extender/log/Markers 80%
com/defold/extender/metrics - 38.8%
Name Line Branch
com/defold/extender/metrics 38.8% ****
com/defold/extender/metrics/MetricsWriter 38.8%
com/defold/extender/process - 52.7%
Name Line Branch
com/defold/extender/process 52.7% 58.3%
com/defold/extender/process/CommandLineTokenizer 95.5% 83.8%
com/defold/extender/process/ProcessExecutor 22.6% 17.6%
com/defold/extender/process/ProcessUtils 0% 0%
com/defold/extender/remote - 95.6%
Name Line Branch
com/defold/extender/remote 95.6% 75.9%
com/defold/extender/remote/RemoteBuildException 100%
com/defold/extender/remote/RemoteEngineBuilder 95.2% 75.9%
com/defold/extender/remote/RemoteHostConfiguration 100%
com/defold/extender/remote/RemoteInstanceConfig 100%
com/defold/extender/services - 44.1%
Name Line Branch
com/defold/extender/services 44.1% 40.2%
com/defold/extender/services/DataCacheService 79.8% 61.9%
com/defold/extender/services/DefoldSdkService 75.5% 61%
com/defold/extender/services/DefoldSdkServiceConfiguration
com/defold/extender/services/GCPInstanceService 1.1% 0%
com/defold/extender/services/GradleService 0%
com/defold/extender/services/GradleServiceInterface
com/defold/extender/services/HealthReporterService 80% 55.2%
com/defold/extender/services/MockGradleService 0%
com/defold/extender/services/RealGradleService 0% 0%
com/defold/extender/services/UserUpdateService 0% 0%
com/defold/extender/services/cocoapods - 51.9%
Name Line Branch
com/defold/extender/services/cocoapods 51.9% 56.6%
com/defold/extender/services/cocoapods/CocoaPodsService 9.4% 20.6%
com/defold/extender/services/cocoapods/CocoaPodsServiceBuildState 16.6% 0%
com/defold/extender/services/cocoapods/CreateBuildSpecArgs 60.7%
com/defold/extender/services/cocoapods/IConfigParser
com/defold/extender/services/cocoapods/LanguageSet 66.6% 50%
com/defold/extender/services/cocoapods/MainPodfile 20%
com/defold/extender/services/cocoapods/PlatformAndLanguageSet 0% 0%
com/defold/extender/services/cocoapods/PlatformSet 0% 0%
com/defold/extender/services/cocoapods/PlistBuddyWrapper 0% 0%
com/defold/extender/services/cocoapods/PodBuildSpec 81.4% 65.4%
com/defold/extender/services/cocoapods/PodfileParser 94.9% 82.2%
com/defold/extender/services/cocoapods/PodfileParsingException 100%
com/defold/extender/services/cocoapods/PodSpec 60.4% 40%
com/defold/extender/services/cocoapods/PodSpecParser 89.5% 79.1%
com/defold/extender/services/cocoapods/PodUtils 63% 51.4%
com/defold/extender/services/cocoapods/ResolvedPods 52.7% 45.6%
com/defold/extender/services/cocoapods/XCConfigParser 94.5% 85.2%
com/defold/extender/services/data - 80.7%
Name Line Branch
com/defold/extender/services/data 80.7% 75%
com/defold/extender/services/data/DefoldSdk 87.5% 75%
com/defold/extender/services/data/GCPInstanceState 0%
com/defold/extender/tracing - 21.8%
Name Line Branch
com/defold/extender/tracing 21.8% 25%
com/defold/extender/tracing/ExtenderExecutor 0% 0%
com/defold/extender/tracing/ExtenderTracerInterceptor 100% 100%
com/defold/extender/tracing/TraceIdInResponseServletFilter 0% 0%
com/defold/extender/utils - 0%
Name Line Branch
com/defold/extender/utils 0% 0%
com/defold/extender/utils/FrameworkUtil 0% 0%
com/defold/extender/utils/PodBuildUtil 0% 0%

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 47327a7c6f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


// Reaches the command line as the argument of d8 --min-api, so it must be a bare number.
Object minAndroidSdkVersion = appContext.get(ExtenderBuildState.APPMANIFEST_MIN_ANDROID_SDK_VERSION_KEYWORD);
if (minAndroidSdkVersion != null && !(minAndroidSdkVersion instanceof Integer)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject negative integer API levels

For an unquoted YAML value such as minAndroidSdkVersion: -1, SnakeYAML produces an Integer, so this condition skips validation entirely; getAppManifestContextInteger() then preserves -1 and buildClassesDex() renders it as d8 --min-api -1, causing the Android dex build to fail. The equivalent quoted value is rejected, so validate integer instances against a positive API-level range as well.

Useful? React with 👍 / 👎.

@ekharkunov
ekharkunov requested a review from AGulev July 27, 2026 10:09
static final String APPMANIFEST_DEBUG_SOURCE_PATH = "debugSourcePath";
static final String APPMANIFEST_MIN_ANDROID_SDK_VERSION_KEYWORD = "minAndroidSdkVersion";

static final int DEFAULT_MIN_ANDROID_SDK_VERSION = 21;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we pass it from somewhere in configs? I thought we have it somewhere specified based on toolchain

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We pass ndk min version and right now there are no unified approach to manage ndk and sdk minimum version. I think it should be fixed as part of #726

@ekharkunov
ekharkunov merged commit 9ee3729 into dev Jul 27, 2026
5 checks passed
@ekharkunov
ekharkunov deleted the d8-min-api branch July 27, 2026 10:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Admobb 4.2 unusable with google play automatic protection

2 participants