세상사는 이야기 / 도움이 되었다면 배너 클릭 부탁드려요~ →→→

2026년 5월 29일 금요일

Stable Diffusion WebUI 완벽 한글화 가이드

스테이블 디퓨전(Stable Diffusion) WebUI를 처음 설치하면 모든 메뉴가 영어로 되어 있어 사용하기가 조금 막막할 수 있습니다. 하지만 확장 기능(Extensions)을 통해 클릭 몇 번만으로 완벽한 한글 패치를 적용할 수 있습니다.

특히 많은 분들이 확장 기능 탭에서 한글 패치를 검색해도 나오지 않아 당황하시는데, '숨김 해제'라는 아주 간단한 팁 하나면 1분 만에 해결할 수 있습니다. 그 완벽한 방법을 알기 쉽게 정리해 드립니다!


🚨 주의: 검색해도 'ko_KR'이 안 나오는 이유!

WebUI는 확장 기능 목록이 너무 길어지는 것을 막기 위해, 기본적으로 언어 번역(localization) 관련 기능들을 검색 목록에서 숨기도록 설정되어 있습니다. 따라서 이 숨김 설정을 먼저 풀어주는 것이 핵심입니다!


1단계: 한글 패치 숨김 해제 및 설치하기

  1. WebUI 화면 상단의 [Extensions] 탭을 클릭합니다.
  2. 바로 아래에 있는 [Available] 하위 탭을 선택합니다.
  3. 화면의 주황색 'Load from:' 버튼 바로 위에 있는 Hide extensions with tags: 항목을 찾습니다.
  4. 옆에 있는 여러 체크박스 중 localization이라고 적힌 체크박스를 클릭해서 체크를 해제(빈칸) 해줍니다. (★가장 중요한 핵심 단계)
  5. 이제 주황색 [Load from:] 버튼을 클릭합니다.
  6. 버튼 아래에 검색창(Search)이 나타나면 ko_KR을 입력합니다.
  7. 목록에 ko_KR Localization (또는 a1111-sd-webui-loc-ko_KR)이 나타나면 맨 우측의 [Install] 버튼을 클릭합니다.

※ 설치가 완료되면 버튼 아래에 작게 'Installed into...'라는 메시지가 나타납니다.


2단계: 한글 언어 적용 및 재시작

  1. 설치가 끝났다면, 화면 맨 우측 상단의 [Settings] 탭으로 이동합니다.
  2. 화면 왼쪽의 세로 메뉴 목록에서 [User interface]를 찾아 클릭합니다.
  3. 스크롤을 중간쯤 내려서 Localization (requires restart) 항목을 찾습니다.
  4. 옆에 있는 드롭다운 메뉴(기본값 None)를 눌러 ko_KR을 선택합니다.
  5. 화면 맨 위로 다시 스크롤을 올려서 주황색 [Apply settings] 버튼을 눌러 설정을 저장합니다.
  6. 바로 옆에 있는 [Reload UI] 버튼을 눌러 화면을 새로고침합니다.

🎉 짠! 화면이 깜빡이며 새로고침된 후, 모든 메뉴가 완벽한 한글로 바뀐 것을 확인하실 수 있습니다.

이제 영어의 압박에서 벗어나, 훨씬 편안하고 직관적인 환경에서 여러분만의 멋진 AI 이미지를 자유롭게 생성해 보세요!

🚀 Stable Diffusion WebUI (A1111) 완벽 설치 & 오류 해결 가이드

내 PC에서 프라이빗하게 고품질 AI 이미지를 무제한으로 생성할 수 있는 스테이블 디퓨전(Stable Diffusion) WebUI! 하지만 최근 파이썬 버전 충돌과 공식 저장소 증발 사태가 겹치면서 설치 과정에서 수많은 에러를 뿜어내고 있습니다.

오늘은 AUTOMATIC1111(A1111) 버전의 기본 설치 방법부터, 현재 전 세계 유저들을 괴롭히고 있는 가장 치명적인 2가지 오류의 완벽한 해결책까지 하나로 총정리해 드립니다. 이 글만 순서대로 따라오시면 무조건 설치에 성공하실 수 있습니다!


