라벨이 Dev Mac인 게시물 표시

pod install 후 xcrun: error: SDK "iphoneos" cannot be located

이미지
리액트 네이티브 프로젝트를 iOS 시뮬레이터에서 실행하기전에 pod install를 했더니 아래와 같이 에러가 발생하네요. [!] /bin/bash -c  set -e #!/bin/bash # Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. set -e PLATFORM_NAME="${PLATFORM_NAME:-iphoneos}" CURRENT_ARCH="${CURRENT_ARCH}" if [ -z "$CURRENT_ARCH" ] || [ "$CURRENT_ARCH" == "undefined_arch" ]; then     # Xcode 10 beta sets CURRENT_ARCH to "undefined_arch", this leads to incorrect linker arg.     # it's better to rely on platform name as fallback because architecture differs between simulator and device     if [[ "$PLATFORM_NAME" == *"simulator"* ]]; then         CURRENT_ARCH="x86_64"     else         CURRENT_ARCH="arm64"     fi fi if [ "$CURRENT_ARCH" == "arm64" ]; then     cat <<\EOF >>fix_glog_0.3.5_apple_silico...

iOS 시뮬레이터에서 키보드가 안 보이는 경우

이미지
 리액트 네이티브로 TextInput 테스트 중에 iOS 시뮬레이터에서 키보드가 나타나지 않아서 확인해봤습니다. 굳이 리액트 네이티브에서만 발생하는 증상은 아닌 듯 하네요. 시뮬레이터에서 단축키로 command + k 로 바로 토글을 할 수 있습니다. 단축키로 계속적인 토글이 귀찮다면 시뮬레이터 I/O 메뉴 - Keyboard - Connect Hardware Keyboard 체크 해제해주면 키보드 팝업이 잘 되네요.

Mac error Error: Failed to install CocoaPods dependencies for iOS project, which is required by this template.

 맥에서 리액트 네이티브 프로젝트 생성중에 CocoaPods관련 에러가 발생하네요. Welcome to React Native!                  Learn once, write anywhere ✔ Downloading template ✔ Copying template ✔ Processing template ✖ Installing CocoaPods dependencies (this may take a few minutes) ✖ Installing CocoaPods dependencies (this may take a few minutes) error Error: Failed to install CocoaPods dependencies for iOS project, which is required by this template. Please try again manually: "cd ./project/ios && pod install". CocoaPods documentation: https://cocoapods.org/ 기존 포스팅에서 brew install --cask cocoapods 로 설치 했었는데 uninstall 시킨 후 아래와 같이 설치한 cocoapods를 사용하면 이슈가 해결되네요. 제 맥이 구버전이라 그런건지 카탈리나라 그런건지.. brew install cocoapods Warning: Treating cocoapods as a formula. For the cask, use homebrew/cask/cocoapods ==> Downloading https://ghcr.io/v2/homebrew/core/cocoapods/manifests/1.11.3 Already downloaded: /Users/wwforever/Library/Caches/Homebrew/downloads/e1e42eaf7a9c48aaa7a74e8eca...

Mac Error installing cocoapods: ERROR: Failed to build gem native extension.

 리액트 네이티브 프로젝트는 맥에서 설정 중 cocoapods 설치 관련 에러가 발생했네요. 참고로 맥북프로 2015년형이라 MacOS 카탈리나에 Xcode는 12.4입니다. sudo gem install cocoapods Password: Building native extensions. This could take a while... ERROR:  Error installing cocoapods: ERROR: Failed to build gem native extension.     current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/ext/ffi_c /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20220422-38063-jofjbd.rb extconf.rb checking for ffi.h... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  Check the mkmf.log file for more details.  You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog...

cocos2d-x Easy to create multi-platform projects on MaxOSX

