데이터베이스 검사기

우리가 기다려온 라이브 데이터베이스 도구!

로컬 데이터베이스 생성 및 관리는 대부분의 모바일 앱의 핵심 구성 요소입니다. 그러나 SQLite를 직접 사용하든 Room 지속성 라이브러리를 통해 사용하든 Android 개발자는 실행중인 앱에서 데이터베이스를 검사하고 디버그하는 더 나은 방법을 요구해 왔습니다. 자세한 내용은 비디오를 보거나 아래 블로그를 읽으십시오.

(카나리아에서 현재 사용 가능) 안드로이드 스튜디오 4.1의 최신 버전이라는 새로운 도구와 함께 제공되는 데이터베이스 관리자 , 당신은 쿼리를 검사하고 실행중인 응용 프로그램에서 데이터베이스를 수정하는 데 도움이됩니다.

Database Inspector는 스프레드 시트를 편집하는 것처럼 데이터를 수정할 수 있도록 도와줍니다.

Database Inspector를 사용하면 데이터베이스의 데이터를 수정하는 것이 스프레드 시트를 수정하는 것보다 어렵지 않습니다. Room을 사용하고 쿼리 결과를 관찰하면 변경 사항이 앱에 즉시 반영됩니다!

이 게시물에서는 Sunflower 앱 과 함께 Database Inspector를 사용하여 일부 엣지 케이스를 테스트합니다. Sunflower는 Android Jetpack을 사용한 Android 개발 권장 사항을 보여주는 원예 앱입니다. 이 게시물을 읽으면서 저장소를 복제하고 따라가는 것이 좋습니다.

시작하다

Sunflower 앱의 UI에는 두 개의 탭이 있습니다. 내 정원에 식물을 추가하려면 내 정원에 사용할 수있는 식물을 나열 하는 식물 목록 탭을 살펴 보겠습니다 . 오른쪽 상단에는 필터 버튼이 있습니다. 이 버튼을 누르면 다음과 같은 식물 목록이 표시됩니다.

공장 목록을 필터링하려면 클릭하십시오.

분명히이 버튼은 몇 가지 기준에 따라 식물을 필터링합니다. 하지만 제가이 프로젝트에 익숙하지 않고 Database Inspector를 사용하여 필터링이 어떻게 작동하는지 알아 내고 싶다고 가정 해 봅시다.

Android Studio에서 Database Inspector를 열려면 메뉴 모음에서 View> Tool Windows> Database Inspector 를 선택해야 합니다.

메뉴 모음에서 View> Tool Windows> Database Inspector를 선택하여 Database Inspector를 엽니 다.

그러면 Database Inspector가 나타납니다.

데이터베이스 검사기 창

이제 API 레벨 26 이상을 실행하는 기기에서 앱을 실행 한 다음 드롭 다운 메뉴에서 앱 프로세스를 선택해야합니다.

드롭 다운 메뉴에서 실행중인 앱 프로세스를 선택합니다.

검사 할 앱 프로세스를 선택하면 데이터베이스 스키마가 아래 패널에 나타납니다. Sunflower 데이터베이스 테이블을 보려면 … / databases / sunflower-db 스키마 를 확장해야합니다 .

프로세스를 선택하면 앱 데이터베이스가 나열됩니다.

앱으로 돌아가서 필터링 된 식물 목록을 살펴 보겠습니다. 목록에는 아보카도 , 포도 , 오렌지토마토 가 포함되어 있습니다 . 식물 이름으로 식물 표를 정렬 할 수 있다면 Avocado 를 찾는 것이 어렵지 않을 것 입니다. Database Inspector가 그렇게 할 수 있는지 봅시다!

먼저 plants 테이블을 두 번 클릭 하여 데이터를 표시합니다. 데이터는 기본 페이지 크기 50으로 표시되지만 대신이 수와 더 짧은 결과 목록 사이의 페이지를 줄일 수 있습니다. 이름 열을 클릭하면 항목 이름에 따라 플랜트 테이블이 정렬 됩니다. 예상대로 아보카도 는 목록에서 멀지 않으며 테이블의 두 번째 행에서 찾을 수 있습니다.

