반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

빌드하기 (아이폰) - 2

2011. 9. 20. 03:59 | Posted by 솔웅


반응형
아이폰 개발 프로그램은 팀당 100개의 디바이스를 등록할 수 있도록 한답니다.
디바이스를 등록하기 위해서는 Uniques Device Identification(UDID) 번호가 필요합니다.
이 번호는 Xcode와 iTunes 에서 구할 수 있습니다.

Xcode에서 구하기

- 아이폰이든 아이패드 등 디바이스를 맥 컴퓨터에 연결한다
- XCode - Window - Organizer 를 클릭한다.


- Organizer 왼쪽편에 있는 DIVICES-mobile 을 선택한다.
- Identifier 에 있는 번호를 복사해 둔다.

- Web Page의 Provisioning Portal 로 가서 Devices 를 클릭하고 Add Devices 버튼을 클릭한다.
- 디바이스 이름과 아까 복사해 둔 Identifier를 넣는다.


====> 이렇게 하면 디바이스가 등록이 됩니다.

나중에 여러분이 앱을 빌드하고 테스트하기 위해 디바이스에 install, Uninstall 할 때도 이 Organizer를 열어서 합니다.
그러면 Applications에 디바이스에 깔린 앱들이 나올테구요.
+를 눌러서 여러부들이 빌드한 앱 파일을 선택하시면 디바이스에 자동으로 인스톨 됩니다. (앱이름.app 파일. 여기서는 zip으로 압축할 필요 없습니다.)

*   App IDs 생성
Provisioning profiles를 얻기 위해서는 먼저 App ID를 생성해야 합니다.
아이폰에서 모든 애플리케이션은  App ID를 가지고 있어야 합니다.

App ID를 생성하려면 Web Provisioning Portal로 가서  App IDs를 클릭합니다.

그리고 Description을 씁니다.
App  ID로는 안드로이드에서 말하는 패키지명을 써 넣습니다.
혹시 자신이 개발하는 모든 애플리케이션을 빌드할 때 사용하시려면 끝에  .*를 넣으면 된다고 하네요.
물론 그 앞에 이름들은 다 같아야 하겠죠?

* 배포용 Provisioning Profile 만들기
지난시간에 한 키 등록 이번시간에 한 디바이스 등록 그리고 App IDs 생성 이렇게 다 완료 됐으면 그 다음 메뉴가 Provisioning 이네요.

Provisioning Profiles에는 세가지가 있습니다.
Ad Hoc, Development, Distribution 이 그건데요. 앱스토어에 올리려면 Distribution profile을 사용해야 합니다.

Distribution Provisioning Profile
iOS Provisioning Poral 웹 화면에서 왼쪽에 있는 Provisiioning을 클릭합니다.
Distribution Tab을 클릭합니다.


Destribution Method 는 App Store를 선택하시고
Profile Name에는 앱 이름을 그리고 App ID에는 아까 만든 App ID를 선택하세요.

Submit을 누르고 잠시 기다리신 후 Status가 Active 되면 Distribution Provisioning Profiles를 다운 받습니다.

다운받은 파일을 아래 폴더에 복사해 넣습니다.
/Users/(your user)/Library/MobileDevice/Provisioning Profiles/
Provisioning Profiles 폴더가 없으면 생성해서 넣습니다.

이제 Provisioning Profiles 등록은 다 됐구요.
앱을 빌드 해 보겠습니다.

* 코로나로 앱 빌드하기


프로비저닝 프로파일을 디스트리뷰션 버전으로 만들어서 세팅 해 놨으면 빌드하는 과정은 간단합니다.
해당 앱을 코로나 시뮬레이터로 불러옵니다.
File-Build-iOS 를 선택합니다.
앱 이름과 버전 그리고 Build for 를 선택하시고
Supported Device를 선택하세요.
그리고 Code Signing Identity를 아까 만들었던 배포용 프로비져닝 프로파일을 선택합니다.
Build 버튼을 누릅니다.

