Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,73 @@
cocos2d-x-3.15 Apr.21 2017

[NEW] Full support of Android Studio, can use Android Studio to edit, compile and debug C++ codes
[NEW] Audio Engine: use `tremolo` to decode audio files to be more adaptable to Android devices and improve performance on Android
[NEW] WebSockets and SocketIO supports SSL
[NEW] WebSockets: add methods to get url and server selected protocol
[NEW] Add `utils::getFileMD5Hash()`

[REFINE] EventDispatcher: use `std::stable_sort()` to sort nodes and listeners
[REFINE] FileUtils: add async version of common methods
[REFINE] Label: full unicode support
[REFINE] Renderer: enable VAO by default on Android
[REFINE] Renderer: use std::stable_sort() to sort commands
[REFINE] Scheduler: `unscheduleAll()` will unschedule selectors that scheduled with `performFunctionInCocosThread()`
[REFINE] SpriteFrameCache: avoid load frames if they are already loaded
[REFENE] Texfield: not use auto correction on iOS now
[REFINE] TextureCache: allow to unbind asynchronous texture loading callback with a custom key
[REFINE] WebSockets: each connection will create a virtual host
[REFINE] WebView: can clean cached data
[REFINE] WebSockets: allow self-assign certification
[REFINE] 3rd: update OpenSSL to v1.1.0
[REFINE] 3rd: update flatbuffer to v1.5
[REFINE] 3rd: Update Spine runtime to v3.5.35
[REFINE] Remove support for Windows 8.1 store and phone
[REFINE] Remove 32-bit linux support


[FIX] Action: spawn action may be invoked more times than specified
[FIX] Audio engine: can not play audios in the callback set in `AudioEngine::setFinishedCallback()` on iOS, Mac and win32
[FIX] Audio engine: crash if uncache audios in finish callback on Android
[FIX] Audio engine: crash if playing very small mp3 audios on Android
[FIX] Audio engine: may crash if repeat doing `play -> stop` on iOS and Mac
[FIX] Audio engine: play2d may still wait 2 seconds if preload is too fast
[FIX] Audio engine: preload many audios may cause crash on devices that use Samsung Exynos CPU
[FIX] Application: `openURL()` return wrong valueo on Linux
[FIX] Core: out scene's `onEnterTransitionDidFinish` is not triggered if using transition scene with `Director::runWithScene()`
[FIX] CheckBox: can receive touch up event that is released far from it
[FIX] Downloader: is not thread safe and may cause rondom crash on Android
[FIX] DrawNode: can't change opacity
[FIX] GLProgram: memory leak
[FIX] HttpClient: may crash on Android 4.2
[FIX] Label: ttf font line wrap
[FIX] Label: wrong effect if ttf font line gap is not 0
[FIX] Label: memory leak with ttf font
[FIX] Label: call `disableEffect()` many times will compress the label to one character
[FIX] Mesh: enable depth write by default
[FIX] Node: calling `reorderChild()` does not update touch lister with scene graph priority
[FIX] PageView: `getCurrentPageIndex()` returns -1 when created and haven't scrolled
[FIX] Physics2d: can not apply velocity to kinematic bodies
[FIX] Scheduler: an unscheduled selector may be invoked many times
[FIX] Scheduler: selector is not moved in time
[FIX] Simple Audio Engine: `unloadEffect()` doesn't work on Android 5.0.1 devices
[FIX] Simple Audio Engine: `ConcurrentModificationException`
[FIX] SokcetIO: use wrong default port for connection
[FIX] Sprite: texture and shader lost after restore from background on Android if using ETC1
[FIX] WebSockets: memory leak
[FIX] WebSockets: doesn't parse url correctly
[FIX] WebSockets: may crash in random
[FIX] Vec4: error logic of operator '<'
[FIX] Android: accelerometer uses wrong time accuracy
[FIX] iOS: may crashed if multiple OpenGL ES contexts coexist
[FIX] Windows: bad performance
[FIX] Windows: link error when compiling in release mode
[FIX] Lua: content after '\0' of a string is cut off when passing a string to C++ or vice versa
[FIX] Lua: lua_cocos2dx_Widget_addTouchEventListener crashed
[FIX] Lua: can not get binary data from file
[FIX] JSB: XMLHttpRequest supports notifying progression
[FIX] JSB: invoke `jsb.reflection.callStaticMethod` many times will cause `JNI max table=512` exception on Android
[FIX] Others: `download_deps.py` depends on git command

cocos2d-x-3.14.1 Jan.19 2017