데이터베이스 쿼리

의 데이터 항목을 보면 아보카도growZoneNumber는 재산 필터링을위한 응용 프로그램의 사용은 가능성이 높습니다. 이를 확인하기 위해 growZoneNumber ( Avocado의 경우 9)에 대한 쿼리를 실행 해 보겠습니다 . 실제로이 쿼리는 PlantDao.kt에 이미 존재하며 Room의 @Query 주석 에서 직접 쿼리를 실행할 수 있습니다 . 모든 @Query 주석에는 줄 번호 옆에 작은 실행 아이콘이 있습니다.

getPlantsWithGrowZoneNumber () 쿼리에 대한 실행 아이콘을 클릭하고 올바른 데이터베이스를 선택하면 : growZoneNumber 값을 묻는 팝업이 나타납니다 .

@Query 주석에서 직접 쿼리를 실행할 수 있습니다.

9를 입력하고 실행 을 클릭 하여 쿼리 결과를 볼 수 있습니다.

또는 내 자신의 쿼리를 입력하고 도구 창에서 실행할 수 있습니다. 이것은 DAO 인터페이스에 정의 된 쿼리에 제한되지 않기 때문에 더 많은 자유를 제공합니다. 내 쿼리를 실행하려면 SQL 실행을 클릭 하고 오른쪽에 새로 열린 탭에서 식물 데이터베이스를 선택합니다 .

SQL 실행을 클릭하고 앱 데이터베이스를 선택하십시오.

다음으로 데이터베이스 선택 드롭 다운 옆의 상자에 다음 쿼리를 입력하고 실행을 클릭 합니다.

growZoneNumber = 9 인 식물에서 * 선택

Database Inspector에서 SQL 쿼리를 실행할 수 있습니다.

여기있어! 필터가 켜져있을 때 표시되는 것과 똑같은 식물 목록이 있습니다.

데이터베이스 수정 및 디버그

Database Inspector를 사용하면 앱이 기기에서 실행되는 동안 앱 데이터베이스의 값을 수정할 수 있으므로 앱을 쉽게 디버깅 할 수 있습니다.

먼저, 정말 긴 식물 이름에 대한 앱 UI를 테스트하고 싶습니다. 데이터 소스를 변경하고 새 데이터로 데이터베이스를 새로 고치는 대신 Database Inspector를 사용하여 데이터베이스에서 직접 값을 편집합니다.

Database Inspector에서 데이터베이스를 편집 할 수 있습니다.

이제 셀을 편집 할 수 있으므로 이름을 Apple 에서 A 정말 특별한 유형의 Apple로 변경 하고 Enter 키를 누릅니다. 따라가는 경우 앱 UI에서 테스트하려는 길이로 원하는 것을 입력 할 수 있습니다.

앱에서 Room을 사용하고 쿼리 결과를 관찰하는 경우 변경 사항을 확인하기 위해 앱을 다시 시작할 필요가 없습니다.

이제 앱으로 돌아 갑시다. 우리가 아무것도하지 않으면 앱이 업데이트 된 데이터를 표시합니다! 앱에서 Room을 사용하고 쿼리 결과를 관찰하는 경우 (LiveData / Flow 사용) 데이터를 새로 고치기 위해 데이터베이스 쿼리를 트리거 할 필요가 없습니다. 그렇지 않으면 앱이 쿼리를 트리거하는 방법에 따라 앱을 다시 시작하거나 관련 활동 / 조각으로 다시 이동해야 할 수 있습니다. Database Inspector의 잠재력을 최대한 활용하려면 LiveData 또는 Flow를 사용하도록 앱을 마이그레이션하는 것이 좋은 이유가 될 수 있습니다.

앱을 돌아 보면 카드보기가 그렇게 긴 식물 이름을 처리하도록 설계되지 않은 것 같습니다. 나중에 수정하겠습니다. 다음 테스트로 넘어가겠습니다.

앱이 긴 텍스트를 잘 처리하지 않는 것 같습니다.