그러면 빌드가 됩니다.

이렇게 간단하게 빌드하기 위한 환경을 조성하려고 그 어려운 과정을 거쳐 왔네요.


완료되면 위와 같은 화면이 뜹니다.

반응형

빌드하기 (아이폰) -1

2011. 9. 20. 02:23 | Posted by 솔웅


반응형
아이폰 앱은 제가 개발해 본 적이 없어서 무지 복잡하게 느껴지네요.
많이 개발 해 봤던 안드로이드 쪽도 실수가 있었으니 아이폰쪽은 미리 충분히 빌드와 앱스토어 업로드 방법을 숙지하고 일을 하려고 합니다.

우선 아이폰 앱 빌드를 위해서는 이 웹사이트에 등록하는 거부터 시작 합니다.
http://developer.apple.com/programs/ios/

간략하게 오늘 할 토픽들을 정리하면
- 개발자 등록
- Keychain certificate
- Device 등록
- App IDs 획득
- Provisioning Profile
- 앱 빌드
- 디비이스에 인스톨 해서 테스트하기
- 앱 스토어에 앱 올리기

이 내용들을 공부해야 합니다.

우선  99불 내고 아이폰 개발자로 등록하지 않으신 분은 아래 웹 사이트로 가셔서 등록 하셔야 합니다.
http://developer.apple.com/devcenter/ios/index.action
(여기서 자세한 방법은 따로 설명 드리지 않겠습니다. 네이버나 구글 검색하시면 자세한 설명 있는 글들 찾을 수 있을거예요.
http://developer.apple.com/devcenter/ios/index.action
http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=74353&social=1
등등)

등록하고 난 후 developer.apple.com에 로그인을 하세요.


우측 상단에 있는 iOS Provisioning Portal 을 클릭해 보세요.


왼쪽에 있는 Certificates, Devices, App IDs, Provisioning, Distribution 이 앱 빌드하고 앱스토어에 등록하는데 중요한 메뉴들 입니다.


그리고 Macintosh HD-Applications-Utilities-Keychain Access.pp 도 중요합니다.

이제 웹사이트에서 인증서 받아서 키체인에 설치를 해야 합니다.
WWDR, 개발자용 인증서, 배포용 인증서를 키체인에 설치 하겠습니다.

제가 사용하는 맥에는 아래와 같이 모두 설치 돼 있습니다.


이걸 다 지우고 새로 깔기도 그렇고.. 회사 컴퓨터라서 맘대로 할 수도 없고 해서..
맥부기의 문성욱님이 설명하신 이미지와 내용을 좀 빌리겠습니다.
직접 보시려면 아래 싸이트에서 보실 수 있습니다.
http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8953&

---- 아래 문성욱님 글 ------

개발자 포탈 사이트에서 Certificates 항목에 들어갑니다.


아직 등록된 인증서가 없습니다

하단에 WWDR인증서를 다운받는 링크로 다운받습니다

* 받은 파일은 다운로드 폴더에 저장됩니다

받은 인증서를 키체인에 끌어다 넣습니다
 
 


기본(WWDR) 인증서를 설치 했습니다


이번에는  개발자 포탈에 올릴 인증서 요청 파일을 만듭니다
키체인 메뉴에서 키체인 접근 -> 인증 지원 -> 인증 기관에서 인증서 요청...을 클릭합니다
영문일 경우: Keychain Access -> Certificate Assistant -> Request a Certificate From a Certificate Authority...

요청 부분을 디스크로 저장으로 선택하시고
자신이 키페어 정보 지정을 선택합니다

 
그리고 저장합니다

그리고 저장된 요청파일을 포탈에 올립니다

포탈의 인증서 관리에서 Request Certificate을 클릭합니다

하단에 파일 선택 버튼을 클릭해서 아까 만들어 둔 파일을 선택합니다

