Acknowledged
CIQQA-3163

Issues with SDK 8.1.x and glance on Fenix 6

I have issues with getting my glance to run with Fenix 6 on SDK 8.1.x.

On SDK 7.4.3 everything works as it should, code builds and glance is shown.

On SDK 8.1.0, I get the following error when building:

 *  Executing task: monkeyc: Building For Device 

java -Xms1g -Dfile.encoding=UTF-8 -Dapple.awt.UIElement=true -jar c:\Users\Robert\AppData\Roaming\Garmin\ConnectIQ\Sdks\connectiq-sdk-win-8.1.0-2025-03-04-7ae1ed1cb\bin\monkeybrains.jar -o bin\evccgarmin.prg -f d:\Projects\evcc-garmin\evcc-garmin\monkey.jungle -y d:\Projects\evcc-garmin\ciq-developer-key\developer_key -d fenix6_sim -w

ERROR: null

On SDK 8.1.1 the build works again, but getGlanceView() is not called, instead it goes directly into getInitialView(). Glance Launch Mode is set to Launch in Glance Mode.

If I run the same configuration on a Fenix 6 Pro, the glance works with all three SDK versions.

You can reproduce the issue by running the following project with default app settings. An error will appear in the glance or widget, which is sufficient to determine which one is being invoked.

https://github.com/TheNinth7/evcc-garmin/tree/PerformanceRefactoring.

  • When I build this code in SDK 8.1.0, I also get an error, but it's:

    ERROR: Cannot invoke "java.util.Set.add(Object)" because "this.mFileInfo" is null

    My java version is:

    openjdk 21.0.6 2025-01-21 LTS
    OpenJDK Runtime Environment Temurin-21.0.6+7 (build 21.0.6+7-LTS)
    OpenJDK 64-Bit Server VM Temurin-21.0.6+7 (build 21.0.6+7-LTS, mixed mode, sharing)

    I think we've seen similar behaviour in the past, where a certain error is either verbose (as above) or abbreviated (as in "ERROR: null"), depending on the specific java version that was used.

    If I build with verbose debug logging, error.txt looks like this:

    Exceptions: 1
        Cannot invoke "java.util.Set.add(Object)" because "this.mFileInfo" is null
        
    java.lang.NullPointerException: Cannot invoke "java.util.Set.add(Object)" because "this.mFileInfo" is null
        at com.garmin.monkeybrains.compiler2.ir.namespace.Namespace$ExcludedContext.update(Namespace.java:154)
        at com.garmin.monkeybrains.compiler2.ir.namespace.Namespace.addExcluded(Namespace.java:1054)
        at com.garmin.monkeybrains.compiler2.ir.visitors.ModuleVisitor.visitClassStatements(ModuleVisitor.java:1400)
        at com.garmin.monkeybrains.compiler2.ir.visitors.ModuleVisitor.visitClassDefinition(ModuleVisitor.java:1569)
        at com.garmin.monkeybrains.compiler2.ir.visitors.ModuleVisitor.visitModuleStatement(ModuleVisitor.java:1715)
        at com.garmin.monkeybrains.compiler2.ir.visitors.ModuleVisitor.visitModuleStatements(ModuleVisitor.java:969)
        at com.garmin.monkeybrains.compiler2.ir.visitors.ModuleVisitor.visitTopLevel(ModuleVisitor.java:1456)
        at com.garmin.monkeybrains.compiler2.SemanticAnalyzer.runSemanticAnalysis(SemanticAnalyzer.java:366)
        at com.garmin.monkeybrains.compiler2.project.ProjectBuilder.runSemanticAnalysis(ProjectBuilder.java:713)
        at com.garmin.monkeybrains.compiler2.project.ProjectBuilder.runSemanticAnalysis(ProjectBuilder.java:613)
        at com.garmin.monkeybrains.compiler2.Compiler2.build(Compiler2.java:1780)
        at com.garmin.monkeybrains.compiler2.Compiler2.buildProject(Compiler2.java:979)
        at com.garmin.monkeybrains.Monkeybrains.runCompiler2(Monkeybrains.java:1669)
        at com.garmin.monkeybrains.Monkeybrains.compileApplication(Monkeybrains.java:1639)
        at com.garmin.monkeybrains.Monkeybrains.run(Monkeybrains.java:2305)
        at com.garmin.monkeybrains.Monkeybrains.simpleMain(Monkeybrains.java:295)
        at com.garmin.monkeybrains.Monkeybrains.main(Monkeybrains.java:345)
    Compiler Warnings: 57
        WARNING: fenix6:/.../evcc-garmin/resources-drawables/fenix6/drawables-tinyglance.xml:6,4: Device doesn't support given format 'png', reverse to default format.
        <SNIP> (above warning repeats 56 more times, on different lines of drawables-tinyglance.xml)