3.2 的模块化编译不好使呀

根据文档,将以下模块置为0,想看看编译出来的SO文件能有多大

CC_USE_TIFF := 0
APP_CPPFLAGS += -DCC_USE_TIFF=1

CC_USE_WEBP := 0
APP_CPPFLAGS += -DCC_USE_WEBP=1

CC_USE_TGA := 0
APP_CPPFLAGS += -DCC_USE_TGA=1

CC_USE_PHYSICS := 0
APP_CPPFLAGS += -DCC_USE_PHYSICS=1

但编译的时候出了一堆链接错误:

./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFClientOpen’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFGetField’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFGetField’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFGetField’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFGetField’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘_TIFFmalloc’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFReadRGBAImageOriented’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘_TIFFfree’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithTiffData(unsigned char const*, long): error: undefined reference to ‘TIFFClose’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithWebpData(unsigned char const*, long): error: undefined reference to ‘WebPInitDecoderConfigInternal’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithWebpData(unsigned char const*, long): error: undefined reference to ‘WebPGetFeaturesInternal’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithWebpData(unsigned char const*, long): error: undefined reference to ‘WebPDecode’
./obj/local/armeabi/libcocos2d.a(CCImage.o):CCImage.cpp:function cocos2d::Image::initWithImageData(unsigned char const*, long): error: undefined reference to ‘cocos2d::tgaLoadBuffer(unsigned char*, lo
ng)’
./obj/local/armeabi/libcocos2dx2d.a(CCScene.o):CCScene.cpp:function cocos2d::Scene::initWithPhysics(): error: undefined reference to ‘cocos2d::PhysicsWorld::construct(cocos2d::Scene&)’
./obj/local/armeabi/libcocos2dx2d.a(CCNode.o):CCNode.cpp:function cocos2d::Node::setPhysicsBody(cocos2d::PhysicsBody*): error: undefined reference to ‘cocos2d::PhysicsBody::removeFromWorld()’
./obj/local/armeabi/libcocos2dx2d.a(CCNode.o):CCNode.cpp:function cocos2d::Node::removeAllChildrenWithCleanup(bool): error: undefined reference to ‘cocos2d::PhysicsBody::removeFromWorld()’
./obj/local/armeabi/libcocos2dx2d.a(CCNode.o):CCNode.cpp:function cocos2d::Node::detachChild(cocos2d::Node*, long, bool): error: undefined reference to ‘cocos2d::PhysicsBody::removeFromWorld()’
collect2.exe: error: ld returned 1 exit status
make.exe: *** Error 1

两个都要设置为0

CC_USE_TIFF := 0
APP_CPPFLAGS += -DCC_USE_TIFF=0

多谢,现在可以编译成功了

但是虽然删除了很多模块,但是目前release编译出来的so,比2.2.5全包编译的还大很多…

还有进一步优化的空间么?

有多大?去掉后打成apk包现在只有3M多一点哦

3M 已经小了很多了。

3M 左右,还可以啊

3M 是打成APK后的尺寸,原本.so文件是6.x

记得cocos2.0.4打包出来的才2MB,打成apk之后才1MB

这个对于休闲小游戏还是很重要的,比如两款一样的2048,别人的包2mb,你的包4MB,人家在移动MM的下载量很容易就是你的N倍

程序员基本24小时WIFI,偶尔3G,意识不到这点

但是很多老百姓没有这些环境,完全相反,一个月就50MB的3G免费流量,对包的尺寸很在意的

所以还是希望提供进一步优化的可能性

其他的模块都不大,后续考虑是否可以去掉3D模块吧

3D模块肯定是得做成模块化的,现在膨胀的趋势有点夸张,这么下去都要赶超 Unity3D 了

如果能最小编译到so原尺寸3MB,那就差不多,相当于2.0 的编译输

cpp版本怎么设置模块化编译 一个空项目编译出来的SO有8M呢怎么搞的。?怎么设置模块化编译

游戏太小,用户还以为是病毒,或者觉得游戏没什么内容,反而不下载