라벨이 [Mobile]인 게시물 표시

[iOS 개발팁] 빌드 환경 분리하기

이미지
Xcode에서는 Plist 파일을 이용하여 빌드 환경을 분리하여 관리할 수 있습니다. 프로젝트를 진행하다보면, 개발환경, 운영환경에 맞게 App를 빌드하여 테스트를 진행할 경우 들이 있습니다. 프로젝트를 처음 생성하면, 아래와 같이 info.plist 파일이 생성이 됩니다. 프로젝트에 대한 설정값들을 관리 할수 있는 파일인데요. 프로젝트 파일을 선택하기 되면, 아래와 같이 현재 연결된 타겟으로 정보를 입력할수 있습니다. Bundle identifier 에 번들명을 입력하게 되어있습니다. 여기에 TARGETS를 추가하면, 다른 번들을 추가 할수 있습니다. Duplicate를 통해 타겟을 복사합니다. 복사한 뒤 dev 라고 이름을 변경합니다. 그후 "Edit Sceme.." 선택하고,  하단에 "Manage Scemes.." 를 선택합니다. 기존의 new가 있고, 새로운 schemes이 추가되어있습니다. 이스키마도 dev로 변경합니다. 변경 후에는 상단 프로젝트에서 스키마를 선택할수 있게 됩니다. 그다음 추가된 plist파일을 이름을 변경하고, Build Settings에서 변경된 이름을 넣어줍니다. 여기까지가 타겟을 추가하고, 스키마, plist파일을 연결해주는 세팅입니다. 이제는 각종 path 및 이름들을 설정해주면됩니다. 각종 API 패스들, 프로젝트 이름를 따로 설정하고, 빌드할때, 타겟만 변경하면 되므로, 매번, 패스들을 변경할필요가 없어서, 안정적인 빌드를 할수 있습니다. 아이프렌즈펫에서는 운영버전과 개발버전에 대한 경로들을 plist에서 정의해두고, 사용하고있습니다. 여러분들의 프로젝트도, 빌드 환경을 분리해서 안정적으로 운영해보세요 운영버전 개발버전

[Android] 데이터바인딩으로 UI 효율적으로 활용 하기

안드로이드 개발 중 xml의 UI와 객체의 연결은 항상 귀찮은 작업으로 생각 됩니다.  이런 불편한 점을 해소하고자 버터나이프 같은 외부 라이브러리 사용하는 개발자들도 많았고 저처럼 그냥 좀 귀찮은 걸 감안하고 그냥 사용하는 개발자들도 있었을 것이라 생각합니다. 하지만 UI 노가다를 줄일수 있는 좋은 라이브러리가 있습니다. 바로 안드로이드에서 제공하는 데이터 바인딩 라이브러리 입니다. Android Developer : https://developer.android.com/topic/libraries/data-binding/index.html#studio_support 데이터 바인딩 라이브러리 환경 * Android 2.1(API7) 이상 * Gradle 1.5.0-alpha1 이상 기존 방식 //xml <TextView  android:id="@+id/text1"  android:layout_centerinparent="true"  android:layout_height="wrap_content"  android:layout_width="wrap_content"/> //activity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_data_binding); TextView text1 = (TextView) findViewById(R.id.text1); text1.setText("findViewById..."); } 기존에는 TextVie

[iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 2부 (카메라)

이미지
[iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 1부 (cocospods) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 2부 (카메라) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 3부 (필터) 저번시간에 이어, 이번엔 카메라 기능을 추가해보도록 하겠습니다. 깃허브로 다운받은 GPUImage 라이브러리로 스틸 사진을 캡쳐할 수 있는 카메라를 만들어보겠습니다. 먼저, 뷰에 카메라 영역을 만듭니다. 기본뷰를  GPUImageView 로 상속을 받습니다. 추후 촬영버튼 및 필터를 선택할 수 있는 뷰영역을 제외하고 정사각형의 뷰를 올리고, 클래스 명을  GPUImageView으로 적어줍니다.   그리고 나서, UIButton으로 촬영 버튼을 만들어줍니다. 스토리보드의 뷰 컨트롤러에 올린  GPUImageView 객체와  UIButton 객체를 해당 Class와  IBOutlet으로 연결 해시켜 줍니다.  GPUImageStillCamera 클래스를 사용하는 간단합니다. 헤더에  GPUImageStillCamera 클래스를 추가하고  아래의 코드를 삽입하면, 클래스를 사용 할수 있습니다. initCamera 에서 카메라를 초기화하고 시작합니다. ====================================================================================================================================== -( void )initCamera{     // 카메라 생성 및 세팅     m_stillCamera = [[ GPUImageStillCamera alloc ] init ];     m_stillCamera . outputImageOrientation = UIInterfaceOrientationPortrait ;          // 필터 생성 및 카메라에 필터 추가  

안드로이드에서 당겨서 새로고침(SwipeRefreshLayout) 쉽게 구현하기

앱을 개발 하다보면 필수 기능중에 하나가 보고 있는 리스트나 상세 페이지등을 새로고침 하는 것 입니다. 몇년 전 까지만 하더라도 새로 고침 기능이라고 하면 아이폰 처럼 뷰를 당기면 공간이 벌어지면서 새로고침 하는 방식을 많이 사용 했습니다.(여전히 이 방법을 사용하는 앱은 많습니다.) 해당 새로고침을 기능을 제공 하려면 개발가 하나하나 구현 해야해서 쉽지 않은 기능 중 하나였습니다. 하지만 지금은 android 레이아웃중 SwipeRefreshLayout을 제공하여 레이아웃만 추가한다면 별다른 구현 없이도 위에서 아래로 내려오는 새로고침 기능을 사용 할수 있게 되었습니다. SwipeRefreshLayout을 간단하게 구현하는 샘플 코드를 작성해 보겠습니다. 1단계 : 레이아웃 새로고침이 될 뷰를 SwipeRefreshLayout으로 자식뷰로 만듭니다.       <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe_refresh"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView"></WebView> </android.support.v4.widget.SwipeRefreshLayout> 2단계 : 새로고침 이벤트 해당 뷰 영역을 위에서 아래로 당기면

[iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 1부(cocospods)

이미지
안녕하세요. 플랫폼사업팀에서 ios개발 업무를 담당하고 있는 남산타워입니다. 첫 게시글은 어떤글이 좋을까 고민하다가, 강좌를 생각하게 되었습니다. ios 개발자라면, 모두들 오픈소스를 많이 이용하실꺼같은데요. 오픈소스를 이용해서, 쉽게 앱을 제작하는 하는 강좌를 써보려 합니다. 요즘 앱 순위중에 가장 상위에 있는 앱이 카메라 앱인데요. 여러 필터들을 이용해서, 예쁜 사진을 만들 수 있습니다. 엄청 어려운 부분이지만, 오픈소스를 이용하면, 간단하게 만들 수 있습니다. 일단 강좌는 총 3부로 구성해보았습니다. [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 1부 (cocospods) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 2부 (카메라) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 3부 (필터) 일단 첫 시간에는 CocosPods를 파헤쳐보겠습니다. CocosPods는 ios 개발자라면, 한번은 들어보셨을꺼예요. cocosPods는 Objective-C 코코아 프로젝트의 종속적 관리자입니다. 쉽게 말해, 오픈소스나 라이브러리를 관리할 수 있게 해주는 도구 인데요. xCode에서 플러그인를 설치하고 이용했으면 좋았으나, 별도의 프로그램입니다. 이 도구를 만들어준 개발팀에 감사해야합니다. 자세한 사항은 아래의 cocosPods 사이트에 접속해서 상세히 알아보시면 될꺼같습니다. https://cocoapods.org/ 그럼 시작하겠습니다. 1. 프로젝트 생성 2. CocosPods 다운로드 3. CocosPods 설치 4. CocosPods 설정 및 라이브러리 설치 1. 프로젝트 생성 프로젝트를 생성합니다. 2. CocosPods 다운로드 터미널에서 cocosPods를 다운받습니다. 맥의 파인더를 열고, 터미널을 실행합니다. ( 파인더/응용프로그램/유틸리티) 터미널이 실행 되면, 다운로드를 받습니다. 명

android 플랫폼 버전 분포 (2017.7.6 기준)

이미지
안드로이드 프로젝트 시작 초기에 고민하는 내용 중 한가지가 플랫폼 버전을 어디서 부터 지원 할것 이냐 하는 문제 인 것 같습니다. 지원 하는 버전에 따라 개발시에 신경 써야 할 부분이 달라지는 만큼 중요한 문제라고 생각 하는데요. 그래서 많이 참고 하는 정보가 android developer 사이트에서 제공해주는 플랫폼 버전 분포도 입니다. 대시보드에서 제공해주는 플랫폼 버전 정보를 보면 너무 낮은 비중을 차지 하는 버전에 대해서는 과감히 포기 할수 있게 하는 객관적인 지표가 되어 주는 것 같습니다. 현재(2017.7.6 기준) 까지의 분포도를 보면서 이야기를 계속 하겠습니다. 출처 : https://developer.android.com/about/dashboards/index.html#Platform 가장 최신 버전인 누가의 점유율이 총 11.5%로 10%가 넘은 것이 가장 눈에 띄는 점이라고 할 수 있을 것 같습니다. 올 1월 기준으로 약 1%로 밖에 되지 않던 누가의 점유율은 반년정도가 지난 시점에 10%가 넘어서 빠른 속도로 증가 하고 있습니다. 올 상반기에 삼성, 엘지등 제조사들의 최신 단말들이 누가로 출시된 부분과 기존 단말의 업데이트 지원이 큰 상승폭의 이유라고 할 수 있겠습니다. 가장 큰 점유율을 차지하고 있는 것은 마시멜로우 입니다. 어쩌면 기존의 안드로이드 플랫폼 버전 분포도를 생각하면 당연한 일이라고 생각이 됩니다. 아이폰의 경우 신규 버전이 나온 후 일정 기간이 지나고 나면 최신 버전의 점유율이 굉장히 높습니다. 하지만 안드로이드는 플랫폼 버전 업데이트가 제조사에 의해 결정 되는 만큼 업데이트보다는 신규 단말의 출시로 인한 최신 버전의 점유율이 올라 가는 비중이 높다고 생각이 됩니다. 이런 이유로 인하여 안드로이드는 항상 최신 버전이 출시되고 약 1년 가까이 시간이 흐르면 이전 버전의 점유율이 가장 높은 것이 대부분 이었기 때문에 마시멜로우의 점유율이 높은 것은 당연한일 이라 생각이 됩니다. 그 다음으로 높