본문 바로가기

소프트웨어/안드로이드

(17)
NDK java.lang.UnsatisfiedLinkError minSdkVersion 22 문제 Native Library를 포함한 Third party 라이브러리를 사용한 프로젝트를 진행하고 있었고 알파 버전으로 플레이스토어에 올리는 작업 단계였습니다. 제가 사용하던 핸드폰은 갤럭시 S10e인데 얼마 전 Android-12(SDK 31)로 업데이트를 해두었죠. 불행중 다행으로 이 업데이트로 해당 이슈를 인지할 수 있었습니다. 업데이트 후 며칠정도 시간이 지난 후 알파 버전이 제대로 돌아가는지 문득 떠올라 구동을 해봤고 아주 시원하게 앱이 크래시가 났습니다. 우선 특정 버전에서 문제가 되는 것인지 하여 갤럭시 노트5, Android-9(SDK 29)에서 동일한 버전으로 테스트하였고 여기서는 정상적으로 동작을 하였습니다. Android 12가 문제일 것이라 생각하였으나 해당 라이브러리의 샘플 프로젝트..
[Android Studio] 안드로이드 스튜디오 여러 버전을 한 PC에 설치 TLDR; 신규 프로젝트를 위한 Android Studio Update가 필요! 어?? 안 되잖아? 안돼! 🤣 각 버전 별 IDE를 두개로 설치해서 쓰자! ??? PROFIT!!! Windows 10 기준으로 작성한 내용입니다. 참고해주세요. Butterknife Deprecated 소식이 좀 늦은 감이 있지만 Buffter Knife가 공식적으로 deprecated되었습니다. View binding을 사용하라고 합니다. 기존 프로젝트에서도 Butter Knife가 잘 동작은 하지만 새로운 프로젝트에 Butter Knife를 차마 사용하기가 좀 그렇습니다. 최신 Android App 개발 패러다임에 맞는 다른 요소를 사용하기에도 필수적이기도 하구요. 단, 이걸 써먹을라면 한 가지 조건이 있습니다. 어....
[Android] AVD 이미지 위치 변경 Windows에서 안드로이드 SDK 설치를 별 다른 설정 없이 진행하면 에뮬레이터의 설치 위치는 다음과 같은 위치에 설치가 됩니다. C:\Users\유저이름\.android\avd AVD를 한개만 사용하는게 아니기 때문에 디스크 용량을 꽤나 많이 차지하게 됩니다. 이럴 경우 보조 드라이브에 AVD 이미지 파일을 이동하고 경로 설정만 지정해주면 용량 확보에 도움이 될 것입니다. 1. AVD 이미지를 생성합니다. 1-1. Tools > AVD Manager > Create Virtual Device... 1-2. 이미지 리스트의 우측 화살표 클릭 > View Details에서 생성된 이미지의 경로를 확인합니다. path 에서처럼 현재는 이미지가 C:\에 위치해 있습니다. 실제로 C:\Users\유저이름\.a..
[Android] AVD 실행 안되는 경우 지금까지 에뮬레이터를 잘 쓰다가 API 29 에뮬레이터를 생성해서 실행시키려니 아래와 같은 문제가 발생하였습니다. error while loading state for instance 0x0 of device 'goldfish_pipe' 오후 4:11Emulator: C:\Users\oysu\AppData\Local\Android\Sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: error while loading state for instance 0x0 of device 'goldfish_pipe' 오후 4:11Emulator: deleteSnapshot: for default_boot 오후 4:11Emulator: Process finished wi..
[Android/Kitkat] 로케일 변경 시 CheckBox 텍스트가 업데이트 되지 않는 현상 해결 1) onResume에서 텍스트를 업데이트 @Override protected void onResume() { checkBox.setText(R.string.text); } 2) CheckBox 상속한 Custom View에서 onRestoreInstanceState 수정 public class MyCheckbox extends CheckBox { public IBCheckbox(Context context) { super(context); } public IBCheckbox(Context context, AttributeSet attrs) { super(context, attrs); } public IBCheckbox(Context context, AttributeSet attrs, int defSty..
[Android] Windows 개발 소스를 Linux에서 빌드할 때 주의사항 Windows 10에서 안드로이드 프로젝트를 진행하고 있었습니다. 그러나 어느날 문득 apk/so 배포가 너무 귀찮아서(몇분 안걸리긴함..) Ubuntu에 Docker올리고 Jenkins를 설치하여 빌드 자동화 구성을 하였으나 빌드 Fail이 자꾸 발생하였습니다. 감떨어졌나? Git checkout도 성공적이었고 Gradle wrapper도 잘 동작하였고 ANDROID_HOME도 잘 찾았으며 Android SDK까지 기존 윈도우 환경과 동일하게 세팅했는데??? 약간의 삽질 끝에 찾아낸 원인은 다음과 같았습니다. "대소문자" 제 경우에는 총 두 군데에서 문제가 발생하였는데 다음과 같았습니다. IAIDLHelper.aidl IAIDLHelper.aidl 파일 내에는 interface IAidlHelper로 ..
[Android] MVVM Anti Pattern 참고용으로 저장합니다. https://dhha22.github.io/androidgi/2020/05/12/mvvm_anti_pattern.html MVVM Anti Pattern MVVM Architecture을 적용할 때 피해야할 패턴에 대하여 다뤄보도록 하겠습니다. dhha22.github.io
[안드로이드] 코드에서 Ping 확인 Java /** * @return 0: success, 1: fail, 2: error */ public static int ping(@NonNull String host, int timeout) throws InterruptedException, IOException { int res; Runtime rt = Runtime.getRuntime(); Process process = rt.exec(String.format(Locale.US, "ping -c 1 -W %d %s", timeout, host)); // 0: 성공, 1: 실패, 2: 에러 res = process.waitFor(); // ~~ // shell 명령 출력 값 확인용입니다. 없어도 되요 BufferedReader br = new B..