라벨이 에러인 게시물 표시

[Android] MotionLayout 직계가 아닌 하위 View의 animation 미작동

이미지
MotionLayout 하위 View가 작동을 안한다. 어느 날과 같이 앱을 개발 중이었다. 나는 MotionLayout을 이용해서 유튜브의 미디어바와 같은 걸 만들려고 했다. 아래는 MotionLayout 계층 구조다. 계층 구조 이런 구조다. 열심히 만들어서 이제 애니메이션을 작동해보는데 ConstaintLayout은 작동을 하는데 View1, View2, View3은 내가 작성한 motion_scene처럼 작동을 안하는 것이다.  정확히 말하면 애니메이션은 작동을 하는데 View1, View2, View3의 사이즈와 위치 등과 같은 것이 적용이 안되었다.  그리고 2시간을 내다버리며 찾은 결과를 아래에 글로 쓴다. 사실 MotionLayout 적용할때마다 이러는거 같아서 글로 남긴다. MotionLayout은 직계 하위 View만 적용이 가능하다. 우선 View1, View2, View3이 Motion Scene에 작성한대로 작동안하는 이유는 MotionLayout의 직계 View가 아니라서다. 그렇다! MotionLayout은 직계 하위 View에만 영향을 미친다!! 그래서 ConstraintLayout는 MotionLayout 바로 하위에 위치해서 잘 작동했지만 View1, View2, View3은 MotionLayout의 직계 하위 View가 아니다. 그래서 작동을 안한거다.  그러면 어떻게 수정해줘야 할까?  보통 ConstraintLayout이 MotionLayout에 필요한 경우는 그 사이즈대로 하위 View의 위치를 제어하고 배경을 원하는 것으로 고정하기 위해서다. 그래서 나는 View1, View2, View3을 MotionLayout 하위로 이동시키고 ConstraintLayout은 프레임으로만 쓰기로 했다.  우선 아래는 수정 전 코드다. <? xml version ="1.0" encoding ="utf-8" ?> <layout> ...

[Android] 빌드 에러 - NoSuchAlgorithmException: Algorithm HmaxPBESHA256 not avaliable

이미지
에러 및 원인 AAB로 앱을 빌드하고 있는 데 갑자기 에러가 발생했다.  Android Studio 업데이트 전에는 빌드하는 데 문제가 없었다. 그래서 막연히 Android Studio 버전 문제라고 생각했다. 에러메세지는 위와 같이 떴다. 에러 메세지의 마지막 줄을 보면 NoSuchAlgorithmException: Algorithm HmaxPBESHA256 not avaliable 을 볼 수 있다. 이거 때문에 KeyStore에서 Key를 읽는게 실패했다는 뜻이다. 우선  HmaxPBESHA256 가 그렇다면 뭔지부터 확인해봤다.  HmaxPBESHA256 은 해시 기반 메세지 인증 코드(HMAC)를 사용하여 SHA-256 해시 함수를 암호화하는 기술이라고 한다. 이 알고리즘은 JDK 8 이상에서 지원한다. 최근 JDK에서도 이 알고리즘을 지원하다고 한다.  나는 각 버전마다 알고리즘이 동일하지가 않을 수 있다고 생각이 들었고 첫번째로 한 것은 JDK 버전을 확인했다. 동일하게 JDK 11.0.8을 사용했지만 이 방법으로는 계속 에러가 났다.  만약 JDK 버전을 동일하게 세팅을 했는데도 에러가 생긴다면 아래 방법을 참조한다. 해결 방법 우선 JDK 버전을 동일하게 설정했지만 같은 에러가 난다면 직접 JDK 경로를 지정해서 key를 생성한다. windows라면 cmd를 켜고 Mac이면 터미널을 연다. 아니면 Android Studio에 있는 Terminal에서 실행해도 무관하다. 1. JDK 경로 지정해서 Keystore 및 Key 생성 명령어 [JDK 경로]\bin\keytool -genkey -v -keystore [Keystore 경로] -keyalg RSA -keysize 2048 -validity 9125 -alias [키 이름] -storetype JKS 예시 C:\Java\jdk-11\bin\keytool  -genkey -v -keystore...