Acknowledged
over 1 year ago

excludeAnnotations stopped working as documented in new SDKs

An excludeAnnotations clause started to return errors for the pattern in the official doc that used to work for years. 

function setLayoutVars(){
	if(dataLoading){
		scheduleDataLoading(activity);
		...
	}
	...
}

(:data)
function scheduleDataLoading(activity){	
	...
}

monkey.jungle excludes that function for some devices:

fenix3.excludeAnnotations = data

Those devices never call that function thanks to the dataLoading var.

It worked perfectly for years.

Yet with the latest SDK version (I skipped multiple versions), the raises an error:

> monkeyc -r -o late.prg -y [path2devkey] -f ../monkey.jungle -d fenix3 --typecheck 0

ERROR: fenix3: ./source/lateView.mlc:x,y: Undefined symbol ':scheduleDataLoading' detected

The documentation guides to such usage with conditinal launching excluded symbols even in an example of the excludeAnnotations with conditional launching of (:newer)newHotnessAlgorithm(){} vs. (:older)oldAndBustedAlgorithm(){} annotations

https://developer.garmin.com/connect-iq/reference-guides/jungle-reference/


What's the problem?

Is there any new compiler setting for that? 

Parents
  • --Eno-invalid-symbol looks as an acceptable workaround.

    It would be better if this was a standard behavior like before. It does not make sense to create empty functions just because of the compiler. It adds unnecessary complexity and increases memory usage of the weakest devices. That counts for gracefully degrading functions for weaker devices either without data, barometer or OLED. 

    The initial solution was better. 

Comment
  • --Eno-invalid-symbol looks as an acceptable workaround.

    It would be better if this was a standard behavior like before. It does not make sense to create empty functions just because of the compiler. It adds unnecessary complexity and increases memory usage of the weakest devices. That counts for gracefully degrading functions for weaker devices either without data, barometer or OLED. 

    The initial solution was better. 

Children
No Data