--- # Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. title: Pebble SDK 2.0 DP2 - Changelog date: 2013-09-24 --- >2.0 DP2.1 > We do not like making releases twice a week but we really wanted to fix the iOS/PebbleKit JS bug and so here it is. PebbleKit JS can now receive message on iOS and on Android. You only need to update your SDK for this to work. We will not release new versions of the mobile apps. >The rest of the DP2 release notice below still applies. ### Known problems and bugs - Data Logging does not work on iOS7 - The watch can run out of memory if the applications do not release the memory properly - On iOS, PebbleKit JS can not receive app messages (fixed in the DP2.1 release) ### In a nutshell * The format of applications has changed. Every application now requires an `appinfo.json` file in its base directory. This file contains the UUID, name and resources of the application. For PebbleKit JS apps, it may also contain the keys used for app_message communication. * The `pb-sdk` tool is gone. It is replaced by the `pebble` command line. * Instead of having the phone connect to the developer box, the developer tools will connect to the mobile application. When you turn on developer mode on your phone, it will display the IP address that you should use to connect to the phone. You can set a `PEBBLE_PHONE` environment variable to avoid retyping this all the time. * Fixed most blocking bugs reported on Developer Preview 1 (details below) * The Developer Guide has been completely rewritten and also includes a migration guide. ### Pebble Firmware - Fixed a bug where launching an application through the bluetooth protocol would cause the app to be re-launched if it was already running. - Added support for the middle button in the Golf app. This will send a message that is received by PebbleKit on iOS and Android. - Tap event is now disabled during a vibration (to avoid triggering the event) - Bumped firmware version and added tests to make sure that old apps will not run on the new firmware and vice-versa - Fixed various issue with firmware updates - AppLog does not need to be enabled manually anymore. It is automatically enabled by the `pebble` tool. ### Pebble SDK - Finalized conversion to new dynamic memory model: all _init functions have been replaced by _create() equivalent that return a pointer to a newly allocated and initialized structure (gbitmap_init functions, gpath_init, property_animation_init and app_sync_init have been updated to the new style) - Trigger a battery event when the percentage of battery charge changes (will trigger every 2%) - Data Spooling now takes a `void*` pointer (to avoid useless casting in developer code) - Data spooling session ids are now random - persist_read_int now returns 0 if the key does not exist (as per documentation) - Global static variables were not initialized properly - Fix a dataspooling bug where sometimes the close message did not contain the correct session id - Added a bluetooth_connection_service_peek() function - Export atol/atoi functions - Export app_comm_get_sniff_interval - As a developer, I can call the atan()/atan2() function to compute an arc-tangent - Renamed DataSpooling into DataLogging - Defined a new Design Pattern to subclass layers and included an example based on the famous Progress Bar layer (`watchapps/feature_layer_data`) ### PebbleKit iOS/Android - Redesigned completely the Android API for Data Logging (ex data spooling) ### PebbleKit JavaScript - Fixed a bug where only single digit integers would be passed as integers - On Android, the apps are now available in the "Webapps" menu - On iOS and Android, applications will keep on running once they are started (but they do not start automatically yet) - On iOS, you need to tap the appname to run it. - On iOS, to allow for `openURL` to work, you need to open the javascript console first - On iOS and Android, javascript `console.log` are sent over the developer connection (available with `pebble logs`) - You can now send array of bytes by passing an array of integers to `sendAppMessage()` - The keys in the appinfo.json file is now optional and you can use integers in strings as keys - If a received message as a key that is not listed in the `appKeys` block, the integer will be converted to a string - A bug where the navigation stack could be corrupted when calling `openURL` is fixed ### pb-sdk - Renamed pb-sdk into pebble - Added a --version option - Added a command to clean current project - Added an example of using APPLOG in the default generated project - Return meaningful error codes to the shell - Fixed a bug where `pb-sdk list` would fail if no apps are installed - Added a --javascript option to `pb-sdk new-project` to create a template of JS code and automatically generate the appinfo.json - Automatically detect old projects, refuse to build and offer the option to update the project - Added `convert-project` command to update old projects to the new style (note: this will not update the source code) - Added clean error message if a resource is missing ### iOS Application - The developer preview iOS application will automatically offer new version of the beta firmware - Added support for middle button in golf app - Some iOS7 fixes - Switched to TestFlight for distribution and crash reports ### Android Application - The developer preview Android application will automatically offer new version of the beta firmware - Added support for middle button in golf app - Switched to TestFlight for distribution and crash reports ### Pebble SDK Examples - Added an example for the persistent storage APIs - Fixed all the iOS examples to build out of the box - Reworked the Ocean Data Survey example