기본 콘텐츠로 건너뛰기

다들 차 한대씩은 있지?

최근 글

놀아달라고 20분째 투정하는 골든리트리버

놀아달라고 20분째 투정하는 골든리트리버 A Golden Retriever that has been sulking and asking to play for the past 20 minutes.

안드로이드앱 "매직미러"를 이용한 자세 교정(골프)

안드로이드앱 "매직미러"를 이용한 교정 영상입니다.

2 files found with path 'lib/x86_64/libc++_shared.so' from inputs: 오류 해결 방법

안드로이드스튜디오로 앱을 개발하는 과정에서 플러그인, 외부 라이브러리를 추가하다 보면 "2 files found with path 'lib/ x86_64 /libc++_shared.so' from inputs: "과 같은 오류를 만날 수 있다. 'lib/x86_64/libc++_shared.so' 파일이 2개의 라이브러리에서 참조되어 발생하는 문제로 컴파일 환경에 따라 플랫폼 부분은 변경되면 나타날 수 있다 app수준의 build.gradle 파일에 다음과 같이 처리하면 관련 문제를 깔끔하게 처리 가능하다. android { ... packagingOptions { pickFirst 'lib/ x86 /libc++_shared.so' pickFirst 'lib/ x86_64 /libc++_shared.so' pickFirst 'lib/ arm64-v8a /libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } ... } * 실제 내 앱소스내 코드임 * 위와 같이 컴파일 환경에서 제공하는 플랫폼별 참조를 전부 한번에 처리하는게 관련 오류를 원천 차단할 수 있는 방법이다.

안드로이브 뷰의 백그라운드 설정을 위한 2개 메서드 이용 방법

setBackgroundResource()와 setBackground()를 이용해서 Android 애플리케이션에서 View의 백그라운드를 설정하는 두 가지 방법입니다. 1. setBackgroundResource()    - 리소스 ID를 통해 백그라운드를 설정합니다.    - 파라미터로 리소스 ID를 받으며, 주로 R.drawable에서 제공하는 이미지나 그림 리소스를 사용합니다.      예를 들어, setBackgroundResource(R.drawable.background_image)와 같이 사용합니다.    - 이 메서드는 내부적으로 리소스를 로드하고, 해당 리소스를 백그라운드로 설정합니다. 2. setBackground()     - Drawable 객체를 통해 백그라운드를 설정합니다.     - 파라미터로 Drawable 객체를 받으며, ColorDrawable, BitmapDrawable, GradientDrawable 등 다양한 종류의 Drawable을 사용할 수 있습니다.       ( 예 : setBackground(new ColorDrawable(Color.WHITE))와 같이 사용합니다.     - 이 메서드는 주어진 Drawable 객체를 직접 백그라운드로 설정합니다. 위 두가지 메서드의, 주요한 차이점은 setBackgroundResource()는 리소스 ID를 통해 백그라운드를 설정하고, setBackground()는 Drawable 객체를 통해 백그라운드를 설정한다는 것입니다.

안드로이드 앱 버전 관리

AndroidManifest.xml 파일내 <manifest> 요소 안에서   <!-- 앱의 내부적인 버전 코드 나타냄. 정수값으로 설정되어야 하며, 각 버전은 고유한 값을 가져야 하며, 버전 코드는 앱의 업데이트나 배포를 관리하는 데 사용됨. -->  - android:versionCode: 2  <!-- 앱의 표시 버전 이름을 나타내며, 문자열로 설정되며, 주로 사용자에게 표시되는 앱 버전을 나타내는 용도로 사용됨. -->  - android:versionName: 1.2 ** 위 경우 구글 콘솔에서는 "2 (1.2)" 표기됨 ** 버전 코드는 릴리즈 순차 번호 관리하는게 편함 ** 버전 이름은 메이저 업데이트는 앞자리(1), 마이너 업데이트는 뒷자리(.2) 형식으로 구성하는게 일반적임    1.1.1.*등 세부적인 관리 체계에 따라 단계는 더 구분해도 됨

안드로이드 액티비티의 시스템 UI, 뷰 영역 제어

ActivityMainBinding    activityMainBinding = ActivityMainBinding.inflate ( getLayoutInflater ( ) ); activityMainBinding.getRoot ( ).setSystemUiVisibility (    //안전한 시스템 UI 레이아웃을 유지하도록 지정    //뷰가 시스템 UI의 변경으로 인해 크기나 위치가 변해도 안정된 레이아웃을 유지할 수 있다.    View.SYSTEM_UI_FLAG_LAYOUT_STABLE |           //뷰가 내비게이션 바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION      //뷰가 상태바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN      //내비게이션 바를 숨겨, 사용자의 터치나 제스처로 내비게이션 바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION     // 상태바를 숨겨, 사용자의 터치나 제스처로 상태바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_FULLSCREEN      //사용자가 액티비티의 화면 어느 곳이든 터치하면 시스템 UI가 일시적으로 표시되지만, 일정 시간이 지나면 다시 숨겨진다.    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); setContentView ( activityMainBinding.getRoot ( ) ); /* 결과적으로 위 코드를 통해 전체 화면을 차지하는 뷰를 만들고, 사용자가 화면을 터치하면 잠시 시스템  UI가 나타나도록 할 수 있다.