다음 오른쪽 하단의 Submit을 클릭합니다

등록 중이라고 나옵니다
등록중인 항목에 Approve을 클릭합니다


잠시 기다리다 페이지를 새로 고침하면 다음과 같이 뜹니다


여기까지 개발자용 인증서을 만들어 봤습니다

이번에는 배포용 인증서를 만들어 보겠습니다


포탈에서 Develoment탭 옆에 Distribution탭을 클릭합니다

이곳 또한 빈칸으로 되어 있습니다

위에서 했던 작업과 같이 Request Certificate을 클릭해서 아까 만들어둔 인증요청파일을 올리는 작업을 반복합니다 (요청파일을 다시 만들 필요 없습니다)




이제 개발용(Development)탭과 배포용(Distribution)탭에 각각 인증서가 만들어 졌습니다

각각의 탭에서 각각의 인증서를 Download를 클릭해서 다운받습니다


받은 두개의 인증서를 키체인에 넣습니다



인증서 작업이 끝났습니다.


다른 맥에서도 개발하실경우 (두대 이상으로 개발시) 요청파일 올리는 작업 없이 이미 만들어진 인증서와 WWDR인증서 이 세개만 받아서 넣어주면 됩니다.

 

개발 준비, 인증서 등록 추가분 (다른 맥에서 같이 개발) http://cafe.naver.com/mcbugi/10487

----------- 문성욱님 글 끝 -----

자 이제 필요한 키들을 받고 여러분 맥의 키체인에 이것을 등록하는 과정까지 했습니다.

오늘은 여기까지 하구요.

이제 여러분들이 개발한 앱을 디바이스에 테스트하기 위해  Xcode 에 디바이스를 등록하고 App IDs 받고 Provisioning files 처리하고 코로나에서 앱 빌드하고 이걸 앱 스토어에 올리는 과정을 다음 시간에 살펴 보겠습니다.

처음이라서 그런지 앱스토어까지 가는 길이 무지 험난해 보이네요.

그럼....
반응형

config.lua 파일과 build.lua 파일...

2011. 9. 19. 23:13 | Posted by 솔웅


반응형
제가 코로나로 만든 첫 앱인 Multi Ping Pong 이 안드로이드 마켓 업로드 과정에서 문제가 생겼습니다.
안드로이드 마켓에 올릴 때 바로 아래와 같은 메세지가 뜬건데요.


Androidmanifest.xml 파일에 버전코드가 안 돼 있다는 겁니다.
이건 빌드과정에서 코로나에서 자동으로해 주는 거거든요.

저는 코로나 매뉴얼에 나와 있는 대로 아래처럼 따라 했구요.


빌드과정에서 버전도 1로 해 줬고 config.lua 에도 시키는 대로 버전코드 제대로 넣어 줬구요.

Corona에 문의 메일을 보냈더니 바로 그날로 답변이 왔습니다.

Hello,

It looks like you are setting the versionCode correctly in the build.settings file so I'm not sure why you are getting the error. If you don't include the parameter in the file, Corona defaults to version "1".

아무 문제 없다고 하죠? 그런데 저기 build.settings 라는 단어가 눈에 팍 띄는거예요.
코로나에선 제가 저 위에 세팅을 cinfig.lua에만 한 줄 모르고 build.settings에 저렇게 코딩을 했으면 제대로 한 거라고 답변을 준거예요.

그래서 저 코드를 그대로 build.settings 파일을 만들어서 옮겨 놓고 빌드를 했습니다.
그리고 다시 안드로이드마켓에 업로드 시도...
결과는 성공적으로 업로드 됐습니다.

제가 config.lua파일과 build.settings 파일을 제대로 공부하지 않고 일은 진행하는 바람에 일정이 하루 차질을 빚었습니다.

