블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2795)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

I manage to get it working by a C# script, but since this build setting need an .entitlementfile in your xcode project, first you will need to create a text file called [projectName].entitlement anywhere in your project with this content:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>aps-environment</key>
  6. <string>development</string>
  7. </dict>
  8. </plist>

Now you can add this script on the Editor folder:

  1. using System.IO;
  2. using JetBrains.Annotations;
  3. using UnityEditor;
  4. using UnityEditor.Callbacks;
  5. using UnityEditor.iOS.Xcode;
  6. using UnityEngine;
  7.  
  8. public class PostProcessBuildScript : ScriptableObject
  9. {
  10. public DefaultAsset entitlementsFile;
  11.  
  12. [PostProcessBuild, UsedImplicitly]
  13. public static void ChangesToXcode(BuildTarget buildTarget, string pathToBuiltProject)
  14. {
  15. // Get project PBX file
  16. var projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
  17. var proj = new PBXProject();
  18. proj.ReadFromString(File.ReadAllText(projPath));
  19. var target = proj.TargetGuidByName("Unity-iPhone");
  20.  
  21. // Create an instance of this ScriptableObject so we can point to its entitlements file
  22. var dummy = CreateInstance<PostProcessBuildScript>();
  23. var entitlementsFile = dummy.entitlementsFile;
  24. DestroyImmediate(dummy);
  25. if (entitlementsFile != null)
  26. {
  27. // Copy the entitlement file to the xcode project
  28. var entitlementPath = AssetDatabase.GetAssetPath(entitlementsFile);
  29. var entitlementFileName = Path.GetFileName(entitlementPath);
  30. var unityTarget = PBXProject.GetUnityTargetName();
  31. var relativeDestination = unityTarget + "/" + entitlementFileName;
  32. FileUtil.CopyFileOrDirectory(entitlementPath, pathToBuiltProject + "/" + relativeDestination);
  33.  
  34. // Add the pbx configs to include the entitlements files on the project
  35. proj.AddFile(relativeDestination, entitlementFileName);
  36. proj.AddBuildProperty(target, "CODE_SIGN_ENTITLEMENTS", relativeDestination);
  37.  
  38. // Add push notifications as a capability on the target
  39. proj.AddBuildProperty(target, "SystemCapabilities", "{com.apple.Push = {enabled = 1;};}");
  40. }
  41.  
  42. // Save the changed configs to the file
  43. File.WriteAllText(projPath, proj.WriteToString());
  44. }
  45. }

After that you just define the entitlementsFile variable for the script in the inspector window and you should now have the push notification activated by default when you build for iOS.

 

 

 

[출처] https://answers.unity.com/questions/1224123/enable-push-notification-in-xcode-project-by-defau.html

 

Enable Push Notification in XCode project by default? - Unity Answers

 

answers.unity.com

 

반응형
Posted by blueasa
, |

Unity에서 Firebase Cloud Messaging(FCM) 서비스 적용 후 빌드 시, 애플로부터 Missing Push Notification Entitlement 메시지를 받을 때가 있는데 어느 순간 부터 XCode에서 Capabilities-Push Notifications를 수동으로 ON 시켜줘야 된단다.

 

 

[참조]

7단계: 사용자 알림 프레임워크 추가

  1. Xcode 프로젝트를 클릭한 후 Editor area(편집 영역)에서 General(일반) 탭을 클릭합니다.

  2. Linked Frameworks and Libraries(연결된 프레임워크 및 라이브러리)까지 아래로 스크롤한 다음 + 버튼을 클릭하여 프레임워크를 추가합니다.

  3. 나타나는 창에서 UserNotifications.framework까지 스크롤하여 해당 항목을 클릭한 다음 Add(추가)를 클릭합니다.

8단계: 푸시 알림 사용 설정

  1. Xcode 프로젝트를 클릭한 후 Editor area(편집 영역)에서 Capabilities(기능) 탭을 클릭합니다.

  2. Push Notifications(푸시 알림)를 On(켜기)으로 전환합니다.

  3. Background Modes(백그라운드 모드)까지 아래로 스크롤하고 On(켜기)으로 전환합니다.

  4. Background Modes(백그라운드 모드)아래의 Remote notifications(원격 알림) 체크박스를 선택합니다.

 