이미지
 얼마전에 cocos2d 시리즈가 3번째 같이 릴리즈 를 했었습니다. 그래서 cocos2d-x가 버전이 2.1rc0-x-2.1.2가 되었죠. 자세한 변경사항은 cocos2d-x CHANGELOG를 확인 해보시면 될 듯합니다.  사실 그동안 cocos2d-x는 ios, android, win32등의 프로젝트를 따로따로 만드는 것은 쉘스크립트를 실행해서 만들 수 있었지만 이것을 통합하는데 있어서는 복사를 해줘야 하는 등 여러가지 난관 들이 있었죠. 이번 포스팅에서는 새로생긴 project-creator라는 것을 통해  cocos2d-x 멀티플랫폼 프로젝트 생성하는 것을 정리해봅니다. 먼저 집에는 맥만 사용중이라 맥 환경에서 하는 것을 정리해봅니다.  cocos2d-x-2.1rc0-x-2.1.2를 압축해제 후 tools/project-creator/create_project.py 파이썬 스크립트를 실행해서 프로젝트를 만들면 됩니다. ./create_project.py -project MyHelloWorld -package com.WWForever.Game -language cpp  저는 일단 위와같이 실행했습니다. 파이썬 스크립트 뒤에 옵션이 있습니다. -project - 프로젝트 이름 -package - 안드로이드 패키지 이름 -language - 개발 언어 지정( cpp, lua, javascript )  그러면 스샷과 같이 proj.ios, android, win32, mac, blackberry, linux, marmalade용 프로젝트가 cocos2d-x/projects/ 하위에 생성이 됩니다.  이렇게 말이죠. 예전에 비하면 정말 쉬워졌네요. 단 한방에 이렇게 통합 프로젝트를 만들 수 있으니까요. 아 물론 예전처럼 install-templates-xcode.sh를 사용해서 xcode의 템플릿으로도 생성은 가능합니다. 아무튼 계속 발전하는 coco...

cocos2d-x Win32에서 작업한 Android 프로젝트 Mac OSX용 Android로 포팅?

이미지
 먼저 간략하게 그동안의 개발과정을 정리해보면, 일단 개발환경이 Windows7 64bit, Visual Studio 2010에 cocos2d-x 2.0.1 win32로 개발하다가 Windows에 cocos2d-x 안드로이드 개발 환경 을 만들었었고, iOS는 컴파일 때문에 어쩔수 없이 Mac OSX에 Xcode에서 개발 환경을 설정 했었죠. 즉, Android는 Windows에서 빌드, iOS는 Mac OSX에서 빌드한 것이죠.  포스팅들을 보면 아시겠지만, 별 문제 없었습니다. 온갖 에러들을 다 해결해가고 Framework static lib도 Android와 iOS용으로도 만들어가면서 또 온갖 외부 모듈 붙여가면서 잘 했었죠. 근데 요근래 이상한 일이 생겼습니다. 팀원분이 제가만든 프레임워크 모듈을 가져다 쓰는데 있어서 빌드 이슈가 생긴것이죠. 차이점이라면 팀원분은 iOS, Android모두 Mac OSX 환경에서 작업했다는 것...  제가 만든 iOS lib는 가져다 쓰는데 이상이 없었는데, Android lib는 자꾸 h파일을 못 찾겠다고 심술을 부리더군요. 그래서 아예 프레임워크 소스까지 커밋 후, 소스를 공유해서 직접 빌드를 해보라고도 했지만 여전히 빌드가 안되더군요. 아, 이것이 상용 유니티3d엔진과 오픈소스 cocos2d-x의 어쩔 수 없는 빌드 차이인건가? 하면서 저도 Mac OSX에 안드로이드 환경을 만들어 봤습니다.  그런데, 저도 빌드가 안되었습니다. 그래서 정리 들어갑니다. 재미 없을 수도 있으니 귀찮으시면 제일 밑에 결론만 보시면 됩니다. NDK_ROOT=/Volumes/MacintoshHD2/Android/android-ndk-r8d COCOS2DX_ROOT=/Volumes/MacintoshHD2/Program/Engine/cocos2d-2.1beta3-x-2.1.0 GAME_ROOT=$COCOS2DX_ROOT/../../Projects/MyTestGame GAME_ANDROID...

cocos2d-x Mac OSX iOS 개발 환경 설정하기

