iOS 빌드 업로드후 경고 메일이 전달 되고 테스트플라이트에 업로드 되지 않는 경우 Cocos2d-x에서 Deprecate UIWebView를 사용했기 때문에 발생합니다.

cocos2d-x 에서 UIWebView를 제거해주면 됩니다.

 

해결방법

UIWebViewImpl-ios.h

UIWebViewImpl-ios.mm

2개파일을 제거 해 주면 해결 됩니다.

Posted by 후미카
:

작업을 하다 보면 undefined reference to XXX  와 같은 에러가 발생 하는 경우가 있다.

대부분의 문제는 헤더파일의 함수를 구현하지 않았거나, 해당 헤더파일이 #include 되지 않은 경우가 많지만 VisualStudio 등에서는 문제 없이 실행 되나 Android 빌드에서만 문제가 되는 경우 CMakeLists.txt 파일을 한번 수정 하여 갱신 하는 것으로 해결이 되는 경우도 있다. 

Posted by 후미카
:

3.17.1 버전으로 업데이트 후 안드로이드 스튜디오에서 Sync 실행 시 Error Configuring 에러가 나오면서 진행이 되지 않는 현상이 있습니다.

 

이때 CMake 버전을 3.6 버전으로 내려주면 해결됩니다.

 

Posted by 후미카
:

RederTexture는 기본적으로 해상도 이상의 사이즈를 사용 할 수 업습니다.


이유는 Camera의 해상도를 넘어가는 부분은 렌더링에서 표시하지 않기 때문인데 이것을 바꿔주면 해결 할 수 있습니다.



1
2
3
4
5
6
7
8
9
10
Size originDesignResolution = Director::getInstance()->getOpenGLView()->getDesignResolutionSize();
Director::getInstance()->getOpenGLView()->setDesignResolutionSize(textureWidth, textureHeight, ResolutionPolicy);
 
renderTexture->begin();
 
node->visit();
 
renderTexture->end();
 
Director::getInstance()->getOpenGLView()->setDesignResolutionSize(originDesignResolution.width, originDesignResolution.height, ResolutionPolicy);



Posted by 후미카
:

Android NDK: ERROR: [프로젝트 경로]\proj.android-studio\../cocos2d/external/freetype2/prebuilt/android/Android.mk:cocos_freetype2_static: LOCAL_SRC_FILES points to a missing file

Android NDK: Check that [프로젝트 경로]/proj.android-studio/../cocos2d/external/freetype2/prebuilt/android/arm64-v8a/libfreetype.a exists  or that its path is correct



안드로이드 스튜디오로 작업 중 NDK빌드 시 위와 같은 에러가 나타나는 경우가 있다.


이유는 64비트로 prebuilt 된 freetype2가 존재하지 않기 때문이다.


Application.mk 파일 최 상단에 APP_ABI := armeabi 를 추가해주면 armeabi 만 적용 되며 빌드가 된다.


Posted by 후미카
:

cocos2d-x 로 개발을 하다보면 이클립스에서 android Library update has encountered a problem 에러가 나오는 경우가 있습니다.


이럴 경우 .cproject 파일을 약간 수정을 해 주면 됩니다.


.cproject 에서 아래 부분을 제거 해 주시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<cconfiguration id="0.1230402123.1377291156">
            <storagemodule buildsystemid="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1230402123.1377291156" moduleid="org.eclipse.cdt.core.settings" name="Debug">
                <externalsettings>
                <extensions>
                    <extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser">
                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser">
                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser">
                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser">
                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser">
                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser">
                </extension></extension></extension></extension></extension></extension></extensions>
            </externalsettings></storagemodule>
            <storagemodule moduleid="org.eclipse.cdt.core.externalSettings">
        </storagemodule></cconfiguration>



해당 에러는  NDK_ROOT 설정이 안된 상태로 이클립스 실행시 발생하는 오류라고 합니다.


Posted by 후미카
:


Application.mk 파일에 NDK_TOOLCHAIN_VERSION 을 추가하면 변경이 된다고 하지만 3.10버전에서는 변경이 되지 않는데 이것을 변강하는 방법 입니다.


{COCOS2D_ROOT}/tools/cocos2d-console/plugins/plugin_compile 폴더에 있는 build_android.py 파일을 변경 해 주면 됩니다.


build_android.py 폴더에 있는

1
2
def get_toolchain_version(self, ndk_root, compile_obj):
ret_version = "4.8"


위 부분의 4.8 부분을 해당 버전으로 변경 해주면 됩니다.

Posted by 후미카
:

Android.mk 파일에  JNI_OnLoad() 가 제거되었기 때문이다.


JNI_OnLoad() 함수를 추가 해 주거나 jni/hellocpp/main.cpp 파일을 등록 해 주면 된다.