[FIX] May crash if using `Scene::createWithPhysics()` to create a scene and physics3d camera is not set
Expand Down
25 changes: 15 additions & 10 deletions docs/RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@

## Highlights

* full Android Studio supports: include editing, compiling and debugging c++ codes
* use [tremolo](http://wss.co.uk/pinknoise/tremolo/) to decode audio files on Android: high performance and more adaptable to different Android devices
* WebSockets and SocketIO supports SSL
* full __Android Studio__ supports: include editing, compiling and debugging c++ codes: [doc](https://github.com/chukong/cocos-docs/blob/v3-unified-documentation/installation/Android-Studio.md)
* audio engine uses [tremolo](http://wss.co.uk/pinknoise/tremolo/) to decode audio files on Android: high performance and more adaptable to different Android devices
* __WebSockets__ and __SocketIO__ supports SSL
* AssetsManagerEx is more stable
* update Spine runtime to v3.5.35
* update flatbuffer to v1.5
* update __Spine runtime__ to v3.5.35
* update __flatbuffer__ to v1.5
* remove support for Windows 8.1 store and phone
* update OpenSSL to v1.1.0
* update __OpenSSL__ to v1.1.0
* remove linux 32-bit support

## Feature in detail
Expand All @@ -40,13 +40,13 @@

Since v3.15, can use Android Studio 2.3+ to edit, compile and debug c++ codes. What you need to do is just use Android Studio to open `proj.android-studio`(such as `tests/cpp-empty-test/proj.android-studio`), then click run menu button to run on Android devices or simulators.

![android-studio-support.png](todo)
Please refer to [this doc](https://github.com/chukong/cocos-docs/blob/v3-unified-documentation/installation/Android-Studio.md) for detail usage.

### Audio engine improve on Android
### Audio engine improved on Android

Before v3.15, new Audio engine uses OpenSL ES to decode and play audio files. But many Android device manufacturers modify OpenSL ES decoding codes which cause issues. [This thread](http://discuss.cocos2d-x.org/t/android-audio-decoding-issues-discussion/34610) lists many issues caused by it.

In order to fix these issues, we decide to use a 3rd party audio decoding library. [tremolo](http://wss.co.uk/pinknoise/tremolo/) which is used by Android have good performance and stability. We finally choose to use it. What's exciting is what, after using `tremolo`, the audio engine's performance is highly improved too.
In order to fix these issues, we decide to use a 3rd party audio decoding library [tremolo](http://wss.co.uk/pinknoise/tremolo/), which is used by Android have good performance and stability. What's exciting is what, after using `tremolo`, the audio engine's performance is highly improved too.

![audio performance](https://raw.githubusercontent.com/minggo/Pictures/master/AudioDecodingPerfTest.png)

Expand All @@ -62,4 +62,9 @@ If you need linux 32-bit support, you can build the 3rd party libraries through

## misc

[Android SDK Tools 25.3.0+](http://tools.android.com/recent/androidsdktoolsrevision2530feb2017) remove ant scripts and `android` tool, this leads to that cant not use cocos command to generate apk files. Currently, cocos command will do nothing if using SDK Tools 25.3.0+. We may remove eclipse project support in future as Google focus on Android Studio.
[Android SDK Tools 25.3.0+](http://tools.android.com/recent/androidsdktoolsrevision2530feb2017) removes __ant script__ and __android tool__, which leads to that cocos command can not generate apk files with Eclipse projects(proj.android). Currently, cocos command will do nothing if using SDK Tools 25.3.0+, you can use these two methods to fix it:

* copy `tools` folder from old Android SDK version
* use Android Studio to build the app

It seems google doesn't want developers continue to use Eclipse to develope Android applications, so i suggest to switch to use Android Studio.
65 changes: 53 additions & 12 deletions docs/RELEASE_NOTES_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,63 @@
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*

- [v3.14.1](#v3141)
- [修复的问题](#%E4%BF%AE%E5%A4%8D%E7%9A%84%E9%97%AE%E9%A2%98)
- [其他](#%E5%85%B6%E4%BB%96)
- [v3.15](#v315)
- [新特性](#%E6%96%B0%E7%89%B9%E6%80%A7)
- [新特性详细介绍](#%E6%96%B0%E7%89%B9%E6%80%A7%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D)
- [全面支持Android Studio](#%E5%85%A8%E9%9D%A2%E6%94%AF%E6%8C%81android-studio)
- [音频模块在Android平台的改进](#%E9%9F%B3%E9%A2%91%E6%A8%A1%E5%9D%97%E5%9C%A8android%E5%B9%B3%E5%8F%B0%E7%9A%84%E6%94%B9%E8%BF%9B)
- [去除Windows 8.1的支持](#%E5%8E%BB%E9%99%A4windows-81%E7%9A%84%E6%94%AF%E6%8C%81)
- [去除32位linux支持](#%E5%8E%BB%E9%99%A432%E4%BD%8Dlinux%E6%94%AF%E6%8C%81)
- [其他](#%E5%85%B6%E4%BB%96)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

# v3.14.1
# v3.15

## 修复的问题
## 新特性

* 如果创建物理场景但是没有设置3d物理的摄像机,那么程序会崩溃
* 由于glfw版本冲突,在linux平台可能会有链接错误
* 通过带有多边形信息的sprite frame创建的Sprite效果不对
* VS2015编译Lua工程时有链接错误
* 通过`cocos compile/run -p android --android-studio`命令编译Android工程时会有编译错误
* 全面支持__Android Studio__,包括编译、代码编辑和调试C++代码:[使用文档](https://github.com/chukong/cocos-docs/blob/v3-unified-documentation/installation/Android-Studio.md)
* 音频模块在Android平台使用[tremolo](http://wss.co.uk/pinknoise/tremolo/)解码器解码音频文件,使得音频模块效率更高,兼容更多的Android设备
* __WebSockets__和__SocketIO__支持__SSL__
* AssetsManagerEx更加稳定
* 更新__Spine runtime__到v3.5.35
* 更新__flatbuffer__到v1.5
* 升级__OpenSSL__到v1.1.0
* 去除__Windows 8.1__的支持
* 去除32位linux的支持

## 其他

通过查看[3.14.1版本信息](https://github.com/cocos2d/cocos2d-x/milestone/36?closed=1)了解所有的问题或者代码改动。
## 新特性详细介绍

### 全面支持Android Studio

从__3.15__版本开始,可以使用Android Studio 2.3+ 编辑、编译和调试C++代码。只需要通过Android Studio打开__proj.android-studio__文件夹(比如__tests/cpp-empty-test/proj.android-studio__),然后点击__run__按钮就可以在Android设备或者模拟器运行、调试了。

详细的使用方法请参考[这篇文档](https://github.com/chukong/cocos-docs/blob/v3-unified-documentation/installation/Android-Studio.md)。

### 音频模块在Android平台的改进

3.15版本之前,音频模块使用__OpenSL ES__解码、播放音频文件,但是很多的Android设备厂商会修改这部分代码,导致音频模块在不同的Android设备上有兼容性问题。[该帖子](http://discuss.cocos2d-x.org/t/android-audio-decoding-issues-discussion/34610)就列出了许多音频模块的问题。

为了解决兼容性问题,我们引入了第三方的解码库[tremolo](http://wss.co.uk/pinknoise/tremolo/)。该解码库也是Android源码使用的解码库。使用该解码库除了能解决Android设备的兼容性问题,同时还带来了不少性能提升:

![audio performance](https://raw.githubusercontent.com/minggo/Pictures/master/AudioDecodingPerfTest.png)

引入该解码库会使最终的APK包增大100K左右,和带来的好处相比还是值得的。

### 去除Windows 8.1的支持

Windows 8.1的支持一直是微软的开发者在维护。因为市场占有率原因,他们觉得没必要继续支持Windows 8.1了。

### 去除32位linux支持

目前大部分的PC都是64位了,所以我们觉得去除对32位linux的支持。去除这个支持意味着第三方库去掉了对应的32位版本,这样可以减小发行包的大小,也减少引擎维护的工作。开发者如果想支持32位版本的话,可以使用[这个仓库](https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src)自己编译32位版本的第三方库。

### 其他

[Android SDK Tools 25.3.0+](http://tools.android.com/recent/androidsdktoolsrevision2530feb2017)去除了__ant脚本__和__android命令__,使得cocos命令无法打包Android的Eclipse工程(proj.android)。为了不至于在最后胜出APK时才报错,现在cocos命令检查到这个版本后直接返回错误。有两个方法可以解决这个问题:

* 从旧版本的Android SDK拷贝tools文件夹过来替换对应的目录
* 使用Android Studio工程编译打包

从Android工具删除ant脚本和android的行为来看,谷歌是不希望大家继续使用Eclipse工程,所以建议大家还是使用Android Studio来编译打包吧。旧版本引擎虽然不支持Android Studio调试C++代码功能,但是编译打包还是没问题的。