식물마다 물주기가 다르기 때문에 물주 기일이 지나면 어떻게되는지보고 싶습니다. 이렇게하려면 정원에 식물을 추가해야합니다. 하지만 먼저 Database Inspector에서 Live updates 확인란을 선택합니다 . 시 라이브 업데이트가 선택되어, 데이터베이스 관리자는 자동으로 앱이 데이터베이스하게 변경 표시됩니다.

라이브 업데이트를 선택합니다.

My Garden 탭 으로 돌아가서 AvocadoEggplant 와 같은 식물을 추가합니다 . 하지만 먼저 Database Inspector로 돌아가 garden_plantings 를 두 번 클릭 하여 테이블을 관찰합니다. 새 식물을 추가하면 garden_plantings 테이블의 데이터가 어떻게 자동으로 업데이트되는지 확인하십시오.

Database Inspector는 변경 사항을 자동으로 표시 할 수 있습니다.

이 두 식물은 물주기가 3 일입니다. 무슨 일이 일어나는지 확인하기 위해 3 일을 기다릴 필요가 없으므로 데이터베이스를 편집하고 last_watering_day를 변경 하겠습니다 . 다시 한 번 Database Inspector로 돌아가 garden_plantings를 두 번 클릭합니다 . last_watering_date은 테이블의 마지막 열입니다. 오늘 날짜 이전 언젠가 반영하기 위해 두 레코드의 값을 더 작은 값으로 변경하겠습니다.

데이터베이스에 대한 편집 내용을 즉시 볼 수 있습니다!

좋아, 내가 시간을 너무 많이 거슬러 올라간 것 같지만 내 테스트에는 여전히 작동합니다. 앱 UI가 마감일을 표시하는 데 문제가없는 것 같습니다. 향후 개발을 위해 급수 일이 지나면 사용자에게 경고를 추가 할 것을 제안 할 수 있습니다.

새로운 Database Inspector를 사용해보세요! 귀하의 생각을 알려주십시오. 문제가 발생하면 버그를 신고 하는 것을 잊지 마십시오 !

Suggested posts

Jetpack Compose로 IntelliJ IDEA의 스플래시 화면 모방

Jetpack Compose로 IntelliJ IDEA의 스플래시 화면 모방

IntelliJ IDEA의 최신 버전 (이 출판 당시 2021.1)에는 아래와 같이 다양한 색상의 모양을 포함하는 그리드를 기반으로하는 멋진 스플래시 화면이 있습니다.이 게시물의 목표는이 패턴을 모방 한 Jetpack Compose 컴포저 블을 구현하는 것입니다.

Related posts

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

Android 앱에서 멋진 맞춤형 목록 작성

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

이 기사에서는 항목을 다시 정렬 할 수있는 기능을 제공하는 RecyclerView를 구현하는 방법에 대해 알아 봅니다. 타사 라이브러리를 사용하지 않고이 작업을 수행 할 것입니다.

Google Play 인앱 리뷰

Google Play 인앱 리뷰

Google Play Core 라이브러리는 인앱 리뷰에 대한 지원을 추가하여 사용자가 앱이나 게임을 떠나지 않고도 평점과 리뷰를 제출할 수 있도록합니다. 이 문서는 메모장 앱 연구 사례를 통해 Android에서이 기능을 구현하는 방법과 Google Play 스토어에서 사용자의 가시성에 미치는 영향을 보여줍니다.

Android에서 나만의 AR 애플리케이션 만들기

Android에서 나만의 AR 애플리케이션 만들기

이 기사에서는 카메라에서 얼굴에 효과를주는 Android 애플리케이션을 실시간으로 작성하는 방법을 설명합니다. 여기서는 카메라 작업, 얼굴 찾기, 얼굴의 포인트 찾기 및 결과 그리기 등 모든 핵심 사항을 살펴 보겠습니다.

Gradle 종속성 : 메시 🤯

Gradle 종속성을 현명하게 관리하세요 !!

Gradle 종속성 : 메시 🤯

종속성이 증가 할 때마다 Gradle 파일을 관리하기가 어려워집니다. 이 블로그에서는 종속성을 다른 파일로 이동하고 유사한 종속성을 그룹화하여 관리하려고합니다.