Complete
over 5 years ago

SDK 3.1.8 just break support for vivoactive 3 trainer

I compiled samples included with SDK 3.1.8 and installed to v3t using side load method (copy the prg to /garmin/apps). And all apps result in error of:

Error: Symbol Not Found Error
Details: Could not find symbol initResources.

And I submitted an app to CIQ app store using beta testing method, when I tried to download the app to v3t, I got prompt I should upgrade my firmware. But the firmware is up to date, which is 2.3 (APAC version).

I did further investigation and found that, the latest version of firmware of v3t with support of CIQ 3.0.3, but SDK 3.1.8 only support v3t with CIQ version 3.1.x (In fact v3t never support CIQ 3.1.x, at least my APAC version support only 3.0.3 with latest firmware.). Thus make apps compiled with SDK 3.1.8 cannot run on v3t with CIQ below 3.1.

V3T (world edition or APAC edition) are currently on sale and are popular in many countries, and CIQ store support is very important to customers, if you just buy the new device and found most apps cannot be installed, it will be disappointing and against the advertisement which clearly indicates the V3T support CIQ app store.

Using some methods I confirmed that CIQ 3.0.x can run most apps, please support apps to be run on v3t with CIQ 3.0.x in further SDK release, or release firmware upgrade for v3t (don't forgot APAC edition please) if you only support CIQ 3.1.x in further SDK.

Latest FW is 2.3:

CIQ SDK 3.1.8 support only CIQ 3.1.x for v3t with part number 006-B3446-00, but latest version 2.3 FW carry with CIQ support 3.0.3. It's so weird.

Previous SDK 3.0.12 which supports CIQ 3.0.3 for v3t just working fine.

SDK 3.1.6 also support CIQ 3.0.3 for v3t.

When build app for vivoactive 3 (which v3t categorized into this class) in SDK 3.1.6, you can see it support CIQ 3.0.x and 3.1.x which should be correct:

  

But SDK 3.1.8 support 3.1.x only, and break support for devices with CIQ lower than 3.1.

Former Member
Former Member
  • Former Member
    Former Member over 5 years ago in reply to jim_m_58

    Yes, it's just for own use. Thanks!

  • Even with this, I would not use it to release any apps to the public but only for your own use.  Messing with things like FW version can cause real headaches.  There was a long standing issue where the FW version wasn't checked as it should, and the result were apps being installed on devices with the incorrect FW, leading to all sorts of odd crashes.

  • Former Member
    Former Member over 5 years ago in reply to Former Member

    Above hacking method may will conflict with Garmin license term, so try another way to fix that (thanks to jim_m_58 for providing the hint):

    Compiler have following arguments:

    -a,--apidb <arg>       API import file
    -d,--device <arg>      Target device
    -e,--package-app       Create an application package.
       --Eno-invalid-symbolDo not error when a symbol is found to be invalid
    -f,--jungles <arg>     Jungle files
    -g,--debug             Print debug output
    -h,--help              Prints help information
    -i,--import-dbg <arg>  Import api.debug.xml
    -m,--manifest <arg>    Manifest file
    -o,--output <arg>      Output file to create
    -p,--project-info <arg>projectInfo.xml file to use when compiling
    -r,--release           Strip debug information
    -s,--sdk-version <arg> SDK version to target
    -t,--unit-test         Enables compilation of unit tests
    -u,--devices <arg>     devices.xml file to use when compiling
    -v,--version           Prints the compiler version
    -w,--warn              Show compiler warnings
    -x,--excludes <arg>    Add annotations to the exclude list
    -y,--private-key <arg> Private key to sign builds with
    -z,--rez <arg>         Resource file

    Two useful arguments:

    -u : providing your own devices.xml

    -s : specify SDK version

    So, copy devices.xml to v3t.xml, change 006-B3446-00 line to:

    <part_number connectIQVersion="3.0.3" firmwareVersion="230" number="006-B3446-00">

    Then in eclipse preferences, fill following into compiler option:

    -u PATHTO/v3t.xml -s 3.0.0

    And compile again, if everything ok, the generated PRG will work on v3t with CIQ SDK 3.0.3.

    Or you can using command line to compile, for example:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -Dapple.awt.UIElement=true -jar /Users/user_a/Downloads/embedded/ciq-sdk/connectiq-sdk-mac-3.1.8-2020-05-01-5a72d0ab2/bin/monkeybrains.jar -o /Users/user_a/Downloads/embedded/ciq-sdk/connectiq-sdk-mac-3.1.8-2020-05-01-5a72d0ab2/samples/Analog/bin/temp/Analog.prg -w -y /Users/user_a/git/eclipse/developer_id/developer_key -u /Users/user_a/Downloads/embedded/ciq-sdk/connectiq-sdk-mac-3.1.8-2020-05-01-5a72d0ab2/devices/v3t.xml -s 3.0.0 -d vivoactive3 -r -f /Users/user_a/Downloads/embedded/ciq-sdk/connectiq-sdk-mac-3.1.8-2020-05-01-5a72d0ab2/samples/Analog/monkey.jungle

  • Former Member
    Former Member over 5 years ago in reply to Travis.ConnectIQ

    Quite understand. I am not hacking devices.xml to develop commercial or open-source apps which will release publicly, just try to fix a simple watch face to display timezone on my v3t because other timezone apps don't work anymore. And I will try to fix that using official -u parameter which support user defined devices.xml. 

    I think I need to read the license term in order to understand why Garmin stop providing previous SDKs, and will not ask anyone to provide one if it will violate any term.

    The fix in next release is great news, and thank you for your listening  and quick action!

  • We've already got a fix for this and it should go out with the next release.