이미지
 맥의 Xcode에 cocos2d-x 개발환경 세팅과 간단하게 프로젝트 하나 생성하는 것을 정리해봅니다. 1. cocos2d-x 설치   cocos2d-x 사이트 에 가셔서 다운로드 받습니다. 최신 Stable 버전은 2.1.0입니다.  적당한 곳에 압축을 해제합니다. 이제 xcode용 템플릿을 설치해야합니다. 혹, 구버전 cocos2d-x를 사용중이셨다면 구버전 템플릿을 삭제 후 시도하시기 바랍니다.   터미널에서 cocos2d-x가 있는 경로로 이동 후 sudo ./install-templates-xcode.sh 를 실행합니다. 혹시라도 command not found 가 나오면서 설치가 안되거나 그러면 링크 를 참고하시기 바랍니다.  이런식으로 설치 로그가 나오면 성공한 것입니다. 이제 터미널은 종료시키고 Xcode를 실행합니다. 2. cocos2d-x HelloWorld 프로젝트 생성  File -> New -> Project 또는 Xcode 처음 실행시 보이는 창에서 Create a new Xcode project를 선택합니다.  cocos2d-x 템플릿이 추가된 것이 보입니다. 간단한 Hello World 프로젝트를 생성할 것이므로 cocos2dx를 선택하고 Next를 클릭합니다.  프로젝트 이름등을 설정하고 Next를 클릭합니다.  원하시는 디렉터리에 Create해줍니다.  프로젝트 생성이 되었습니다.  빌드 후 실행하시면 이상없이 실행이 될 것입니다. 이제 살을 붙여나가시면 됩니다.

cocos2d-x iOS Tapjoy 연동 - Tapjoy Connect

이미지
  탭조이 계정 생성 및 App을 추가 했다면, 광고 기능을 넣기전에 간단하게 탭조이 SDK연동 시작이라고 할 수 있는 탭조이 Connect부분을 cocos2d-x 개발 프로젝트에 연동하는 것을 정리해보겠습니다. 먼저  탭조이 SDK 사이트 에서 최신버전을 다운로드 받아 압축을 해제합니다. v9.0.0이 현재 최신이네요. 참고로 without UDID 버전 SDK로 진행합니다.  압축을 해제하면 위와같은 디렉토리 구조로 되어있습니다. TapjoyPublisherLibrary를 개발중인 프로젝트의 Frameworks폴더에 드래그&드롭 해줍니다. 또는 Frameworks 마우스 우클릭 -> Add Files to xxxx 를 눌러 해당 디렉토리를 선택해줍니다. 나머지 TJ Multiple Currencies, TJ Publisher 2개는 SDK 연동 샘플입니다.  추가 된 모습입니다.  Frameworks를 몇가지 추가해야합니다. Project -> TARGETS -> Build Phases -> Link Binary With Libraries에서 + 를 클릭해서 아래 목록 중 없는 것들을 추가해줍니다. Foundation.framework UIKit.framework CoreGraphics.framework SystemConfiguration.framework CoreTelephony.framework - iOS 3.0 호환을 위한 것으로 링크를 Optional로 한다. MediaPlayer.framework AdSupport.framework - iOS6 용. Xcode 4.5이상이면 링크를 Optional로 한다.  스샷과 같이 CoreTelephony.framework는 Target Membership 또는 Build Phases에서 Optional로 선택해줍니다.  Build Settings ->...

Xcode Link Error : duplicate symbol _main in xxxx.a and xxxx for architecture armv7

이미지
duplicate symbol _main in xxxxxxxxxxx/libcurl.a(main.o) and Objects-normal/armv7/main.o for architecture armv7  위와 같은 로그와 함께 Xcode에서 링크에러가 발생하네요.  Tapjoy SDK를 개발 테스트 중인 cocos2d-x 기반 게임에 붙이는 중 기존에 추가했던 libcurl.a와 뭔가 같은 심볼이 있어서 난듯합니다.  SDK 가이드에 나온 것처럼 Other Linker Flags에 -all_load로 해서 작업을 했었는데, 이것 말고 대체할 방법으로 -force_load "$(SRCROOT)/../ExtLib/ios/TapjoyPublisherSDK_iOS_v9.0.0_UDIDOptOut/TapjoyPublisherLibrary/TapjoyPublisherLibrary.a"  이렇게 -force_load를 쓰라고 가이드에 되어있더군요. 이렇게 했더니 말끔히 빌드 완료했습니다.  그런데 이상하게 한번 빌드 성공 후엔 -all_load든 -force_load든간에 아무것도 안해줘도 빌드 성공하고 있다는게 함정...  참고 stackoverflow xcode duplicate symbol _main

cocos2d-x iOS iAD 광고 연동