[출처] https://firebase.google.com/docs/cloud-messaging/unity/client?hl=ko

 

Unity로 Firebase 클라우드 메시징 클라이언트 앱 설정  |  Firebase

Unity로 교차 플랫폼 Firebase 클라우드 메시징 클라이언트 앱을 작성하려면 Firebase 클라우드 메시징 API를 사용하세요. Unity SDK는 Android 및 iOS에서 모두 작동하며 플랫폼에 따라 몇 가지 추가 설정이 필요합니다. 시작하기 전에 1단계: 환경 설정 Unity 5.3 이상을 설치합니다. (iOS만 해당) 다음에 대한 액세스 권한이 있어야 합니다. Xcode 9.4.1 이상 CocoaPods 1.4.0 이상 Unity 프로젝

firebase.google.com

 

반응형
Posted by blueasa
, |

https://www.draw.io/

여기 들어가서 그리면 된다 ㅎㅅㅎ XML으로 저장해두고, 나중에 재수정해서 쓸 수도 있다. 

 

요런식으로 그려다가 쓰면 된다 ㅎㅅㅎ 

 

 

 

<끝>



출처: https://americanopeople.tistory.com/278 [복세편살]

 

(Draw.io) 온라인 다이어그램 툴

https://www.draw.io/ 여기 들어가서 그리면 된다 ㅎㅅㅎ XML으로 저장해두고, 나중에 재수정해서 쓸 수도 있다. 요런식으로 그려다가 쓰면 된다 ㅎㅅㅎ <끝>

americanopeople.tistory.com

 

반응형
Posted by blueasa
, |

[링크]

https://velog.io/@city7310/%EB%82%B4%EA%B0%80-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EB%B0%A9%EC%8B%9D

 

내게 실용적이었던 프로그래밍 공부 방법들

나는 보통 재능이나 공부의 양으로 친구들의 성장 속도를 따라가기 힘들었다. 그래서 '무작정 열심히'보단, '의식적인 연습'을 지속해 나가야 했다. 이득충이 되는 방향으로 공부를 하다 보니까, 내가 어떤 방식으로 공부를 하는 지 어느 정도 정리가 됐다. velog의 독자들은 '경험기'같은 글에 니즈가 꽤 있는 것 같아서, 부족하지만 내 공부를 위한 매개체들을...

velog.io

 

반응형
Posted by blueasa
, |

[My Case]

[Error] java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/HttpHost

[수정] Unity Android Target API Level을 26으로 낮춰서 해결

 

-------------------------------------------------------------------------------------------------

 

Do any of the following:

1- Update the play-services-maps library to the latest version:

com.google.android.gms:play-services-maps:16.1.0

 

2- Or include the following declaration within the <application> element of AndroidManifest.xml.

<uses-library android:name="org.apache.http.legacy" android:required="false" />

 

 

[출처]

https://stackoverflow.com/questions/50461881/java-lang-noclassdeffounderrorfailed-resolution-of-lorg-apache-http-protocolve

 

java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion

I 've met such error when I use Android studio 3.1 to build an Android P 's app, the apk can be made ,but when I use it on Android P emulator , it will crash and throw below info, more details see ...

stackoverflow.com

 

반응형
Posted by blueasa
, |

[출처] https://developside.tistory.com/85

 

 

어제 앱을 개발 중 glide v4를 사용하여 웹에 있는 그림을 load 하였는데, 아래와 같은 예외를 주며 동작을 하지 않았습니다.

 

com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE

There was 1 cause:

java.io.IOException(Cleartext HTTP traffic to ~~~~ not permitted)

 call GlideException#logRootCauses(String) for more detail

 

처음에는 glide 4로 버전업을 하면서 뭔가 바뀐 것이 있나 싶어서 glide 문서를 뒤지고, 관련 코드들을 보았는데 특별한 것이 없었습니다. 그림을 load 할 대상 주소를 보던 중 문득 예전에 안드로이드가 https 가 아닌 http 프로토콜 접속을 제한한다는 구글 블로그 내용이 떠올랐습니다.

 

  [그림1] google develops korea blog 내용 발췌

 

그래서 구글 검색을 해보니 실제로 이 예외는 안드로이드9(APL Lv 28) 부터 강화된 네트워크 보안정책으로 인한 오류였습니다.