Posted by 후미카
:

ccConfig.h 파일에 있는 옵션을 변경 해 주면 된다.


CC_FIX_ARTIFACTS_BT_STRECHING_TEXEL 값을 1로 설정 해 주면 된다.


Posted by 후미카
:

Android.mk 파일에 있는 cpp 파일 추가하는 부분을

아래 와 같이 변경 해준다.



Mac

1
2
3
4
5
6
7
8
CLASSES_DIRECTORY := $(LOCAL_PATH)/../../Classes
 
SOURCE_FILES := $(shell find $(CLASSES_DIRECTORY) -name *.cpp)
SOURCE_FILES := $(sort $(SOURCE_FILES))
SOURCE_FILES := $(subst $(LOCAL_PATH)/,,$(SOURCE_FILES))
 
LOCAL_SRC_FILES := hellocpp/main.cpp \
                   $(SOURCE_FILES)


윈도우

1
2
3
4
FILE_LIST := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
 
LOCAL_SRC_FILES := hellocpp/main.cpp \
       $(FILE_LIST:$(LOCAL_PATH)/%=%)


Posted by 후미카
:

cocos2d-x 에서 일정 영역 내에 있는 내용만 보여줘야 할 때가 있다.

그럴때 클리핑을 사용 하면 간단하게 처리 가능 하다.

사용 방법은 해당 클래스가 CCNode 를 상속 받을때 visit 함수를 아래와 같이 오버라이딩 하면 된다.



1
2
3
4
5
6
7
8
9
void HelloWorld::visit()
{
  glPushMatrix();
  glEnable(GL_SCISSOR_TEST);
  CCEGLView::sharedOpenGLView().setScissorInPoints( x, y , width, height);
  CCNode::visit();
  glDisable(GL_SCISSOR_TEST);
  glPopMatrix();
}




Posted by 후미카
:

AppController.mm 파일에서 아래의 한줄을 추가 해주면 된다.



1
[__glView setMultipleTouchEnabled:YES]


Posted by 후미카
:

CCSpriteBatchNode 를 사용하는데 addChild 되어있는 이미지가 전부 나오지 않는 경우가 있다.

이때는 capacity 를 의심 해 볼 필요가 있는데 로그를 보면 CCSpriteBatchNode 의 capacity를 자동으로 늘려주는 로그가 있다.

이 로그에서 capacity 값이 내가 addChild 한 값보다 작은경우 addChild 한 갯수만큼 처음 생성할때 capatcity 값을 지정해주면 문제 없이 표현이 된다.



1
CCSpriteBatchNode* spriteBatch = CCSpriteBatchNode::create("spriteName.png",66);
Posted by 후미카
:

cocos2d-x 에서는 간단한 데이터 저장을 지원한다.



사용 방법


데이터 저장하기

CCUserDefault::sharedUserDefault()->setIntegerForKey(키값,데이터);

데이터를 저장할때는 저장할 키값과 함께 정보값을 넣어 주면 해당하는 키값으로 저장이 된다.


데이터 가져오기

int integer = CCUserDefault::sharedUserDefault()->getIntegerForKey(키값);

데이터를 가져올때는 해당 데이터의 키값을 넣어주면 해당하는 데이터를 가져 올 수 있다.


ex)


1
2
CCUserDefault::sharedUserDefault()->setIntegerForKey("keyInt",value);
int integer = CCUserDefault::sharedUserDefault()->getIntegerForKey("keyInt");


데이터 저장 가능한 죵류는 Integer, float, double, bool, string 등이 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
CCUserDefault::sharedUserDefault()->setIntegerForKey("keyInt",value);
int _integer = CCUserDefault::sharedUserDefault()->getIntegerForKey("keyInt");
 
CCUserDefault::sharedUserDefault()->setFloatForKey("keyFloat",value);
float _float = CCUserDefault::sharedUserDefault()->getFloatForKey("keyFloat");
 
CCUserDefault::sharedUserDefault()->setDoubleForKey("keyDouble",value);
double _Double= CCUserDefault::sharedUserDefault()->getDoubleForKey("keyDouble");
 
CCUserDefault::sharedUserDefault()->setBoolForKey("keyBool",value);
bool _bool = CCUserDefault::sharedUserDefault()->getBoolForKey("keyBool");
 
CCUserDefault::sharedUserDefault()->setStringForKey("keyString",value);
std::string _string = CCUserDefault::sharedUserDefault()->getStringForKey("keyString");
Posted by 후미카
:

카테고리

전체보기 (102)
Development (102)
iOS (15)
Android (24)
Java (5)
Unity3d (27)
Photon (1)
C# (1)
C++ (7)
cocos2d-x (14)
etc (8)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

글 보관함