1. 필수 프로그램 사전 준비

설치를 시작하기 전, 아래 두 가지 프로그램이 PC에 깔려 있어야 합니다.

  • Python 3.10.6: 스테이블 디퓨전과 가장 호환성이 좋은 버전입니다. 파이썬 홈페이지에서 다운로드 후, 설치 창 맨 아래의 "Add Python 3.10 to PATH" 체크박스를 반드시! 선택하고 설치해 주세요.
  • Git (깃): Git 공식 홈페이지에서 Windows용 버전을 다운로드하고, 기본 설정(Next)으로 설치를 마칩니다.

2. 스테이블 디퓨전 기본 설치하기

  1. C드라이브나 용량이 넉넉한 드라이브에 영어 이름으로 된 빈 폴더를 하나 만듭니다. (예: D:\StableDiffusion)
  2. 해당 폴더 안으로 들어가서, 파일 탐색기 상단의 주소창을 클릭하고 cmd를 입력한 뒤 엔터를 치면 검은색 명령 프롬프트 창이 열립니다.
  3. 아래 명령어를 복사해서 붙여넣고 엔터를 칩니다.
    git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
  4. 다운로드가 끝나면 stable-diffusion-webui라는 폴더가 생성됩니다. 그 안으로 들어가서 webui-user.bat (톱니바퀴 아이콘) 파일을 더블 클릭하면 본격적인 설치가 시작됩니다.

※ 주의: 만약 여기서 에러 없이 쭉쭉 설치가 진행되어 Running on local URL: http://127.0.0.1:7860 문구가 뜬다면 당신은 럭키비키! 하지만 요즘은 십중팔구 아래의 에러들을 만나게 됩니다. 당황하지 말고 아래 해결법을 따라오세요.


3. 치명적 오류 ①: Installing clip 무한 에러 (pkg_resources)

🚨 증상

설치 초반 Installing clip 단계에서 멈추더니 ModuleNotFoundError: No module named 'pkg_resources'error: invalid command 'bdist_wheel' 같은 붉은 글씨가 쏟아지며 설치가 튕기는 현상입니다.

🔍 원인

파이썬의 최신 뼈대 도구(setuptools v80 이상)가 업데이트되면서 구버전 파일(pkg_resources)을 통째로 삭제해 버렸습니다. 이 때문에 과거 구조를 쓰는 CLIP 패키지가 조립되지 않아 발생하는 버전 호환성 충돌입니다.

✅ 해결 방법 (명령어 수동 입력)

설치 폴더(stable-diffusion-webui) 주소창에 다시 cmd를 입력해 검은 창을 열고, 아래 3개의 명령어를 순서대로 하나씩 입력(엔터)해 줍니다.

  1. 가상 환경(venv) 켜기: (입력 줄 맨 앞에 (venv)가 생겨야 합니다)
    venv\Scripts\activate
  2. 설치 도구를 구버전으로 강제 다운그레이드:
    pip install setuptools==69.5.1
  3. 파이썬 고립 환경을 무시하고 CLIP 강제 설치:
    pip install https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip --no-build-isolation

Successfully installed clip 문구가 뜨면 성공입니다! 검은 창을 닫고 다시 webui-user.bat를 실행하세요.


4. 치명적 오류 ②: 원본 저장소 증발 및 깃허브 로그인 에러

🚨 증상

기분 좋게 1번 에러를 넘겼는데, 이번엔 뜬금없이 웹 브라우저가 열리며 GitHub 로그인을 요구합니다. 로그인을 안 하면 Repository not found 에러를 뿜으며 튕겨버립니다.

🔍 원인

놀랍게도 스테이블 디퓨전 원작자(Stability AI) 측에서 공식 깃허브 원본 저장소를 숨기거나 지워버렸습니다. 파일 자체가 서버에 없으니 다운로드 프로그램(Git)이 "비공개 파일인가?" 착각하고 로그인 팝업을 띄운 것입니다.

✅ 해결 방법 (백업 미러 서버 사용)