몇몇 사이트를 돌아다니며, 확인해보니 3가지 해결방법이 있었습니다.

저는 1번의 방법으로 해결하였습니다. 다른 방법도 함께 소개하오니 많은 도움되셨으면 합니다.

 

1. AndroidManifest.xml 파일의 <application> 부분에 android:usesCleartextTraffic="true" 로 설정

cleartext HTTP와 같은 cleartext 네트워크 트래픽을 사용할지 여부를 나타내는 flag로 이 플래그가 flase 로 되어 있으면, 플랫폼 구성 요소 (예 : HTTP 및 FTP 스택, DownloadManager, MediaPlayer)는 일반 텍스트 트래픽 사용에 대한 앱의 요청을 거부하게 됩니다.

이 flag를 설정하게 되면 모든 cleartext 트래픽은 허용처리가 됩니다.

 

2. networkSecurityConfig 파일을 생성하고, AndroidManifest 에 등록

 

res/xml/network_security_config.xml 아래와 같이 추가합니다.

<domain includeSubdomains="true">ebookfrenzy.com</domain> 등록된 도메인은 https 가 아니어도 허용이 됩니다.

 

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

    <domain-config cleartextTrafficPermitted="true">

        <domain includeSubdomains="true">ebookfrenzy.com</domain>

    </domain-config>

</network-security-config>

 

그리고, 아래와 같이 추가할 경우는 secure.example.com 도메인만 항상 HTTPS를 통해서만 수행하게 됩니다.

 

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

    <domain-config cleartextTrafficPermitted="false">

        <domain includeSubdomains="true">secure.example.com</domain>

    </domain-config>

</network-security-config>

 

 

그 다음에 AndroidManifest.xml 파일의 <application> 부분에 networkSecurityConfig속성 추가

<application 

android:networkSecurityConfig="@xml/network_security_config" 

~~~ >

</application>

 

 

3.Android Manifest.xml 파일에서 targetSandboxVersion를 1로 설정

SandboxVersion 속성값이 높을수록 보안 수준이 높아지며, 2일 경우 usesCleartextTraffic의 기본값은 false 입니다.

따라서, 이 속성의 값을 1로 변경하면 문제를 해결할 수 있습니다.

다만 Android 8.0 (API 26) 이상을 타겟팅하는 Android Instant Apps의 경우 이 속성을 2로 설정해야합니다.

 

참고로 앱이 설치되면 이 속성값을 더 높은 값으로 만 업데이트 할 수 있다고합니다.

이 속성값을 다운 그레이드하려면 앱을 제거후 재설치 해야합니다.

 

 

[Reference]

Android Developers Blog - 

https://android-developers.googleblog.com/2018/04/protecting-users-with-tls-by-default-in.html

 

Stackoverflow -

https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted

 

Android Developers site -

https://developer.android.com/training/articles/security-config

https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted

https://developer.android.com/guide/topics/manifest/manifest-element#targetSandboxVersion

 

Blog -

https://nobase-dev.tistory.com/category/Android%EA%B0%9C%EB%B0%9C/Tips

 

 

반응형
Posted by blueasa
, |

[링크] http://kosis.kr/visual/bcc

 

http://kosis.kr/visual/bcc

 

kosis.kr

 

반응형
Posted by blueasa
, |

반응형
Posted by blueasa
, |

사용하던 확장 프로그램이 막혀서 사용 불가가 된 경우에 사용해 볼 수 있는 간단한 팁입니다.

예를 들어서 youtube center라는 확장앱이 현재 막혀 있는 데요. 

https://bitbucket.org/YePpHa/youtube-center/downloads 에서 youtubecenter.crx 파일을 다운 받습니다.

다운받은 crx파일을 zip으로 확장자를 바꾸고 압축을 풉니다.

구글 크롬에서 설정의 확장프로그램을 연 후에 맨 위 우측의 개발자 모드를 선택하면

압축해제된 확장프로그램 로드를 선택할 수 있게 됩니다. 

압축해제된 확장프로그램 로드로 좀전에 풀어놓은 youtubecenter폴더를 선택하면 youtubecenter확장앱을 사용할 수 있는 상태가 됩니다.

제가 사용하던 몇가지 크롬앱들은 이 방법으로 가능했는데 모두 가능한지는 모르겠습니다.

