
[Android] BLE 통신 구현하기
2023. 5. 29. 21:31
Android/Android
BLE 다들 알고 있겠지만 우리가 아는 블루투스와 BLE는 약간 다르다. 블루투스 통신 프로토콜이라는 큰 카테고리안에 들어가긴 하지만 안드로이드에서 통신하기 위한 코드와 로직이 다르다는 의미다. BLE는 블루투스 4.0에서부터 채택되었으며, 기존 블루투스 기술보다 전력을 적게 소모한다. 사용하기 기존 블루투스와 거의 비슷하다. 다만 기존 블루투스에서 자주 보던 '페어링' 하는 과정이 빠져있으며, 유의해야할 점은 BLE 장치를 블루투스 설정창에서 검색하고 연결하려고 하면 버전 9이하 버전에서는 연결을 거부한다는 메세지를 볼 수 있고, 그 위로는 그냥 페어링이 되지 않는다. 1. 권한 선언 위에서 말했듯 같은 블루투스 프로토콜이기 때문에 권한 선언은 기존 블루투스를 사용하기 위해 선언해야하는 권한과 같다. ..

[Android] Unity 연동된 Android 프로젝트에서 Unity만 종료하기
2023. 3. 21. 00:00
Android/Android
안드로이드에 있는 유니티 프로젝트만을 종료하고 싶을 때 유니티 쪽에서 Application.Quit() 를 호출하면 유니티 프로세스만 종료할 수 있다고 해서 해봤는데 앱이 죽어버린다. (그러나 죽기 전의 액티비티부터 재실행 되는 걸로 보인다.) 이것의 해답은 AndroidManifest.xml에서 해당 액티비티에 process 속성을 부여하는 것이다. 그런데 두가지 문제가 있다. Unity에서 Application.Quit()가 실행되지 않는다는 것 그래서 일단 mUnityPlayer.quit() 를 실행했다. Android에서 Unity 메서드 호출하는 법 (Unity script에 해당 오브젝트와 메소드가 있어야겠죠) UnityPlayer.UnitySendMessage("Unity Object", "..

[Android] Unity와 Android 연동하기 | UnityPlayerActivity as subView
2023. 3. 20. 00:17
Android/Android
1. Unity Hub 다운받기 해당 링크에서 다운 받는다. 퍼스널 라이센스를 활성화 시켰다. 그냥 무료버전은 없는건가…? new project를 눌러보자 프로젝트가 생성되었다. 곧 각 항목에 대해 자세히 알아보도록 하자. 2. 프로젝트에 안드로이드 추가하기 맥OS 기준) file > Build Settings 플랫폼 선택에서 안드로이드가 빠져있었다. → 다운받지 않았기 때문 → 다운 받아주었다. 다운 받은 후 안드로이드를 선택하고 build switch를 눌러주면 위와 같이 유니티 로고가 안드로이드 쪽으로 이동한다. (프로젝트 한번 껐다 켜니까 제대로 적용이 되었다.) 3. 관련 설정 export 하기 전에 Version : 1.0 Scripting Backend : IL2CPP Target Archi..

내 프로젝트와 Firebase 연동하기
2023. 3. 6. 18:25
Android/Android
1. Firebase 사이트로 이동한다. 링크 2. 시작하기를 누른다. 3. 프로젝트 만들기를 클릭한다. 4. 프로젝트의 이름을 입력한다. 각 화면의 안내에 따라 프로젝트를 생성하면 된다. 5. 프로젝트 생성이 완료 되었으면 firebase를 추가한다. 연결하려는 프로젝트는 Android App이기 때문에 해당 아이콘을 눌러준다. 5-1. 앱 등록 화면 패키지 이름 : 해당 프로젝트의 패키지 이름을 넣으면 된다. AndroidManifest.xml 에서도 확인할 수 있다. 5-2. 구성 파일 다운로드 후 추가 화면 안내하는 대로 따라하면 된다. 5-3. Firebase SDK 추가 프로젝트 수준 build.gradle buildscript { ext.kotlin_version = "1.6.10" repo..

[Android] Hilt 적용해보기
2023. 1. 4. 22:36
Android/Android
들어가며 DI (Dependecy Injection)에 대해서는 어느정도 들어보거나 또는 알 것이라고 생각한다. 한번 더 짚고 넘어가자면 의존 관계에 있는 클래스의 객체를 외부로부터 생성하여 주입받는 것을 의미한다. DI, 의존성 주입 컴퓨터를 만들기 위한 클래스를 설계한다고 생각해보자. (getter, setter 및 생성자는 생략한다.) CPU가 필요하고 RAM, 저장장치(ROM)도 필요하겠지? public class Cpu { String name; String company; } Computer 클래스는 이렇게 구성된다고 치자. public class Computer { int ram; int ssd; Cpu cpu; } 이때, Computer는 Cpu 클래스를 의존하고 있다. 의존이란 쉽게 말해..

[Android] 부팅 시 앱 실행하기 | Android 10+ Application startup on BOOT
2022. 9. 21. 00:28
Android/Android
들어가며 부팅 시 앱이 실행 되었으면 좋겠다는 요구 사항이 들어왔다. 예전에 부팅 되었을 때 관련 데이터를 삭제하는 기능을 잠깐 검토 했던 기억이 있어서 금방 하겠거니 생각했다. 그렇게 영원한 나의 친구이자 스승인 구글에 관련 기능을 검색했다. 1. AndroidManifest.xml 에 권한을 명시하고 2. Receiver를 만들고 class DeviceBootReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val action = intent?.action if (action.equals(Intent.ACTION_BOOT_COMPLETED)){ val appIntent = Intent..

LeakCanary 사용하기
2022. 8. 7. 00:35
Android/Android
들어가며 지난번의 메모리 누수 이슈로 원인을 찾아 헤매다 LeakCanary를 알게 되었다. 안드로이드 스튜디오에서 제공하는 프로파일러에서도 memory leak 을 잡아 낼 수 있는데 개인적으로 사용하기가 어려웠다. 그래서 따로 사용하는 법(?) 이해하는 법을 학습했지만 문제를 해결하기 위한 원인을 찾아내는 데에는 한계가 있었다고 생각한다. 그래서 LeakCanary를 사용해보고자 하였다. 메모리 누수 memory leak A small leak will sink a great ship. - Benjamin Franklin 쉽게 얘기해서 우리는 먹으면 싸야한다. 근데 그게 제때 배출이 안되고 안에서 자꾸 쌓인다고 생각하면 어떤가? 탈이 난다. 더이상 참조되지 않는 것들은 가비지 컬렉션에 의해 수거되어야..

fastlane 으로 Android 앱 배포 쉽게 하기 (feat. windows)
2022. 7. 5. 23:40
Android/Android
들어가며 개발이 어느정도 마무리가 되면..(끝은 없으니까요 ^_ㅠ?) 사용자를 만나기 위한 준비를 해야한다. 여차저차 준비를 하고 내 자식같은 아이가 세상에 나오면.. 높은 확률로 다시 고쳐야할 일이 생긴다. 수정하고 내놓고 수정하고 내놓고.. 안드로이드 앱의 경우 출시 및 출시 준비 과정은 다음과 같다. (간략하게 작성한것으로 상이할 수 있습니다.) 1. 출시 전 속성 지정 및 설정 - debuggable = false (안하면 앱이 안올라가는거 아시죠) - app signing (빌드할 때 보통 자동으로 되지만 일단 넣었다.) - versionCode++ - versionName 지정 2. buildType 지정 후 build 진행 3. play console 에서 업로드 진행 4. 내부 테스트용 앱..