먼저 package와 resource는 저장하는 대상이 다릅니다 . package 는 클래스파일을 두는 곳이고 resource는 이미지, 앱에 사용하는 문자열 리소스(언어별로 지원가능), 폰트, 레이아웃 등 코드 외의 정적인 데이터를 보관하는 곳입니다. Resource 는 Android Studio의 ResourceManager 탭을 이용하시면 한곳에서 관리가 가능합니다.
Package읙 관리는 앱 아키텍쳐를 어떻게 두느냐에 따라 달라질 수 있습니다. 많은 개발자들이 선호하는 구조는
core/common -공통 사용 코드, Dependency Injection, Utility, Navigation
data - API, Database 관련 코드(DataSource)
domain - 비지니스로직 관련 코드 (Repository'/UseCase/Interactor)
presenter/ui - 화면 관련코드 (Activity, Fragment, ViewModel/Preseneter등)
와 같이 3개 레이어에 해당하는 상위 패키지(data/domain/presentention)를 두고 공통적으로 사용할 core/common 패키지를 두어서 유틸리티 관련 클래스 등 각 최상위 패키지에서 공통으로 사용할 코드를 위치시킵니다.
domain, data 패키지에는 업무에 따른 단위로 하위 패키지를 둡니다. 예를 들면, account, memeber, user, payment 등등. 업무에 따른 데이터타입으로 나뉜다고 볼 수도 있습니다.
presentation/ui에는 보통 화면별이나 기능(feature) 별로 패키지를 구성합니다.
home, dashboard, settings, account, transaction, login, onboard 등등과 같이요.
한 패키지 안에는 너무 많은 클래스를 두면 관리가 힘들므로 보기에 적절한 숫자까지만 위치시키는 것도 하나의 팁입니다.
구글에 아래와 같은 키워드로 검색을 하시면
android best project structure
개발자들이 어떤 구조를 선호하는지 더 자세하게 아실 수 있을 겁니다.