유저들이 만들어둔 백업(Mirror) 주소로 파일을 받아오면 깔끔하게 해결됩니다. 이번엔 venv를 켤 필요 없이, 설치 폴더에서 cmd를 열고 아래 명령어를 길게 한 줄 그대로 복사/붙여넣기 하세요.

git clone https://github.com/w-e-w/stablediffusion.git D:\Work\StableDiffusion\stable-diffusion-webui\repositories\stable-diffusion-stability-ai

⚠️ 매우 중요: 명령어를 치고 다운로드가 진행되는 도중, 또 GitHub 로그인 팝업이 뜬다면 절대 로그인하지 말고 창의 X를 누르거나 Cancel(취소)을 누르세요. 취소를 눌러야 다운로드가 마저 100%까지 완료됩니다.


5. 최종 실행 및 모델 적용하기

여기까지 오셨다면 최악의 에러 고비는 모두 넘겼습니다! 🎉

  1. 열려있는 cmd 창을 모두 닫고, 폴더 안의 webui-user.bat를 다시 실행합니다.
  2. 나머지 필수 파일들이 에러 없이 쭉쭉 다운로드됩니다.
  3. 마지막에 검은 창에 Running on local URL: http://127.0.0.1:7860 문구가 나타나면 설치 성공입니다!
  4. 인터넷 브라우저(크롬 등) 주소창에 저 주소를 복사해 넣으면 드디어 스테이블 디퓨전 WebUI 화면을 만날 수 있습니다.

💡 꿀팁: 멋진 실사나 애니메이션 그림을 뽑고 싶다면 Civitai 같은 사이트에서 체크포인트 모델 파일(.safetensors)을 다운받아 \models\Stable-diffusion 폴더에 넣고 WebUI 왼쪽 위의 새로고침 버튼을 누르면 적용됩니다.

설치하시느라 정말 고생 많으셨습니다. 이제 쾌적한 로컬 환경에서 마음껏 AI 이미지를 생성해 보세요!

2023년 1월 31일 화요일

[WPF] SmtpClient - 5.7.0 Authentication Required

error : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required. Learn more at


WPF로 Gmail을 사용해서 Mail을 보내기 구현중 Error가 발생했다.

- 검색해보니 "보안 수준이 낮은 앱 및 Google 계정"를 사용하라고 하는데 현재 사용할수 없다.

- 다른방법으로 앱비밀번호를 설정해서 사용가능하다.

    Google계정 -> 보안 -> Google에 로그인 -> 앱 비밀번호

비밀번호 생성후 사용하면 된다.

https://support.google.com/accounts/answer/185833#app-passwords






2021년 8월 26일 목요일

Google Play Game Service 연결

Google Play Game Service 연결

Google Play Game Service 로그인을 위해 사용자 인증 정보 추가를 설명한다.


1. Play 게임 서비스 설정

1-1. "Play 게임 서비스" / "설정"  - "Play 게임 서비스 설정"

 - 선택 : "아니요. 게임에서 Google API를 사용하지 않습니다."

 - 게임 이름 : "이름 입력"

 - 우측 하단 "만들기"


1-2. 사용자 인증 정보 "설정"


 - "Google Cloud Platform"링크 또는 설정 상단 "Google Cloud Platform에서 보기"클릭


2. Google Cloud Platform 설정

2.1"Google Cloud Platform"에서 프로젝트가 선택되었는지 확인

"API 및 서비스" / "OAuth 동의 화면" 확인



2.2 "OAuth 동의 화면" / "User Type" - "외부" 선택 "만들기"


2.3 앱 등록 수정

"OAuth 동의 화면" - "앱 등록 수정"
1. "OAuth 동의 화면" 빨간곳 정보 넣고 "저장 후 계속"
2. "범위" 다음
3. "테스트 사용자" 다음
4. "요약" 확인

3. Play 게임 서비스 설정

    "Google Play Console" / "Play 게임 서비스" 

3.1 "사용자 인증 정보" 새로고침



3.2 "사용자 인증 정보 추가"

"사용자 인증 정보" / "사용자 인증 정보 추가"