^^

<주의점>

1. 로드한 폴더를 지우면 크롬에서도 지워지므로 반드시 지우지 않을 곳에 풀어 놓습니다.

2. 크롬 실행 시 개발자모드 확장 프로그램 사용중지 란 팜업이 뜨는 데 이 것이 싫다면 크롬 설정의 고급설정표시의 "chrome 종료 후에도 백그라운드 앱을 계속 실행"을 확성화(체크) 합니다.

3. 설치가 되지 않는 경우는 대부분 manifest_version 문제입니다. (아래글 참조)

 

몇가지 구글 검색 중 알게 된 항목이 있어서 추가합니다.

http://superuser.com/questions/767286/re-enable-extensions-not-coming-from-chrome-web-store-on-chrome-v35-with-enhan

- Developer mode route

1. Download the crx file and unpack the extension using your favorite decompresser. Take note of the directory where you placed it.

2. Open the extension page, activate "Developer Mode"

3. Click "Load unpacked extension..."

4. Search trough your directory tree for the directory where you unpacked your extension and click OK. If your extension is called "my extension" then select "my extension" directory.

Advantages: You don't have to install anything else. Disadvantages: Chrome nags you to disable the extension each start up.

- from release channel

Install the Dev or Canary version of Chrome. Just go to the corresponding link and install the browser. Note that the Canary version will install a parallel version of Chrome which will be independent.

Advantage: No nagging, you get the most newest features earlier. Disadvantages: You also get all the bugs earlier. Installing Canary effectively uses the double disk space than a single installation of Chrome and also you have to migrate all your extensions over

- 테스트 동영상을 추가합니다.

 

- youtube center 정식버전에서 fullscreen player에 문제가 있어서 개발자 버전링크를 합니다.
https://github.com/YePpHa/YouTubeCenter/wiki/Developer-Version

- 크롬 확장앱 crx를 풀어서 로드시에 설치가 안 되는 경우는 대부분 crx 파일을 만들 때 manifest file format을 지키지 않아서 생기는 문제입니다. "manifest_version": 2 은 반드시 정의 하도록 하고 있습니다.  이경우에는 manifest.json에 추가 하면 됩니다.
https://developer.chrome.com/extensions/manifest

 

 

[출처] https://www.clien.net/service/board/park/6081229

 

구글 크롬의 막힌 확장앱을 사용하는 팁입니다. : 클리앙

사용하던 확장 프로그램이 막혀서 사용 불가가 된 경우에 사용해 볼 수 있는 간단한 팁입니다. 예를 들어서 youtube center라는 확장앱이 현재 막혀 있는 데요. https://bitbucket.org/YePpHa/youtube-center/downloads 에서 youtubecenter.crx 파일을 다운 받습니다. 다운받은 crx파일을 zip으로 확장자를 바꾸고 압축을 풉니다. 구글 크롬에서 설정의 확장프로그램을 연 후에 맨 위 우측의 개발자 모

www.clien.net

 

반응형
Posted by blueasa
, |

배포시 가장 큰 골치덩어리중 하나는 AndroidManifest.xml 파일 수정문제일 것이다.
Android Plugin을 만들어서 넣자니 짜증나고... 그럴때 간단하게 AndroidManifest.xml 파일을 수정할 수 있는 방법을 공개한다.

프로젝트 Root폴더에 보면 "Temp" 폴더가 생성되어 있을텐데 거길 가만히 보면 "StagingArea"라는 폴더가 보인다.
여기로 들어가면 다음과 같이 폴더가 구성되어 있다.

빌드에서 사용될 각종 Resource 파일들이 보일텐데 이중에 필요한건 
AndroidManifest.xml 파일과 res 폴더 두개이다. 이 2개를 선택해서 CTRL+C 해서 복사하고 
유니티로 돌아와서 "Plugins" 폴더를 만든다음 다시 "Android"폴더를 만들고 거기에 복사해 넣자.

이제 복사한 AndroidManifest.xml 파일을 열어서 마음대로 주무르면 됨. 끝!

 

[출처] http://www.wolfpack.pe.kr/872

 

Unity3D AndroidManifest.xml 파일 Custom으로 수정하고자 할때

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다

www.wolfpack.pe.kr

 

반응형
Posted by blueasa
, |