이미지
 이번 포스팅에서는 iOS App에 광고를 붙여 수익을 얻을 수 있는 iAD를 cocos2d-x와 연동을 해보겠습니다.  TARGETS -> Build Phases -> Link Binary With Libraries에서 iAd.framework를 추가합니다. iAd라는 Object-C class를 만드시고 ///< iAd.h #import <iAD/iAD.h> @interface iAD : NSObject < ADBannerViewDelegate > + ( void ) init; ///< iAd.m #import "iAD.h" #import "EAGLView.h" UIViewController * gAdViewController = 0 ; @implementation iAD + ( void ) init {     ADBannerView* adView = [[ADBannerView alloc] initWithFrame:CGRectZero];     adView. requiredContentSizeIdentifiers = [ NSSet setWithObject : ADBannerContentSizeIdentifierLandscape ];     adView. currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape ;     [adView setDelegate : self ];          gAdViewController = [[ UIViewController alloc ] init ];     ///< 광고뷰를 뷰 컨트롤러에 추가     [ gAd...

cocos2d-x iOS SimpleAudioEngine or OpenGL context Crash Error

이미지
 언제부터인지 모르겠지만 cocos2d-x로 개발중 iOS Device에서 게임 실행중에 Home버튼을 눌러 나가기만하면 Crash가 발생했었습니다. 그 위치는... - ( void ) swapBuffers { ... ...       if (![ context_ presentRenderbuffer : GL_RENDERBUFFER ]) ... }  바로 EAGLView.mm의 저 if문쪽에서 딱 걸리더군요. 이거 뭐지? 이러면서 그동안 작업했던 Framework Static Lib에 메모리라도 잘 못 건들고 있나 싶었죠. Clean Build 해도 해결되지 않았습니다.  안되겠다 싶어서 Framework개발한 것 하나하나 사용 안하게 주석으로 막고 사용해보다가 마지막에 엉뚱하게도 SimpleAudioEngine :: sharedEngine ()을 사용한 부분을 주석달고 해보니 잘 되는게 아니겠습니까!? 몇차례 Framework부분과  SimpleAudioEngine :: sharedEngine ()부분을 주석했다 풀었다를 더 해봤지만 역시나  SimpleAudioEngine :: sharedEngine ()쪽이 문제의 원인이더군요. 이상하죠? 여태 잘 되던 사운드가 왜 갑짜기 이 난리통인지?  그려러니 하고 다른 기능 개발중 증상이 심해졌습니다. Home버튼 누르기도 전인  SimpleAudioEngine :: sharedEngine ()-> playBackgroundMusic() 등으로 Sound 재생만 하면 App이 멈추더군요. 지금은 에러가 수정 된 후라 정확히 기억은 안나지만 로우레벨딴인 openAL쪽이었던 것으로 기억나네요.  증상은 점점 심해지고 제가 만든 Framework 때문인가? 걱정을 살짝 하면서 cocos2d-x Tests 프로젝트에서 CocosDenshionTest을 ...

iOS In App Purchase 코드 구현 전 웹 설정 작업

이미지
 iOS에서 인앱결제 관련 된 부분을 정리해보도록합니다. 스샷에서 인앱결제와 관련된 부분은 Contracts, Tax, and Banking와 Manage Your Applications, Manage Users 3가지부분으로 이번 포스팅은 코드 구현부를 뺀  iTunes Connect 에서 처리해야할 웹내 설정에 대한 내용을 정리해봅니다.  본격적인 작업에 선행 작업들인 개발 인증서 처리 나 Device 등록과 App Id 생성 및 Provisioning Profile 생성 , iTunes Connect에 App 등록 Waiting for Upload 단계 까지 준비가 되어있어야 합니다. 이와 같은것들은 Manage Your Applications와 관련된 부분으로 링크에 각자 정리가 되어있으니 참고하시기 바랍니다.  또한 개발중인 App ID 부분을 체크해야합니다. 기존에 만든 App ID가 * 가 포함된 상태로 만들어진 것은 안되기 때문에 App ID를 유니크하게 명시적으로 다시 만들고 그에따른 App 등록을 다시 하시고 아래 내용을 진행하시면 됩니다.  첫번째로 인앱결제에서 처리할 아이템을 설정하는 Manage Your Applications에 대해 정리해봅니다.  iTunes Connect에 로그인 하신 후 Manage Your Applications -> 인앱결제 테스트 할 App 선택 -> Manage In App Purchases를 클릭합니다.  Product 추가를 위해 Create New를 클릭합니다.  인앱결제 타입을 결정해야 합니다. 그런데 위 스샷과 같이 Free Subscription하나만 나와서 당황스럽더군요. 검색해보니 여러개 있는 것 같은데, 해결책은 Contracts, Tax, and Banking에서 Contract Type에 iOS Paid Applicatio...