Fix Hilt crash by documenting proper build process requirements #73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses the Hilt crash reported in issue #72 where the app crashes with:
Root Cause Analysis
The crash was not due to incorrect source code configuration - the
AndroidManifest.xmlcorrectly referencesMainApplicationand the class is properly annotated with@HiltAndroidApp. Instead, the issue was related to Hilt's bytecode transformation process.Investigation Findings
During the investigation, I discovered that:
MainApplicationhas the proper@HiltAndroidAppannotation andMainActivityhas@AndroidEntryPoint.ui.MainApplicationMainApplication_GeneratedInjectorwas created properlyMainApplicationwas extendingApplicationdirectly instead of the generatedHilt_MainApplicationbase classThe Real Issue
Hilt's bytecode transformation (which automatically makes
@HiltAndroidAppannotated classes extend their generated base classes) only occurs during thetransformDebugClassesWithAsmGradle task, which runs during full builds but not during incremental compilation.When running only
compileDebugKotlin, theMainApplication.classincorrectly extendsandroid.app.Application. However, after running the full build pipeline (assembleDebug), the transformed class correctly extendscom.gigaworks.tech.calculator.ui.Hilt_MainApplication.Solution
No source code changes were required. The existing Hilt configuration is correct. Users experiencing this crash should:
./gradlew clean assembleDebugThis fix ensures that the Hilt dependency injection system works correctly by allowing the bytecode transformation to complete properly.
Fixes #72.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.