<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on James's Devlog</title><link>https://coolishbee.github.io/devlog/posts/</link><description>Recent content in Posts on James's Devlog</description><generator>Hugo -- gohugo.io</generator><language>ko-KR</language><lastBuildDate>Tue, 13 Oct 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://coolishbee.github.io/devlog/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Unity Editor Google 인증을 위한 Go Cloud Functions 개발</title><link>https://coolishbee.github.io/devlog/posts/go/unity-editor-google-oauth-server/</link><pubDate>Tue, 13 Oct 2026 09:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/go/unity-editor-google-oauth-server/</guid><description>Unity Editor에서 Google 서비스 접근에 필요한 OAuth 토큰을 발급·갱신하고, 데이터 테이블과 로컬라이제이션 도구에서 사용할 수 있도록 구성한 인증 도구 개발 기록.</description></item><item><title>Unity Sprite Atlas 이해와 리소스 구성</title><link>https://coolishbee.github.io/devlog/posts/unity/unity-sprite-atlas-resource-guide/</link><pubDate>Mon, 28 Sep 2026 19:18:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/unity/unity-sprite-atlas-resource-guide/</guid><description>Sprite Atlas의 패킹 원리와 성능상 주의점을 살펴보고, 화면과 로딩 단위를 기준으로 UI 리소스의 폴더 구조와 관리 규칙을 정리한다.</description></item><item><title>DocFX를 이용한 Unity 패키지 문서 작성과 배포 자동화</title><link>https://coolishbee.github.io/devlog/posts/unity/docfx-sdk-documentation-automation/</link><pubDate>Mon, 28 Sep 2026 17:55:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/unity/docfx-sdk-documentation-automation/</guid><description>기존 Package Generator에 DocFX 문서 생성 기능을 추가하고, 목차 생성부터 로컬 미리보기와 배포 연결까지 문서 작업을 자동화한 과정을 정리합니다.</description></item><item><title>Unity에서 FCM 사용하기: Android·iOS 연동과 트러블슈팅</title><link>https://coolishbee.github.io/devlog/posts/unity/unity-fcm-integration/</link><pubDate>Mon, 07 Sep 2026 00:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/unity/unity-fcm-integration/</guid><description>사내 서버 프레임워크 Perbase에 토픽 발송을 추가하며 Unity의 FCM 설정, Tauri 테스트 툴 개발, 서버 연동과 푸시 수신을 검증한 기록.</description></item><item><title>Go Crawler Notification: 웹 콘텐츠 변경 감지 및 알림 도구 개발기</title><link>https://coolishbee.github.io/devlog/posts/go/go-crawler-notification/</link><pubDate>Fri, 04 Sep 2026 14:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/go/go-crawler-notification/</guid><description>여러 SDK의 릴리즈 노트를 자동으로 확인하고 Slack으로 업데이트를 받아보기 위해 만든 도구. Huginn을 Go로 옮긴 클론을 참고해 AI 에이전트로 개발한 과정과 주요 기능을 소개한다.</description></item><item><title>Android 16KB 페이지 크기 대응</title><link>https://coolishbee.github.io/devlog/posts/unity/android-16kb-page-size/</link><pubDate>Mon, 31 Aug 2026 23:11:06 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/unity/android-16kb-page-size/</guid><description>유니티 네이티브 플러그인의 ELF 정렬을 확인하고 NDK 빌드 설정을 수정해 16KB 페이지를 지원한 과정을 기록합니다.</description></item><item><title>Unity 딥링크 문제 해결: Jenkins 빌드에서 Universal Link가 실패한 원인</title><link>https://coolishbee.github.io/devlog/posts/unity/unity-deeplink/</link><pubDate>Sat, 29 Aug 2026 17:07:08 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/unity/unity-deeplink/</guid><description>로컬 빌드에서는 열리던 유니버설 링크가 배포본에서 실패한 원인을 최종 앱 서명과 재서명 로그로 추적했습니다.</description></item><item><title>iOS 키체인 접근 그룹 변경으로 UUID가 바뀐 문제</title><link>https://coolishbee.github.io/devlog/posts/ios/ios-keychain-access-group-uuid/</link><pubDate>Fri, 28 Aug 2026 16:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/ios/ios-keychain-access-group-uuid/</guid><description>빌드 파이프라인 변경 후 기존 UUID를 읽지 못했던 원인과 키체인 접근 그룹 마이그레이션, 네이티브 코드 수정 과정을 정리했습니다.</description></item><item><title>Gamepub SDK</title><link>https://coolishbee.github.io/devlog/posts/project/gamepub-sdk/</link><pubDate>Fri, 12 May 2023 17:48:48 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/gamepub-sdk/</guid><description>유니티와 안드로이드·iOS 네이티브를 연결하는 공용 SDK의 인증, 결제, 푸시와 배포 구조를 정리합니다.</description></item><item><title>Grafana와 Loki로 장애 로그 모니터링 구축</title><link>https://coolishbee.github.io/devlog/posts/project/grafana-loki/</link><pubDate>Fri, 12 May 2023 17:48:48 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/grafana-loki/</guid><description>여러 서버의 로그를 한곳에 모아 서비스와 시간, 키워드로 검색하는 모니터링 환경을 구성했습니다.</description></item><item><title>게임 서비스를 위한 푸시 서버 개발기</title><link>https://coolishbee.github.io/devlog/posts/project/push-server/</link><pubDate>Fri, 12 May 2023 17:48:48 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/push-server/</guid><description>대상별 예약 발송과 푸시 지연 개선을 목표로 설계한 서버의 구조, 개발 과정과 프로젝트 중단까지 기록합니다.</description></item><item><title>광고 수익 보고서 자동화</title><link>https://coolishbee.github.io/devlog/posts/project/ad-report-admin/</link><pubDate>Fri, 03 Mar 2023 16:59:46 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/ad-report-admin/</guid><description>여러 광고 매체의 수익 데이터를 수집하고 기간별 조회와 내려받기를 제공하는 사내 관리 도구를 개발했습니다.</description></item><item><title>마케팅 데이터 수집 자동화</title><link>https://coolishbee.github.io/devlog/posts/project/adjust-data-admin/</link><pubDate>Fri, 03 Mar 2023 16:59:46 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/adjust-data-admin/</guid><description>어드저스트의 원시 데이터를 정제·저장하고 마케팅 부서가 직접 조회하고 추출할 수 있는 관리 도구를 구축했습니다.</description></item><item><title>Go로 구축한 SDK API 서버</title><link>https://coolishbee.github.io/devlog/posts/project/sdk-api-server/</link><pubDate>Thu, 02 Mar 2023 19:02:41 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/sdk-api-server/</guid><description>게임 공통 API 서버의 기술 선정, 데이터베이스 구성과 빌드·배포 과정에서 담당한 역할을 기록합니다.</description></item><item><title>acra 사용법</title><link>https://coolishbee.github.io/devlog/posts/android/acra-usage/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/acra-usage/</guid><description>&lt;p&gt;런타임 방식으로써 크래시발생시 acra http API 를 사용하는 방법 가이드.&lt;/p&gt;
&lt;h2 id="테스트-환경"&gt;테스트 환경&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;com.android.tools.build:gradle:4.0.1&lt;/li&gt;
&lt;li&gt;ACRA Version 5.7.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="제공되는-기능"&gt;제공되는 기능&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Http: 크래시리포트를 rest api 로 송신.&lt;/li&gt;
&lt;li&gt;Email: 이메일주소로 크래시리포트 발송.&lt;/li&gt;
&lt;li&gt;Dialog: 크래시 발생시 다이얼로그 이벤트.&lt;/li&gt;
&lt;li&gt;Notification: 크래시 발생시 푸쉬알람.&lt;/li&gt;
&lt;li&gt;Toast: 크래시 발생시 토스트 메시지.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="설정"&gt;설정&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;컴파일 방식: annotation 을 이용하여 미리 설정정보를 셋팅하는 방식이다.(AndroidManifest.xml 필수)&lt;/li&gt;
&lt;li&gt;런타임 방식: 모든 설정정보는 API 소스코드로 작성하는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MainActivity&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;extends&lt;/span&gt; AppCompatActivity {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;protected&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;onCreate&lt;/span&gt;(Bundle savedInstanceState) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;super&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;onCreate&lt;/span&gt;(savedInstanceState);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; setContentView(R.&lt;span style="color:#a6e22e"&gt;layout&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;activity_main&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Log.&lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;MainActivity&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;onCreate&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CoreConfigurationBuilder builder &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; CoreConfigurationBuilder(&lt;span style="color:#66d9ef"&gt;this&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; builder.&lt;span style="color:#a6e22e"&gt;setBuildConfigClass&lt;/span&gt;(BuildConfig.&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;setReportFormat&lt;/span&gt;(StringFormat.&lt;span style="color:#a6e22e"&gt;JSON&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; builder.&lt;span style="color:#a6e22e"&gt;getPluginConfigurationBuilder&lt;/span&gt;(HttpSenderConfigurationBuilder.&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setUri&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;http://192.168.12.10:55000/send&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setHttpMethod&lt;/span&gt;(HttpSender.&lt;span style="color:#a6e22e"&gt;Method&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;POST&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setBasicAuthLogin&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;james&amp;#34;&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//backend htpasswd 설정필요&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setBasicAuthPassword&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;1234&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setEnabled&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ACRA.&lt;span style="color:#a6e22e"&gt;DEV_LOGGING&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ACRA.&lt;span style="color:#a6e22e"&gt;init&lt;/span&gt;(getApplication(), builder);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;throw&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; NullPointerException();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="문서"&gt;문서&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra" target="_blank" rel="noopener"&gt;ACRA/acra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra/wiki" target="_blank" rel="noopener"&gt;API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra/wiki/Examples" target="_blank" rel="noopener"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="acra-go-사용법"&gt;acra-go 사용법&lt;/h1&gt;
&lt;p&gt;안드로이드 ACRA 을 위한 백엔드 서버.&lt;/p&gt;</description></item><item><title>Android SDK Jcenter 배포 기록</title><link>https://coolishbee.github.io/devlog/posts/android/jcenter/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/jcenter/</guid><description>제이센터를 사용하던 당시 안드로이드 라이브러리 배포와 저장소 연동 과정을 기록합니다.</description></item><item><title>Android SDK Maven 배포 기록</title><link>https://coolishbee.github.io/devlog/posts/android/maven-deploy/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/maven-deploy/</guid><description>제이센터에서 메이븐으로 이전하며 진행한 계정 준비, 서명과 배포 스크립트 구성을 정리합니다.</description></item><item><title>Cocoapod 으로 소스 공개(Public)용으로 프레임워크 배포</title><link>https://coolishbee.github.io/devlog/posts/ios/cocoapods-public/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/ios/cocoapods-public/</guid><description>&lt;h3 id="podspec-파일-생성-및-편집하기"&gt;PodSpec 파일 생성 및 편집하기&lt;/h3&gt;
&lt;p&gt;spec 파일만 따로 만드는 방법이 있다. 사실 이 파일만 있다면 배포가 가능하다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ pod spec create pod_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;.podspec 이 로컬에 생성 될 것이다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Pod&lt;/span&gt;&lt;span style="color:#f92672"&gt;::&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;Spec&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;new &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt;s&lt;span style="color:#f92672"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;git-public-pod-public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;version &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;0.1.5&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;summary &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;The SDK for iOS Swift provides a modern way of implementing APIs.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;description &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;-DESC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;Developed&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Swift&lt;/span&gt;, the &lt;span style="color:#66d9ef"&gt;SDK&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; iOS &lt;span style="color:#66d9ef"&gt;Swift&lt;/span&gt; provides a modern way of implementing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;LINE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;APIs&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;The&lt;/span&gt; features included &lt;span style="color:#66d9ef"&gt;in&lt;/span&gt; this &lt;span style="color:#66d9ef"&gt;SDK&lt;/span&gt; will help you develop an iOS app with
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; engaging &lt;span style="color:#f92672"&gt;and&lt;/span&gt; personalized user experience&lt;span style="color:#f92672"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;DESC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;homepage &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://github.com/james-chun-dev/git-public-pod-public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;license &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Apache License, Version 2.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;author &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;James&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;platform &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;:ios&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;13.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;module_name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;SDK1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;source &lt;span style="color:#f92672"&gt;=&lt;/span&gt; { &lt;span style="color:#e6db74"&gt;:git&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://github.com/james-chun-dev/git-public-pod-public.git&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;:tag&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;#{&lt;/span&gt;s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;version&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;source_files &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;SDK1/SDK1/SDK1.h&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;더 많은 정보를 원한다면 cocoapods 공식사이트 문서 참고.&lt;/p&gt;</description></item><item><title>Cocoapod 으로 소스 비공개(private)용으로 프레임워크 배포</title><link>https://coolishbee.github.io/devlog/posts/ios/cocoapods-private/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/ios/cocoapods-private/</guid><description>&lt;h3 id="git-repo-만들기"&gt;Git repo 만들기&lt;/h3&gt;
&lt;p&gt;git 주소가 2개가 필요하다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git lib repo (라이브러리 프로젝트)&lt;/li&gt;
&lt;li&gt;git specs repo (public 에서 사용한 cocoapod repo 역할을 할 git spec파일 저장소)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;우선 라이브러리 git repo 가 있다는 전제하에 설명한다. 물론 podspec 파일도 셋팅되어있어야 한다.&lt;/p&gt;
&lt;p&gt;.podspec 파일을 편집해주고 파일 유효성 검사. 이건 공개용과 동일하다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ pod spec lint --verbose specfilename.podspec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;빈 레퍼지토리 &lt;a href="https://github.com/james-chun-dev/specs.git" target="_blank" rel="noopener"&gt;https://github.com/james-chun-dev/specs.git&lt;/a&gt; 하나를 private 으로 만들었다.&lt;/p&gt;
&lt;p&gt;그리고 pod repo 에 add 해준다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ pod repo add git-private-pod-private https://github.com/james-chun-dev/specs.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/cocoapods-private/images/104162444-f6792100-5437-11eb-8e9d-20f152268d67.png" alt="repo dir"&gt;&lt;/p&gt;</description></item><item><title>fastlane과 Jenkins로 SDK 배포 자동화</title><link>https://coolishbee.github.io/devlog/posts/project/jenkins-sdk-build-deploy/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/jenkins-sdk-build-deploy/</guid><description>모바일 SDK와 유니티 데모 앱의 반복적인 빌드·배포를 자동화한 과정을 정리합니다.</description></item><item><title>Jenkins와 Python으로 게임 운영 자동화</title><link>https://coolishbee.github.io/devlog/posts/project/jenkins-python/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/project/jenkins-python/</guid><description>이미지 배너 교체와 게임 서버 점검을 예약 실행하고 결과를 슬랙으로 알리는 운영 자동화를 구현했습니다.</description></item><item><title>라이브러리 생성</title><link>https://coolishbee.github.io/devlog/posts/android/create-library/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/create-library/</guid><description>&lt;h2 id="앱을-포함한-라이브러리-프로젝트-생성"&gt;앱을 포함한 라이브러리 프로젝트 생성&lt;/h2&gt;
&lt;p&gt;프로젝트내에서 새 라이브러리 모듈 생성방식.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;File &amp;gt; New &amp;gt; New Project&lt;/strong&gt;을 클릭합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empty Activity Next &amp;gt; 설정하고 Finish&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File &amp;gt; New &amp;gt; New Module&lt;/strong&gt;을 클릭합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create New Module&lt;/strong&gt; 창이 표시되면 &lt;strong&gt;Android Library&lt;/strong&gt;, &lt;strong&gt;Next&lt;/strong&gt;를 차례로 클릭합니다.(AAR 라이브러리 기준)&lt;/li&gt;
&lt;li&gt;라이브러리에 이름을 지정하고 라이브러리의 코드를 위한 최소 SDK 버전을 선택한 후 &lt;strong&gt;Finish&lt;/strong&gt;를 클릭합니다.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>앱 모듈을 라이브러리 모듈로 변환</title><link>https://coolishbee.github.io/devlog/posts/android/only-library/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/only-library/</guid><description>&lt;p&gt;앱없이 라이브러리 모듈만 포함한 프로젝트 생성방식.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; New &amp;gt; New Project&lt;/strong&gt;을 클릭합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;No Activity Next &amp;gt; 설정하고 Finish&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Module: app) 의 &lt;code&gt;build.gradle&lt;/code&gt; 파일을 엽니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;applicationId&lt;/code&gt;를 지정하는 줄을 삭제합니다. Android 앱 모듈에서만 지정할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apply plugin: &lt;span style="color:#e6db74"&gt;&amp;#39;com.android.application&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;다음과 같이 변경합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apply plugin: &lt;span style="color:#e6db74"&gt;&amp;#39;com.android.library&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;파일을 저장하고 &lt;strong&gt;File &amp;gt; Sync Project with Gradle Files&lt;/strong&gt;를 클릭합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;app폴더안에 libs, src, build.gradle 파일들을 상위폴더로 이동합니다. 그리고 app폴더는 삭제합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/android/only-library/images/103523136-c7563300-4ebe-11eb-9ec6-283d02558427.png" alt="app folder"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/android/only-library/images/103523294-fcfb1c00-4ebe-11eb-9ede-894bfd55cb9f.png" alt="folder delete"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;settings.gradle 안에 내용을 지워줍니다. 파일을 삭제해도 상관없음&lt;/p&gt;</description></item><item><title>앱을 포함한 라이브러리 프로젝트 생성</title><link>https://coolishbee.github.io/devlog/posts/ios/app-with-framework/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/ios/app-with-framework/</guid><description>&lt;p&gt;Workspace 를 생성하여 라이브러리와 앱 프로젝트를 생성하는 방식.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;우선 빈폴더를 만들고 프로젝트 이름을 정합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/app-with-framework/images/103735958-841cd100-5032-11eb-86c1-08ab8974be70.png" alt="newFolder"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;File &amp;gt; New &amp;gt; Workspace&lt;/strong&gt;&amp;hellip;을 클릭합니다. Workspace 이름을 지정하고 &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/app-with-framework/images/103735983-8e3ecf80-5032-11eb-801c-1d589a84092c.png" alt="workspace save"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**File &amp;gt; New &amp;gt; Project&amp;hellip;**을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/app-with-framework/images/103736137-fdb4bf00-5032-11eb-9170-a1e3f849b57c.png" alt="newProject"&gt;&lt;/p&gt;
&lt;p&gt;먼저 앱 프로젝트를 생성하겠습니다.(순서는 상관없음)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/app-with-framework/images/103736419-90edf480-5033-11eb-8bb6-66d399bc53e7.png" alt="newapp"&gt;&lt;/p&gt;
&lt;p&gt;Product Name 을 정하고 Interface, Life Cycle, Language 각자 선호도에 맞게 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coolishbee.github.io/devlog/posts/ios/app-with-framework/images/103736439-9b0ff300-5033-11eb-8573-d34a0f73f319.png" alt="create"&gt;&lt;/p&gt;
&lt;p&gt;Add to, Group 모두 타겟을 처음 만든 Workspace 를 선택해줍니다.(Framework 생성도 똑같음)&lt;/p&gt;
&lt;p&gt;Framework 도 동일하게 진행하게 되면 프로젝트 폴더구조는 다음과 같습니다.&lt;/p&gt;</description></item></channel></rss>