"사용자 인증 정보 추가 창에서"

유형 : Android

이름 : 게임 이름

불법 복제 방지 사용 : 사용(권장)

"OAuth 클라이언트 만들기" 버튼 선택 후 

"OAuth 클라이언트를 만드는 방법" 팝업 창에서 "OAuth 클라이언트 ID 만들기"링크 클릭

"OAuth 클라이언트를 만드는 방법"



4. Google Cloud Platform 설정
"Google Cloud Platform" ->" OAuth Client ID 만들기"

어플리케이션 유형 :  "Android"


"OAuth 클라이언트를 만드는 방법" 팝업 창에서의 정보를 넣어준다.



5. Play 게임 서비스 설정

"OAuth 클라이언트 새로고침" 후 위에서 만든 "OAuth 클라이언트" 사용자 인증 선택
불법 복제 방지 사용 : 사용(권장)
OAuth 클라이언트 확인 후 오른쪽 하단 "변경사항 저장"


"사용자 인증 정보" 완료


2021년 8월 23일 월요일

[Unity Android] Build - error: unexpected element found in

유니티에서 Plugin 추가 후 빌드 에러가 발생했다.

    유니티 버전 2019.4.29f1


증상

* What went wrong:
Execution failed for task ':launcher:processReleaseResources'.
> Android resource linking failed
C:\Work\DCubeClient\Temp\gradleOut\launcher\build\intermediates\merged_manifests\release\AndroidManifest.xml:42: AAPT: error: unexpected element <queries> found in <manifest>.



빌드된 merged_manifests 파일 확인

C:\Work\DCubeClient\Temp\gradleOut\launcher\build\intermediates\merged_manifests\release\AndroidManifest.xml


해결법

Gradle 버전이 낮아서 생기는 문제로 3.4.0 -> 3.4.3 변경한다.

    참고

    https://stackoverflow.com/questions/62969917/how-to-fix-unexpected-element-queries-found-in-manifest-error


1. BaseGradleTemplate 체크


2. Assets\Plugins\Android\baseProjectTemplate.gradle File 편집

gradle:3.4.0 -> gradle:3.4.3 으로 변경 후 저장

classpath 'com.android.tools.build:gradle:3.4.0' -> classpath 'com.android.tools.build:gradle:3.4.3' ->