이 기회에 이 두 파일에 대해서 확실하게 알고 넘어가야 겠네요.
(제가 이메일에 빌드하는 과정에 이 build.settings 파일은 자동으로 생성해 줬으면 좋겠다고 보냈어요. 어차피 빌드과정에서 Version을 넣도록 해 놨으면 자동으로 생성해 줘도 될 것 같아서...... 이게 반영이 될지는 모르겠지만요...)

이 부분에 대한 코로나 웹페이지에서의 설명은 아래 주소에 있습니다.
http://developer.anscamobile.com/content/configuring-projects

build.setting 은 빌드 프로세스에 대한 파일이고
config.lua는 컴파일 될 때 포함되서 런타임 때 엑세스 되는 파일입니다.

config.lua는 주로 해상도가 다른 디바이스에서 화면이 제대로 보이도록 해상도에 맞게 디스플레이 하도록 옵션을 주는 기능이 있습니다.
(자세한 내용은 http://blog.anscamobile.com/2010/11/content-scaling-made-easy/)
이 파일의 주요 키워드는 width,height,scale 이렇게 세가지가 있습니다.
앞에 두가지는 해상도의 가로 세로 픽셀 값들입니다.
scale은 4가지가 있는데 아래와 같습니다.

    * "none" - turns off dynamic content scaling
    * "letterbox" - uniformly scales up content as much as possible, while still showing all content on the screen. This is similar to watching a widescreen DVD on a non-widescreen TV set, except that you can use offstage content to fill the "bleed" areas rather than displaying black bars.
    * "zoomEven" - uniformly scales up content to fill the screen, while preserving aspect ratio. Some content may appear offscreen, if the new screen has a different aspect ratio
    * "zoomStretch" - non-uniformly scales up content to fill the screen. All content will remain onscreen, but it may be stretched vertically or horizontally.

참고로 아이폰, 안드로이드폰 공히 가장 낮은 해상도인 320X480 에 width,height를 맞춰놓고 letterbox,zoomEven,zoomStretch 등 해상도에 맞게 화면을 조절하는 옵션을 쓰면 모든 해상도에 적당한 화면이 적용 됩니다.

여기에 지정된 해상도는 코드 내에서 display.contentWidth 와 display.contentHeight 로 값을 얻을 수 있습니다.

여기에 각기 다른 해상도에서 화면의 이미지들에 대한 x,y 좌표에 대한 콘트롤을 하려면 config.lua 에서 xAlign,yAlign 키워드에 left,right,center 등의 값을 적용 시키면 됩니다.

예)
application =
{
        content =
        {
                width = 320,
                height = 480,
                scale = "letterbox",
                xAlign = "left",
                yAlign = "top"
        },
}

display.contentWidth, display.contentHeight 이외에 코딩상에서 접근할 수 있는 키워드는
display.viewableContentWidth,display.viewableContentHeight 이렇게 두가지가 더 있습니다.

첫번째는 이미 말씀드린대로 config.lua 에 설정한 width,height 값들을 가져올 것이고 두번째 것들은 upscaleing된 화면에서 실제 보이는 값을 가져올 것입니다.

display.screenOriginX,display.screenOriginY 이것도 있습니다. 이것은 현재 디바이스에서 좌우로 얼마나 거리가 떨어져 있는지에 대해 알 수 있게 해 줍니다.

아래 샘플을 보시면
application =
{
    content =
    {
        width = 320,
        height = 480,
        scale = "letterbox",
 
        imageSuffix =
        {
            ["@2"] = 2,
            ["@3"] = 3,
            ["-bar"] = 3.3,
            ["-foo"] = 4.5,
        },
    },
}

imageSuffix가 있는데요. 이건 다이나믹하게 이미지 크기를 설정할 때 사용 할 수 있습니다. 이 설정에 의하면 아래와 같이 이미지가 보일 겁니다.
myImage@2.png (200 X 200 픽셀)
myImage@3.png (300 X 300 픽셀)
myImage - bar.png (330 X 330 픽셀)
myImage - foo.png (450 X 450 픽셀)

