PROBLEM
-------
cocos makefile is not self-containing.
From the perspective of a developer that link his target with
`cocos2dx_static` library, it should specify in his `Android.mk` only
a path to a makefile that defines that module, by
a) using `import-add-path` and `import-module`
$(call import-add-path, <path-to-cocos-root>)
$(call import-module, cocos)
or ...
b) using directly an `include` command
include <path-to-cocos-root>/cocos/Android.mk
Unfortunately the current configuration of cocos' Android.mk doesn't
specify (using `import-add-path`) locations of modules that it uses.
In result, every dev that uses cocos to create Android app has to
populate NDK_MODULE_PATH at his Android.mk files by adding two lines:
$(call import-add-path, <path-to-cocos-root>/cocos)
$(call import-add-path, <path-to-cocos-root>/external)
Those lines have to be placed at cocos/Android.mk file.
The current configuration of build script breaks a good practice of
hiding internal details from clients of library or component. In fact
the script exposes internal dependencies and require from a dev to make
them out.
---
SOLUTION
This commit adds corresponding `import-add-path` commands to Android.mk
files.
---
HOW TO TEST
1. Create cocos2d-x app.
2. Import in your Android.mk file a `cocos` module using one of
aforementioned approaches.
3. The app should compile without a error message like the one below:
Android NDK: jni/../../cocos2d/cocos/Android.mk: Cannot find module with tag 'freetype2/prebuilt/android' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Issue: https://github.com/cocos2d/cocos2d-x/issues/18392
* No need to update password text in ccui TextFiled, because it's handled in TextFiledTTF
* Do not update visual state of Label if placeholder set when keyboard is attached
* 1. add 'const'
2. add range support for 'getAsCharSequence'
* remove default arguments
* use another variable to make it more clear
* rename isAnsi-> isASCII
* Make the sort behavior is same on 32bit and 64bit
* Update CCNode.h
* Update CCNode.cpp
* Update ccMacros.h
* Use std::int32_t to for zOrder
* Update CCNode.cpp
* *fix android AudioEngine Crash
switch to background when sound effect is about to end, it's maybe crashed when switch to foreground again
* use "emplace" instead of "insert"
* *fix android AudioEngine Crash
switch to background when sound effect is about to end, it's maybe crashed when switch to foreground again
* use "emplace" instead of "insert"
It's caused by `FileUtils::getContents` is invoked in different threads and we use EventDispatcher::dispatchCustomEvent in `FileUtilsAndroid::getContents` to send an event to EngineDataManager.
Since EngineDataManager class is only for internal use and EventDispatcher isn't thread-safe, we make `EngineDataManager::onBeforeReadFile` public and invoke it `FileUtilsAndroid::getContents`.
* allow setting and getting of pageview indicator opacity. fix some documentation comments
* don't draw the indicator the selected indicator is currently overlapping
* add a tweaked opacity to one of the test cases
* remove unused variable
* convert tabs to whitespace
* change constexpr to static const
* fix iterator invalidation when adding or removing pages from the pageview
* allow setting and getting of pageview indicator opacity. fix some documentation comments
* don't draw the indicator the selected indicator is currently overlapping
* add a tweaked opacity to one of the test cases
* remove unused variable
* convert tabs to whitespace
* change constexpr to static const
* horizontal alignment support in RichText
* split lambda into separate function
* tweak shadow test's content size so horizontal aligment doesn't give the illusion of behaving incorrectly
* fix alignment when the last char of a line is whitespace
* fix errors from merge
* fix bug in setting of size of image elements. scaling was applied effectively twice.
* removed debugging code. whoops
* use prebuilt bullet
* prebuilt bullet work ok on linux
* update search path
* update search path
* fix compiling issue for lua/jsb projects
* prebuilt bullet work on windows
* update 3rd party lib version
* add bullet search path
* fix script bindings issue
* fix scripting binding
* fixed#17922: [android] AudioEngine may crash while audio's over and stop state is triggered at the same time.
The Pull Request #17748 didn't resolve the issue since _track->getPrevState will be wrong while in scheduler callback. We need to capture it in lambda.
My Pull Request also merges PR #17716 to make filePath captured by lambda.
* Adds missing log tag in AudioEngine-inl.cpp
* Added three new methods for UiWebView. SetOpacityWebView(float), getOpacityWebView(), setBackgroundTransparent() in IOS
* Implemented methods for UiWebView. SetOpacityWebView(float), getOpacityWebView(). They only work using android sdk +11.
* New methods not implemented for Tizen.
* Added new button for testing the opacity in the cocos2d-x test application.
* Added setBackgroundTransparent to android, and his UI-Test.
* Added setBackgroundTransparent to android, and his UI-Test.
* Added keyword const to the getters.
* Android sdk reflection. +11sdk for chaging the opacity.
* Reflection used for the webview.setLayerType, webview.setAlpha, webview.getAlpha
* Unified exceptions.
* remove APP_SHORT_COMMANDS setting (#17722)
some developers report it will cause error on Windows though i can not reproduce it. It is strange, the setting is used to resolve command length limitation on Windows.
* Particle font size should be a const value (#17676)
* Particle font size should be a const value
* Minor fix: CCStencilStateManager.hpp -> CCStencilStateManager.h in xcode project.
* JSB SocketIO.connect supports to pass a CA cert file (#17736)
* JSB SocketIO.connect supports to pass a CA cert file
* The second parameter of SocketIO.connect function is probably a `option` object. JSB just ignores it.
* The optimization for huawei. (#17832)
* The optimization for huawei.
* setAnimationInterval fix for all platforms.
* disable debug
* include fix.
* Uses better configuration for huawei optimization (#17838)
* Uses better configuration for huawei optimization
* Updates jar file and uncomment fps controlling code
* [ci skip][AUTO]: updating luabinding & jsbinding & cocos_file.json automatically (#17840)
* update release not and version (#17845)
* [android] Removes an unused variable sRegistered in Cocos2dxActvity.java. (#17861)
* Updates jar to resolve warning while packaging APK file. (#17863)
* update release date (#17870)
* fix compiling error
* fix to problem with updating APK in Google Play keeping OBB from previous version
This patch fixes the problem when we are unable to keep OBB from previous version when we are uploading new .apk to Google Play.
It was discussed here:
http://discuss.cocos2d-x.org/t/problem-with-updating-apk-in-google-play-keeping-obb-from-previous-version-because-versioncode-changes/36039
* check for null pointer added
Found an issue which could lead to a crash because of null pointer exception.
If pathToOBB doesn't exist then File.list will return null which will cause fileNames array be null.
Now it is fixed.
* LayerRadialGradient works on mac and iOS
* fix radius
* finish LayerRadialGradient and add test case
* use local coordinate in shader
* adjust function attributes
* implement getCenter()
* add some comments
* Fixing issue where XMLHttpRequests would not have their destructor fire if CC_ENABLE_GC_FOR_NATIVE_OBJECTS was set. This was due to mismanagement of JSHeap object tracing.
* Removing unused variables in js_add_object_root.
* small BillBoard optimizations
-Quick return in visit if it is not visible and has no children.
-Comment out getNodeToWorldTransform because it is death code (doesn't do anything)
* remove unused rotationQuaternion
* Allow visit sprite without camera for render to texture
A fix to allow render to texture like this
'''
Director::getInstance()->setProjection(Director::Projection::_2D);
m_renderTarget->beginWithClear(1, 0, 0, 0.2, m_depthClear, 0);
m_sprite->visit(Director::getInstance()->getRenderer(), Mat4::IDENTITY, 0);
m_renderTarget->end();
Director::getInstance()->setProjection(Director::Projection::_3D);
'''
* NULL -> nullptr
* [Win32,WinRT] Fix listFiles and listFilesRecursively use unicode.
1. Incorrect convertation to unicode
if (length != fullpath.size()) correct only ASCII char.
2. For convert unicode exist api, to avoid errors.
3. Equal first char on '.' - error
Need check full name file on "." and "..", otherwise exclude file and
folder begin '.'
Now not use macro UNICODE, for easy use unicode convert api(Otherwise,
you need to connect different versions WinRT and Win32).
* Fix minggo remark.
* Move to specific platform section.
* Changing CCAsyncTaskPool and CCScheduler to better leverage move semantics, to avoid several lambda copy constructor calls. Chaning call sites in the cocos engine to better leverage move semantics.
* Editing binding generator to not generate bindings for AsyncTaskPool::enqueue. Bindings were not previously generated for this function due to it's type signature involving a template parameter.
* Adding missing std::move call in AsyncTaskPool to skip a copy constructor call.
* fix reschedule issue
* correct code formatting
* Fix isScheduled
* improve a bit performance of executing functions in cocos thread
* added test to verify reschedule issue
* re-init timer in schedule if timer exists and alive
* fix editbox textChanged event called after fragment loaded
* fix editbox duplicatd text when change text in textChanged callback
* revert changes of placeholder modification
* Added function for calculating md5 hash from Data.
getFileMD5Hash now use getDataMD5Hash.
For example, AssetsManagerEx VerifyCallback.
Get Data from file, check equal size, if equal to get md5 hash.
* Data::isNull check size equal 0
* Build on linux and android.
This permits comments to be visible in tooltips for the variable and it's associated accessor functions
e.g.
//The health of the entity, when this reaches zero the entity is dead
CC_SYNTHESIZE(float, m_health, Health)
Previously the above comment would only be displayed in the tooltip for the member variable
Downloading large file to memory could cause stack overflow and crash, because old code created buffer `char buf[buflen];` in stack.
New code creates buffer in heap.
* remove APP_SHORT_COMMANDS setting (#17722)
some developers report it will cause error on Windows though i can not reproduce it. It is strange, the setting is used to resolve command length limitation on Windows.
* Particle font size should be a const value (#17676)
* Particle font size should be a const value
* Minor fix: CCStencilStateManager.hpp -> CCStencilStateManager.h in xcode project.
* JSB SocketIO.connect supports to pass a CA cert file (#17736)
* JSB SocketIO.connect supports to pass a CA cert file
* The second parameter of SocketIO.connect function is probably a `option` object. JSB just ignores it.
setCharMap, setBMFontFilePath and setTTFConfigInternal use getFontAtlas.
getFontAtlas retain font atlas always.
setFontAtlas not release, if atlas equal current.
For example call Label::setTTFConfig for equal ttfConfig.
* Adding async functions for FileUtils::listFiles and FileUtils::listFilesRecursively.
* Updating CCFileUtils::listFiles and CCFileUtils::listFilesRecursively to not expose their async version to
the JS and Lua scripting layers, due to a bug in the binding generator code.
* Updating comments in CCFileUtils.h to prevent improper JS bindings to be generated.
* Editing the cocos2dx.ini files, to prevent bindings for listFilesRecursivelyAsync and listFilesAsync to be generated.
* fixed#17685: [android] Audio in game couldn't be mute while a ring or a call is coming
* Updates comments in AudioEngine-inl.cpp and removes extra empty line in javaactivity-android.cpp
* Puts audio focus relative code to another java file named Cocos2dxAudioFocusManager.java
Renames setAudioFocusLost to setAudioFocus.
* Renames JNI function.
* Register audio focus in onResume and unregister it in onPause.
* fixed#17665: [android] Crash while launching on the devices only support OpenGL ES 2.
Fixes that egl.eglCreateContext may return non-null but EGL10.EGL_NO_CONTEXT value.
It will cause create a EGL env with a EGL_NO_CONTEXT egl context which will cause crash.
* Don’t link with libGLESv1_CM.so
* Adds libmd5-rfc library since the functions in <openssl/md5.h> aren’t exported in win10, plus <openssl/md5.h> seems to be private header.
* Adds libmd5-rfc library for win32 and win10.
* Removes json/msinttypes folder from xcode since it’s only needed for win32 | win10.
* Should not use fread to read file from assets, uses FileUtils::getDataFromFile instead.
* Client socket should not be closed immediatelly after ::send. Otherwise, sever may will receive “Connection reset by peer - Errno 104” error on some platforms. It could be 100% reproduced on Android.
* Moves the implementation of AudioEngine::AudioInfo to cpp file.
* fixed#17591: [ios, mac, win32] Audio could not be played in the callback of AudioEngine::setFinishedCallback
* fixed#17591: Adds test case.
* fixed#17497: Win32 performance is bad.
The 'Sleep(1)' in FPS controlling code isn't precise enough. Windows sets timer precision from 1ms to 15ms, we need to set the precision to the highest one (1ms). Although it's still not enough, we need to make some tricks in the FPS controlling code, that is, don't sleep if the interval is equal or less than 1 millisecond.
* Untabify code.
* [libcocos2d.vcxproj, libcocos2d.vcxproj.filters] Removed entries for non-existent files that were causing "Build is out of date" issues in Visual Studio
[project.pbxproj] Removed entries for non-existent file
* [libcocos2d.vcxproj.filters] Renamed CCStencilStateManager.h extension to .hpp.
* [libcocos2d.vcxproj, libcocos2d.vcxproj.filters] Removed entry for file CCDownloaderImpl.h which does not exist.
* Changed extension of CCStencilStateManager.hpp to .h
* Added support for VS2017 in project files.
* [libcocos2d.vcxproj, libcocos2d.vcxproj.filters] Removed entries for non-existent files that were causing "Build is out of date" issues in Visual Studio
[project.pbxproj] Removed entries for non-existent file
* [libcocos2d.vcxproj.filters] Renamed CCStencilStateManager.h extension to .hpp.
* [libcocos2d.vcxproj, libcocos2d.vcxproj.filters] Removed entry for file CCDownloaderImpl.h which does not exist.
* Changed extension of CCStencilStateManager.hpp to .h
* fixed#17494: Adds setTimeout to wrap NSTimer since ‘timerWithTimeInterval:repeats:block’ is only available from iOS 10, macOS 10.12.
* Sets _timeoutCallback to nullptr if onTimeoutCallback is called.
* Fix custom event being discard during event emission
* Fix tilemap black line issue
* Fix auto bindings config
* Adapt websocket to new memory model
* Improve cocos2d_specifics code stability
* Fix issue with get_or_create_js_object function
* Improve memory usage in function wrapper invocation
* Use JS Function bind to avoid memory tracking issues
* Support size parameter to collect total byte size before update process
* Fix download resuming issue on Android
* Remove temporary assets when temporary manifest is invalid or out of date
* Use version compare handle to compare manifests versions
* Support max concurrent tasks setting & download verify callback
* Add Manifest::Asset conversion
* Avoid crash caused by wrappers
* Sync implementation of tested and published AssetsManagerEx from Cocos Creator
* Fix linux compilation issues
* Improve the AndroidStudio configuration of test projects to fit the new implementation of cocos compile.
* Improve the AndroidStudio configuration of templates to fit the new implementation of cocos compile.
* More powerful Uri class, adds unit test for Uri class. Refactores some code in SocketIO & Websocket.
* Adds missing header file stdint.h
* Exports Uri class
* Uri belongs to network group
* Updates the location of group comment
* Removes an unused include.
* Updates Uri comment.
Supports SSL connection for SocketIO.
Avoid memory corruption while disconnecting SocketIO, _ws->close() has to be at the end of ‘SIOClientImpl::disconnect()’.
* fixed#17427: lws_parse_url have wrong behavior, it parses ’ws://domain.com/abc/d’ to ‘path: abc/d’ rather than ‘path: /adb/d’.
Adds Uri class and parses Url to scheme, host, port, path in engine side.
* Moves Uri implementation to Uri.cpp, adds getter functions.
* Updates win32 project.
* Updates win10 project.
* Adds include header for atoi error on android.
* Updates tizen project configuration.
If the delta time dt passed to cocos2d::Timer::update(float) is longer than the
interval of the timer, then the timer will be triggered several times even if
the selector is unscheduled during the call.
This commit adds a flag in cocos2d::Timer stop the update loop if the selector
has been unscheduled.
* Some fixes for search paths:
1. Adds ‘_originalSearchPaths’ variable, ’getSearchPaths’ returns the original values set by ‘setSearchPaths’ or ‘addSearchPath’.
2. Adds a getter function ‘getDefaultResourceRootPath’.
3. ‘setDefaultResourceRootPath’ should also update search paths and remove file path cache internally.
4. ‘setSearchPaths’ supports to pass self (_originalSearchPath), could be used in ‘setDefaultResourceRootPath’ to update the final ’_searchPathArray’ for searching full path.
5. ‘addSearchPath’ fix, the default resource root path should be the last element in ‘_searchPathArray’.
* Checks whether the parameter ‘searchResolutionOrder’ passed in is the same as ‘_searchResolutionsOrderArray’.
* Don’t break the compatibility, add a new method called ‘FileUtils::getOriginalSearchPaths’.
* 17357: Better encapsulate the definition of mouse buttons
Move definition of buttons from a list of #define's to an enum class and
make appropriate updates for successful compilation.
* 17357: Better encapsulate the definition of mouse buttons
Updates from code review:
* Removed changes to automatically generated files
* Removed std::ostream& convenience operator
* 17357: Fix mouse tests
* [WebSocket] Adds support for getting url and server selected protocol
* Adds const keyword for getter methods, and make LOGE also works in release mode.
* add some getters for EditBox and EditBoxImpl
* remove duplicate member variables from EditBox
* fix todo
* change to pure virtual methods for class EditBoxImpl
* [Android] Software decoding while preloading audio files to avoid some crashes on some specific android devices, and it’s 2x faster than the old implementation.
* Updates external/config.json to 126
* Updates library path, adds ‘android-specific’ prefix.
* Updates config.json to 127
* libwebsockets & curl are dynamic libraries now, modify project configuration for win32.
Updates WebSocketTest.cpp to test wss connection.
* Corrects some logic in WebSocket.cpp. Adds wss test case. WebSocketTest suggests developers to use `WebSocket::closeAsync` method which will not block current thread.
* mutex unlock fix in WebSocket.cpp. Reverts TEST URL.
* Allows self-assign cert.
* Each ws connection will create a virutal host now. Supports self-signed cert and update test case to suggest developer use ‘closeAsync’.
* Updates deps to 123.
* fixed#16871: Material second shader texture will be lost when removeUnusedTextures is invoked.
* issue #16871: Adds test case for issue #16871.
* issue #16871: Checks whether current texture is the same as which is passed in. And more comments for release stuffs.
* Removes unused nullptr check of _value.tex.texture
CC_SAFE_RETAIN will check it.
And some indention fixes.
* Fix various compilation issues.
Mostly errors on field initialization order but also missing files
in CMakeLists and missing include directives.
* Fix compilations issues with GCC 6.2
* Fix gitignore libs/ entry to not ignore the Android external libraries.
* Allow to unbind asynchronous texture loading callback with a custom key.
In order to unbind the callback passed to
`cocos2d::TextureCache::addImageAsync(path, callback)`, one has to
call `cocos2d::TextureCache::unbindImageAsync(path)`. In the cases
where the loading of the same texture is requested from several sources
simultaneously, then none of the source can unbind its own callback
unambiguously.
This commit adds an overload of the `addImageAsync` function taking an extra
argument identifying the callback, thus allowing to unbind it unambiguously
in cases where the loading of path is requested by several sources
simultaneously.
* Add a test case for TextureCache::addImageAsync with a custom key.
* Refactors WebSocket:
1. Supports wss protocol
2. Uses only one libwebsockets context, multiple wsi instances to avoid multi-thread issues
3. Uses lws_create_vhost to create multiple virtual host, different protocols works
* Adds openssl include path to xcode project configuration.
* mac doesn’t depend on curl
* ca file path should be full path.
* More bug fixes like which in https://github.com/cocos2d/cocos2d-x/pull/6986
* Remove curl dependence for mac
* Updates Andorid.mk
* [win32] Adds wss support for win32, and updates openssl, libcurl, libwebsockets libraries.
* Updates external/config.json to 118.
* [win32] Updates cocos/2d/libcocos2d.vcxproj to fix compilation error while building in release mode.
* Linux support websocket ssl connection.
* Updates external/config.json
* Updates install-deps-linux.sh
* Adds dependence of binutils, print ld version
* Updates travis scripts.
* Updates travis scripts.
* Updates travis script, don’t output log while extracting.
* update before-install.sh
* updates before-install.sh
* updates before-install.sh
* don’t output log for installing software.
* Updates config.json to 120.
* fixes issue #17119
and sanitizes the code a little bit
* more fixes
* fixes issue #17116
* restore xcode "none" sign profile
* code is cleaner
add more documentation in CCSprite.h
* missing assets
* anchor point works with batchnodes again
* Fix conversion warning
from unsigned int to float
* Fix type conversion warning
* Fix type conversion warning
* change the return type of getOutlineSize to float
* fix typo
* fixed#16849: Preload many audios may cause crash on devices those use Samsung Exynos CPU.
* Adds comment for __SLPlayerMutex variable.
* Fixes wrong comments in AudioDecoder.cpp
* Add EventDispatcher#hasEventListener (sync from creator)
* Fix function wrapper using js object during its gc
* Support more system languages
* Direct log/error for better understanding problems & add sys.now
* Synchronize Editbox APIs
* Synchronize Scheduler.PRIORITY_NON_SYSTEM const
* Upgrade web engine
* Upgrade test cases
* Manually bind EventDispatcher::addCustomEventListener to avoid memory issue
* Manual bind EventListeners’ create to avoid memory issue
* Fix compilation issue when COCOS_DEBUG = 2
* Unify function name of Texture2D::releaseTexture
* Fix compilation issues and update web & bindings-generator
* Fix lua compilation issue
* Use %ld instead of %zd
* Separate FinalizeHook for ref objects and non ref objects
* Fix spine TrackEntry recursive conversion issue by using getter
* Fix crash during Wrappers deallocation (possible to have leak)
* Increase default JS heap to 32 mb
* Update engine version
* Add change log of web engine
* Improve cc.formatStr
* Fix chipmunk crash issues when using setDefaultCollisionHandler
* Add change log for JSB and update web engine ref
* [mac, ios] Adds AudioDecoder::readFixedFrames. And uses readFixedFrames to simply code.
* [mac, ios] ‘ExtAudioFileRead’ may return 0 frame while it doesn’t reach the end of very short audio file.
* [mac, ios] Adds test case for small file test.
* [mac, ios] Adds small audio file.
* [mac, ios] Macro ‘BREAK_IF’ logic fix.
* [mac, ios] Returns false of AudioDecoder::open if total frames is 0.
* Add EventDispatcher#hasEventListener (sync from creator)
* Fix function wrapper using js object during its gc
* Support more system languages
* Direct log/error for better understanding problems & add sys.now
* Synchronize Editbox APIs
* Synchronize Scheduler.PRIORITY_NON_SYSTEM const
* Upgrade web engine
* Upgrade test cases
* Manually bind EventDispatcher::addCustomEventListener to avoid memory issue
* Manual bind EventListeners’ create to avoid memory issue
* Fix compilation issue when COCOS_DEBUG = 2
* Unify function name of Texture2D::releaseTexture
* Fix compilation issues and update web & bindings-generator
* Fix lua compilation issue
* Use %ld instead of %zd
* [android] Catches ‘NumberFormatException’ while invoking Integer.parseInt.
* [android] Catches ‘NullPointerException’ while converting Integer to int in Cocos2dxActivity.hideVirtualButton.