baseProjectTemplate.gradle File

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
allprojects {
    buildscript {
        repositories {**ARTIFACTORYREPOSITORY**
            google()
            jcenter()
        }

        dependencies {
            // If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
            // See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
            // See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
            // To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
            classpath 'com.android.tools.build:gradle:3.4.3'
            **BUILD_SCRIPT_DEPS**
        }
    }

    repositories {**ARTIFACTORYREPOSITORY**
        google()
        jcenter()
        flatDir {
            dirs "${project(':unityLibrary').projectDir}/libs"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


2021년 8월 13일 금요일

[GoogleAPI] Drive Error : dailyLimitExceededUnreg - 일일 한도 초과 등록 해제

GoogleAPI Drive Error

잘되던 게임이 갑자기 안되어 로그를 확인하니 아래 링크로 보내고 있었다.


2021-08-13 14:41:08.095 6049-6094/com.google.android.gms E/Volley: [269] NetworkUtility.b: Unexpected response code 404 for https://www.googleapis.com/drive/v2internal/files/1JDF7mwSVgpmFLVQgapIgHO0oQPyapndbOO49s8eqbJcJq1mRkxglacJPtjg-JN2k6Bw4HQg?prettyPrint=false&fields=owners(isAuthenticatedUser,picture(url),displayName,permissionId,emailAddress),spaces,webContentLink,lastModifyingUser(isAuthenticatedUser,picture(url),displayName,permissionId,emailAddress),originalFilename,headRevisionId,fileExtension,id,recencyReason,folderColorRgb,version,webViewLink,indexableText(text),editable,gplusMedia,quotaBytesUsed,properties(key,value,appId,visibility),writersCanShare,sharedWithMeDate,explicitlyTrashed,shared,authorizedAppIds,parents(isRoot,id),thumbnailLink,creatorAppId,modifiedByMeDate,labels(restricted,trashed,starred,viewed),appDataContents,md5Checksum,localId(value,space,version),thumbnail(mimeType,image),ownerNames,sharingUser(isAuthenticatedUser,picture(url),displayName,permissionId,emailAddress),copyable,modifiedDate,userPermission(id,role,withLink,domain,name,additionalRoles,value,type,emailAddress,photoLink),etag,recency,createdDate,alternateLink,mimeType,lastViewedByMeDate,folderFeatures,description,title,fileSize,downloadUrl,embedLink,subscribed&acknowledgeAbuse=false&allProperties=true&fileScopeAppIds=848143016023&updateViewedDate=false


링크의 에러

{"error":{"errors":[{"domain":"usageLimits","reason":"dailyLimitExceededUnreg","message":"Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.","extendedHelp":"https://code.google.com/apis/console"}],"code":403,"message":"Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."}}

API 할당량을 늘려주면 해결된다.
Google Cloud Platform -> 할당량 -> 할당량 수정 -> 전체


2021년 3월 16일 화요일

[Unity Android] Unity 2019.x multi Dex 64k 해결법


Unity 2019.x multi Dex 64k 해결법

Unity 2019 버전으로 넘어오면서 기능이 바뀌여 다른 방식으로 해야 한다.


해결 방법

"Edit" -> "Player Settings" -> "Player"탭 -> "Publishing Settings" -> "Custom Launcher Gradle Template" 체크 후 생성된 파일을 수정한다.

  • Assets\Plugins\Android\launcherTemplate.gradle



Assets\Plugins\Android\launcherTemplate.gradle 파일에 아래 줄 추가
defaultConfig {
    multiDexEnabled true // 추가

}


// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

apply plugin: 'com.android.application'

dependencies {
    implementation project(':unityLibrary')
}

android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        multiDexEnabled true
        applicationId '**APPLICATIONID**'
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
    }

    aaptOptions {
        noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**SIGN**

    lintOptions {
        abortOnError false
    }

    buildTypes {
        debug {
            minifyEnabled **MINIFY_DEBUG**
            useProguard **PROGUARD_DEBUG**
            proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
            jniDebuggable true
        }
        release {
            minifyEnabled **MINIFY_RELEASE**
            useProguard **PROGUARD_RELEASE**
            proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
        }
    }**PACKAGING_OPTIONS****SPLITS**
    **BUILT_APK_LOCATION**
    bundle {
        language {
            enableSplit = false
        }
        density {
            enableSplit = false
        }
        abi {
            enableSplit = true
        }
    }
}**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**

2021년 3월 10일 수요일

[Unity] Custom Packages 만들기

Custom Packages 만들기

https://docs.unity3d.com/kr/current/Manual/CustomPackages.html


회사에 팀끼리의 Lib를 공유할일이 생겨 Custom Package를 사용하려고 한다.

아래 Package 생성과정을 정리한다.


내장된 패키지 새로 만들기 - 직접 프로젝트에 만들어서 사용할때


생성 Project/Packages 폴더에 새로운 폴더를 생성

생성 폴더아래 package.json 파일을 만든다.



패키지 매니페스트 편집(package.json 파일)

설명은 유니티 docs 참고

https://docs.unity3d.com/kr/current/Manual/upm-manifestPkg.html

{
  "name": "com.graivity.lab",
  "version": "0.0.1",
  "displayName": "Graivity SDK",
  "description": "Graivity Common SDK Package",
  "unity": "2018.4",
  "unityRelease": "0b4",
  "dependencies": {
  },
  "keywords": [
    "Graivity",
    "Common"
  ],
  "author": {
    "name": "Deukhyun Han",
    "email": "gravity@gravityneocyon.com",
    "url": "https://www.gravityneocyon.com"
  }
}


유니티를 재 시작하고  Package Manager를 열면 내가 만든 Package가 생성되어 있다.



새로운 로컬 패키지 만들기 - Package 파일로 공유할때

생성 Project/Assets 폴더아래 package.json 파일을 만든다.

패키지 매니페스트 편집(package.json 파일)

위 참고


다른 프로젝트에서 Custom Package 로드
Window/Package Manager/Add package from disk


Package.jon 선택


확인




2021년 2월 8일 월요일

[Unity] Package Manager - Use Google API

 Unity Google API를 사용하는 방법은 2가지가 있다.


 1. Package를 다운받아서 설치하는 방법

 2. Unity Package Manager에서 추가하는 방법


https://docs.unity3d.com/2019.4/Documentation/Manual/upm-scoped.html

2번을 설명하겠다.


2020.05.19 종료

2021년 1월 22일 금요일

[Unity] Error while downloading Asset Bundle: CRC Mismatch

에셋번들 패치 후 아래 에러가 발생했다.

2021-01-20 09:27:04.507 13273-19108/? E/Unity: Error while downloading Asset Bundle: CRC Mismatch. Provided 55c7e683, calculated 3ce95af1 from data. Will not load AssetBundle 'http://192.0.0.1/Android/Android_1/font.unity3d'

나의 경우 유니티 버전을 올려서 에러가 발생했다.

유니티버전을 올리고 빌드를 진행하면 파일 앞부분의 버전도 올라가게 된다.

이전 유니티 버전으로 다시 에셋번들을 만들어서 패치해도 에러가 발생..

캐쉬를 지워주는 기능을 만들어야할듯하다.

이전 버전으로 돌리고 에셋번들을 빌드하면 바뀐 파일들이 보인데.

해당파일을 패치파일로 업로드한다.


그래도 변경되지 않는다면 해당 에셋데이터를 건들고(Active or 좌표 1.0001변경등) 다시 에셋번들을 뽑는다.


이전 에셋번들데이터를 "font.unity3d" 데이터 확인

UnityFS 5.x.x 2018.4.21f1 ` A [ C  ? D€ ? A   ? CAB-a6422a952d839.....

패치된 에셋번들데이터를 "font.unity3d" 데이터 확인

UnityFS 5.x.x 2018.4.29f1 ` A [ C  ? D€ ? A   ? CAB-a6422a952d839......


유니티 포럼에서는 항상 같은 버전의 유니티에서 에셋번들을 만들라고 하고 있다.




2021년 1월 11일 월요일

[UnityIAP] UnityIAP 2.2.5 Consume처리시 empty transactionID Error 발생

UnityIAP 2.2.5 설치 후  Consume 되지 않은 상품 Consume 처리시 empty transactionID Error 발생

Unable to confirm purchase; Product has missing or empty transactionID


또 유니티IAP 팀이 다음 버전을 기다리라고 함..

2.2.2 버전 이후부터 계속 버그가 생기네...

https://forum.unity.com/threads/bug-unity-iap-2-2-5-cannot-confirmpendingpurchase.1023700/#post-6700876


Packages Manager의 버전과 Unity AssetStore의 버전은 다르다.

2020년 11월 12일 목요일

[UnityIAP] UnityIAP 2.2.0 업데이트 후 Error 발생

UnityIAP 2.2.0 업데이트 후 Error 발생

2020년 11월 17일 UnityIAP 2.2.1 업데이트


2020년 11월 10일 UnityIAP 2.2.0로 업데이트 되었다.

빌드 후 구매 확인하면 아래와 같은 에러가 발생한다.


에러 내용

2020-11-12 11:08:37.891 3182-3182/com.neocyon.google.ro2odin E/Unity: ArgumentNullException: Value cannot be null.
Parameter name: key
at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x00000] in <00000000000000000000000000000000>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].TryGetValue (TKey key, TValue& value) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Purchasing.ProductCollection.WithStoreSpecificID (System.String id) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Purchasing.PurchasingManager.OnPurchaseFailed (UnityEngine.Purchasing.Extension.PurchaseFailureDescription description) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Purchasing.GooglePlayPurchaseCallback.OnPurchaseFailed (UnityEngine.Purchasing.Extension.PurchaseFailureDescription purchaseFailureDescription) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Purchasing.GooglePurchaseUpdatedListener.HandleErrorCases (UnityEngine.Purchasing.Models.GoogleBillingResult billingResult, Unit


아직 Unity IAP 팀에서 원인과 해결 방법을 찾고 있는것 같다.

https://forum.unity.com/forums/unity-iap.112/


이전 버전으로 깔고 싶지만 구글 검색해도 나오지 않는다. 

2.2.0을 삭제 후 아래 링크에서 이전 버전 2.1.1 Package를 다운로드 받으면 된다.

UnityEngine.Cloud.Purchasing-2.1.1-83eca73c.unitypackage


https://forum.unity.com/threads/unity-iap-previous-versions.527432/#post-6506544



2020년 11월 6일 금요일

[Unity IAP] UnityIAP Import중 에러 발생 "The IAP service is currently disabled"

Unity Serviece에서 Store Package를 Import중 에러가 발생했다.

error: "The IAP service is currently disabled"

The IAP service is currently disabled.

Canceling the install process now to avoid encountering errors when importing the Unity IAP asset package. The IAP service must be enabled first before importing the latest Unity IAP asset package.
Please enable the IAP service through the Services window. Then import the Unity IAP asset package again to continue the install.

Select 'Help...' to see further instructions.

UnityIAP Docs에는 아래와 같은 설명이 있다.

참고: 흔한 Unity IAP 통합 컴파일러 오류
아래 오류 메시지는 Unity Cloud 서비스 창에서 Unity IAP가 비활성화되었거나, Unity가 인터넷에 연결되어 있지 않다는 점을 나타냅니다.

CS0246: IPurchaseReceipt 유형 또는 네임스페이스 찾을 수 없음.
System.Reflection.ReflectionTypeLoadException
UnityPurchasing/Bin/Stores.dll
UnityEngine.Purchasing

이 오류를 해결하려면 우선 서비스 창을 새로고침 해야 합니다. 간단하게 닫고 다시 열면 됩니다. 새로고침 후 Unity IAP가 활성화되었는지 확인해야 합니다.
해결되지 않은 경우, 인터넷 연결을 해제하고 재연결 한 후, Unity 서비스에 다시 로그인한 다음 Unity IAP를 활성화해야 합니다. 등록 기관의 Unity 서비스 “소유자” 또는 “관리자” 만이 Unity IAP 서비스를 활성화할 수 있습니다.


이유는 Unity Package Manager내부에서 define이 꼬인것 같다.

재설치나 협업중에는 Import순서가 중요하겠다.

- Package Manager/In App Purchasing Install -> Unity Service IAP Import


1. Unity/Window/Package Manager/In App Purchasing Install


2. Unity Service/IN-APP PURCHASING - Import(Reimport) -> Import Package

3. Import 확인

Plugins, Packages폴더



그래도 안될 경우

직접 Unity Servieces 파일을 수정 한다.

ProjectSettings/UnityConnectSettings.asset

  UnityPurchasingSettings:

    m_Enabled: 1


 m_Enabled: 0 으로 되어있으면 1로 수정

2020년 9월 2일 수요일

[IOS] Xcode 빌드 업로드에러 no accounts with app store connect access have been found for the team

ios Xcode 빌드 후 업로드를 하려는데 오류가 발생했다.

no accounts with app store connect access have been found for the team "xxxxxx" App Store Connect access is required for Developer ID distribution.



검색해 보니 xcode를 프로세서에서 완전 제거후에 다시 xcode를 실행 후 빌드하면
해당 증상이 없어졌다고 하는데

나는 그냥 맥 재부팅 후 빌드 하지 않고 "Organizer"에 빌드된 "Archive"를 다시 "Distribute App"으로 업로드 하니 잘되었다.


2020년 7월 9일 목요일

[Mac] sourcetree 계정 비밀번호를 계속 물어볼때 처리

[Mac] Sourcetree 계정 비밀번호를 계속 물어볼때 처리

1. 비밀번호 입력시 [store password in keychain] 체크

2. git 터미널에 아래 입력 후 다시 비밀번호 입력
 git config --global credential.helper osxkeychain



2020년 6월 2일 화요일

[Unity IOS] Mac에서 에셋번들(Asset Bundle) 다운로드 오류

[Unity IOS] Mac에서 에셋번들(Asset Bundle) 다운로드 오류

Mac에서 에셋번들(Asset Bundle)을 빌드하여 서버로 FTP(FileZila)를 이용해 업로드 하였다.
Mac Unity 에디터에서 해당 에셋번들 파일을 다운로드하면 에러가 아래와 같은 발생한다.


Error while downloading Asset Bundle: Failed to decompress data for the Assetbundle 'http://


해결법
FileZilla 기본 전송은 아스키로 되어있어서 Unity에서 다운로드 후 로드하면 에러가 발생한다.
전송 유형을 바이너리로 바꾸고 다시 업로드 하면 해결된다.

1. FileZilla -> 전송 -> 전송유형 -> 바이너리
2. 에셋번들 파일 업로드
3. Unity Editor에서 에셋번들 다운로드


2020년 2월 14일 금요일

error CS8107: '기본 리터럴' 기능은 C# 7.0에서 사용할 수 없습니다. 언어 버전 7.1 이상을 사용하세요.


error CS8107: '기본 리터럴' 기능은 C# 7.0에서 사용할 수 없습니다. 언어 버전 7.1 이상을 사용하세요.

Visual Studio 2017 사용시 기본 C# 버전은 7.0이다
7.x 의 기능을 사용하기 위해서는 언어 버전을 올려야한다.




https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/configure-language-version


프로젝트 속성 -> 빌드 -> 고급 -> 언어버전 -> C# 7.x 선택


csproj파일을 Notepad로 열어서 확인
<PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>netcoreapp2.0</TargetFramework>
  <LangVersion>7.1</LangVersion>
</PropertyGroup>



2019년 11월 20일 수요일

[Jenkins Window] error : Build step 'Execute Windows batch command' marked build as failure

[Jenkins Window] error : Build step 'Execute Windows batch command' marked build as failure

C:\Program Files (x86)\Jenkins\workspace\kor>exit 1
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE


Unity + Jenkins(Window) Build  첫 빌드 후
Build step 'Execute Windows batch command' marked build as failure
window batch 명령 실행 중 에러 발생!

여러 에러가 있지만
첫 빌드시 에러의  첫번째 해결책은 jenkins 서비스에 시스템 계정을 로그인하면 된다.

1. 서비스 창을 연다
  • 1. window 검색 -> services.msc
  • 2. cmd -> services.msc
2. 서비스(로컬) -> jenkins -> 로그온 -> 계정지정 유저와 암호를 입력
3. 서비스 재시작
4. 빌드 확인
캡션 추가


로그온 계정 지정이 어려울 경우
  1. 로그온 -> 찾아보기
  2. 사용자선태 -> 고급 -> 지금 찾기 -> 검색결과에 나의 계정을 선택



2019년 11월 6일 수요일

[Unity Android] Unity Ads 추가 에러

Unity Ads를 추가 후 빌드 에러 발생

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':checkReleaseDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class com.unity3d.ads.BuildConfig found in modules classes.jar (:UnityAds:) and classes.jar (:unity-ads:)
  Duplicate class com.unity3d.ads.IUnityAdsListener found in modules classes.jar (:UnityAds:) and classes.jar (:unity-ads:)


Asset Store에서 최신 버전의 UnityAds를 설치 했지만
Unity가 Project 생성시 자동으로 Package에 Advertisement를 설치해 놓아서 그렇다.

둘중 하나를 지우면된다.

- 내프로젝트

-  Package

 Packages쪽 Ads를 지운다.


에러 전문

[Unity Android] AndroidManifest.xml 파일 생성

Unity는 Android용 AndroidManifest.xml 파일을 기본으로 생성해 주지 않는다.

AndroidManifest.xml을 Project로 복사하는 방법은 

Android 빌드 후 프로젝트 폴더의 Temp\StagingArea 경로를 보면 AndroidManifest.xml이 있다.

이 파일을 Assets\Plugins\Android 폴더로 복사한 후 파일을 편집해서 사용하면 된다.