이 밖에 frame Rate (fps), 안티 알리아싱 등이 더 있습니다.

이번엔 build.settings에 대해 알아 보겠습니다.
이 파일은 빌드 과정에서 적용되는 사항들에 대해 세팅하는 파일입니다.

settings =
{
        orientation =
        {
                default = "portrait",
        },
 
        iphone =
        {
                plist =
                {
                        UIRequiredDeviceCapabilities = "magnetometer",
                        UIPrerenderedIcon = true,
                },
        },
 
        build =
        {
                custom = "a1234",
        }
}

이와 같이 portrait나 landscape 같은 orientation 도 여기서 지정해 줍니다.
settings =
{
    orientation =
    {
        default = "portrait",
        supported =
        {
            "portrait", "portraitUpsideDown", "landscapeRight", "landscapeLeft"
        }
    },
   
   
    iphone =
    {
        plist =
        {
            UIInterfaceOrientation = "UIInterfaceOrientationLandscapeRight",
 
            UISupportedInterfaceOrientations =
            {
                "UIInterfaceOrientationLandscapeLeft",
                "UIInterfaceOrientationLandscapeRight"
            },
           
            UIApplicationExitsOnSuspend = true,
            UIStatusBarHidden = true,
            UIPrerenderedIcon = true
           
        }
    }
}
 
 
settings.iphone.plist["UIInterfaceOrientation~ipad"] = "UIInterfaceOrientationPortrait"
settings.iphone.plist["UISupportedInterfaceOrientations~ipad"] =
{
    "UIInterfaceOrientationPortrait",
    "UIInterfaceOrientationPortraitUpsideDown"
}

또한 위와 같이 스테이스바나 세세한 orientation 같은것도 설정 가능하네요. 또 디바이스 별로도 설정할 수 있구요.

또 orientation에 따라 사용되는 이미지들도 설정하게 됩니다.
안드로이드에서는 주로 Manifest.xml 파일에 설정되는 값들입니다.
아이폰쪽은 한번도 안 해 봐서 제가 비교를 할 수가 없네요.

안드로이드에서는 또한 중요한게 아래처럼 버전코드와 퍼미션 설정 하는 겁니다.
settings =
{
        android =
        {
                versionCode = "3"
        },
   
        androidPermissions =
        {
                "android.permission.ACCESS_FINE_LOCATION",
                "android.permission.INTERNET"
        },
   
        orientation =
        {
                default = "landscapeRight"
        },
}

이러하 것들을 build.settings에 설정 하셔야 합니다.

이걸 공부 안해서 첫 코로나 앱 안드로이드 마켓 업로드에서는 약간 헤맸네요.
아마 오늘 안드로이드 마켓 업로드는 끝날 것 같구요.
이제 아이폰 앱스토어에 업로드 할 겁니다.
아마 또 헤매는 부분이 있을 텐데요.

저도 다음에 두번 헤매지 않고 또 이 글을 읽으시는 분들도 그런 시간 낭비를 줄일 수 있도록 그런 내용 들을 잘 정리 하겠습니다.

그럼 다음에 뵈요...
반응형

'Corona SDK > Corona Doc' 카테고리의 다른 글

Physics Joints 예제 코드  (0) 2011.09.29
Physics Joint  (0) 2011.09.28
Physics Bodies 코딩 하기  (5) 2011.09.28
Physics Bodies  (0) 2011.09.27
Physics의 Collision Event  (0) 2011.09.27
Corona SDK Physics API  (1) 2011.09.22
정말 매력있는 코로나의 Physics Engine  (2) 2011.09.21
코로나 프로그래밍 기본 규칙...  (0) 2011.09.15
폰트 및 config.lua 파일에 대하여.  (10) 2011.09.14
처음으로 코딩 해 보기  (2) 2011.09.13