GATT(Generic Attribute Profile)란? GATT(Generic Attribute Profile)는 BLE 연결을 통해 프로필 및 데이터를 주고받기 위한 방법을 정의합니다. 로우 레벨의 상호작용을 정의하는 GAP와는 달리 GATT는 실제 데이터 전송 절차 및 데이터 형식만을 다룹니다. 또한, 다른 업체에서 제작한 서로 다른 디바이스 간의 상호 운용성을 보장하는 SIG defined GATT-based profiles을 제공합니다. 올바르게 작동하려면 모든 표준 BLE Profile은 GATT을 기반으로 해야 하며 GATT를 준수해야 합니다. 따라서, 어플리케이션과 사용자는 데이터를 전송하기 위해 데이터의 타입을 정할 때 GATT 규칙에 따라 전송해야 합니다. GATT는 ATT(Attr..
Android Studio, IntelliJ, 맥 터미널에서 Gradle 프로젝트를 빌드할 때 혹은 .gradle 디렉토리에 대한 Permission 문제가 발생하거나 gradlew 명령어를 실행할 때 빌드 과정에서 에러가 발생할 때가 있습니다. 만약, ./gradlew가 실행이 안된다면 프로젝트 디렉토리에서 아래 명령어를 실행해서 실행권한을 주면 됩니다. $ chmod +x ./gradlew 만약, 빌드 과정에서 .gradle 디렉토리에 대한 권한 문제가 발생한다면 이유는 Gradle Build tool이 프로젝트를 빌드하는 과정에서 .gradle 디렉토리를 수정할 때 쓰기 권한이 없기 때문에 빌드하지 못하는 경우입니다. 그래서 아래 명령어로 프로젝트 디렉토리에 대한 권한을 주어서 외부 tool이 프로..
이번 포스트에서는 Gradle 빌드시에 Signing key를 서명하도록 설정하는 방법을 정리하겠습니다. Play store에 앱을 업로드하려면 Bundle 혹은 APK에 앱 서명을 해야합니다. 그래서 서명하기 위한 일반적인 방법으로는 [Build]-[Generate Signed Bundle / APK]에서 keystore 정보를 입력해주는 방법이 존재하지만 이 방법은 APK 생성할때마다 매번 입력해주어야 하므로 꽤 번거롭습니다. 또한, keystore에 대한 정보는 깃과 같은 외부 저장소에 올려서 노출되어서는 안되므로 주의해야 합니다. 그래서 이번 포스트에서는 Gradle의 sIgningConfings 설정을 통해 빌드시에 keystore로 안전하게 앱 서명을 하는 방법을 정리하겠습니다. gradle..
GAP(Generic Access Profile)란?GAP(Generic Access Profile)는 서로 다른 제조사에서 제작한 두 개 이상의 BLE 디바이스가 서로 호환되어 상호 운용할 수 있도록하는 프레임워크를 제공합니다. 즉, GAP는 서로를 검색할 수 있도록 이 프레임워크는 모든 BLE 디바이스가 구현을 해야합니다. 그러므로, GAP에서는 광고(Advertisement)와 연결 설정(Connection Establishment)등의 상호 운용성을 보장하며 BLE Device의 모드(Modes)와 역할(Roles), 프로시저(Procedures), 보안(Security)을 정의합니다. 두 개의 BLE 디바이스는 서로를 발견하기 위해서는 둘 중 하나는 광고(Advertising)을 해야하며 이 장..
BLE(Bluetooth Low Energy)란? Bluetooth는 마우스, 키보드 또는 PC와 같은 장치에서 근거리 케이블을 대체하기 위한 무선(wireless) 통신 기술로 시작되었습니다. 초기에는 당시 표준이었던 Bluetooth Classic(BR/EDR)이라는 기술을 사용했습니다. 하지만, Bluetooth Classic에는 큰 문제점이 있었는데 배터리가 빨리 소모된다는 단점이 있었고 많은 불편함이 있었습니다. 그리고 마침내 2010년에 Bluetooth 4.0이 새로운 Bluetooth의 표준으로 채택 되었고 Bluetooth Classic의 단점을 보완하여 훨씬 적은 전력을 사용하고 Bluetooth Classic과 비슷한 성능의 무선 통신이 가능해졌습니다. 당시 배터리 소모 문제는 Blu..