기본 콘텐츠로 건너뛰기

글

라벨이 Android인 게시물 표시

2025년 9월 카카오 사태 프로필 미공개

2025년 9월 23일 카카오 사태가 벌어졌다.   나는 다행히 앱스토어 설정에 들어가서 자동업데이트를 비활성해서 이번 사태를 잠깐 피해갈 수 있었다.   하지만 유튜브를 보다보니까   이번에 업데이트를 이미 한 사람들에게 나의 프로필이 까발려 진다는 것을 알게되었다.   내 친구한테 알려지는 건 좋은데   카카오톡은 내가 전혀 모르는 사람이나 싫은 사람, 업무적인 사람들 연락처에 있는 모든 사람이나 전화 번호가 변경되서 모르는 사람들도 친구 목록에 표시가 된다.   그런 모든 사람들에게 내 사생활을 강제로 공개되도록 해버렸다는 거에 공포를 느꼈다.   프로필 탭으로 이동해서   내 프로필에서 오른쪽 상단에 설정 버튼이 있고 그걸 클릭하면   프로필 설정들이 있고 거기서 옵션들을 비활성 해주자   “프로필 인증배지 표시”, “내 프로필 검색”, “내 홈 표시” 모두 비활성 해줬다.   솔직히 앞으로 이번 사태 이전으로 롤백을 시키지 않는한 앞으로 프로필에 사진을 올릴거 같지 않다.   이미 앱은 배포가 되었고   이 사태가 벌어진 버전의 앱을 업데이트 하지 않고 사용하는 사람들이 많을것이다.   (보통은 앱을 배포 하고 강제로 업데이트 유도하지 않는 이상 앱을 업데이트 하지 않는 사람들이 많다.) 만약에 더 프로필 공개에 공포를 느낀다면 프로필에 올린 이미지들을 당장 지우자.   *추가* 숏폼과 오픈채팅을 합쳐놓은 것도 참 거지같은 짓을 한거라고 생각한다.   오픈채팅에 개발이나 다이어트나 여러가지 같은 관심을 가진 사람들이 단체 톡방에 들어가서 커뮤니티를 하고 계실거다.   나도 개발 단체톡방에 들어가서 대화를 하는데   왜 그걸 합쳐놔서   오픈채팅을 들어가기 위해서 무조건 숏폼을 강제로 봐야 한다는 건 참 별로다.   *추가 2* 벌서 온갖 야시시 하고 폭력적인 숏폼에 노출되고 있...

안드로이드 다른 앱에서 파일 받기 (공유, 다른 앱 열기)

안드로이드 다른 앱에서 파일 받기 (공유, 다른 앱 열기) iOS 앱을 개발하면서 다른 앱의 파일을 공유받을 수 있도록 설정을 할 수 있다.   안드로이드에서도 동일하게 다른 앱으로 부터 파일을 공유받고 우리 앱으로 가져와서 오픈하거나 처리할 수 있다.   *공유 파일 받기* 다른 앱에서 공유 받은 파일을 받으려면 아래 링크를 참조하면 된다.   https://developer.android.com/training/sharing/receive?hl=ko   *다른 앱 오픈 받기* 이 경우 인텐트 필터를 아래와 같이 설정을 해주면 된다.   <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/octet-stream" android:scheme="content"/> *받은 데이터 처리* 공유의 경우는 위 링크를 참조해서 코드에서 Action 으로 ACTION_SEND 또는 ACTION_SEND_MULTIPLE 인지 구분해서 처리하면 된다 .   다른 앱에서 열기를 통해 받은 경우는   val data: Uri? = intent. data if (data != null) {     try {         importFileData (data)     } catch (e: Exception) {} } 위 코드 처럼 바로 data 로 Uri 를 받을 수 있다.   ( 공유를 통해서 받는 경우는 data 는 null 이다 .)

안드로이드 다른 앱에서 파일 공유 또는 열기로 실행될 때 기존에 실행중인 엑티비티(앱) 으로 오픈되도록 하는 방법

안드로이드 다른 앱에서 파일 공유 또는 열기로 실행될 때 기존에 실행중인 엑티비티(앱) 으로 오픈되도록 하는 방법 다른 앱에서 파일 공유 또는 열기로 특정 파일을 우리 앱으로 열기를 시도하면   항상 새 엑티비티로 열리는 현상이 있다.   이 경우 androidmanifest.xml 안의 activity 에 특정 항목을 추가하는 것으로 개선할 수 있다.   android:launchMode="singleTask" 해당 옵션을 추가하면 파일 공유 또는 다른앱으로 열기를 통해서 우리 앱을 오픈 하는 경우 기존에 우리 앱이 이미 실행 중이라면 그 실행 중 상태에서 오픈된다.   즉 새 앱 또는 엑티비티가 생성되지 않는다.   다만 이 경우는 기존 처럼 onResume() 로 intent 가 들어오지 않는다.   그래서 onNewIntent 를 override 해서 intent 를 받을 수 있다.   다른 앱에서 열기의 경우는 onResume() 과 onNewIntent() 에서 모두 들어오는데   이왕 onNewIntent() 에서 한번에 처리하는게 좋을 듯 하다. 참고 사이트 : 안드로이드 작업 및 백 스택 이해   https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko   참고 사이트 : Android Activity 옵션 (androidmanifest.xml) https://developer.android.com/guide/topics/manifest/activity-element?hl=ko#clear   참고 사이트 : Android 최근 화면   https://developer.android.com/guide/components/activities/recents?hl=ko

갤럭시 기기에서 SMB 서버 접속 및 파일 탐색 방법

갤럭시 (안드로이드) 기기에서 SMB 접속 하고 그 파일 탐색을 하는 방법에 대해서 정리   갤럭시 기본 앱 중 “내 파일” 앱 오픈   메뉴 중에 “네트워크 저장공간” 클릭   “네트워크 저장공간 추가” 를 선택하면   FTP/SFTP/SMB 중에 하나를 선택해서 추가가 가능   SMB 는 내부 네트워크에서만 가능하기 때문에  현재 SMB 서버와 같은 내부 네트워크에 (보통 와이파이) 접속된 상태에서 시도해야 SMB 검색과 접속이 가능하다

Key was created with errors:경고: 다른 저장소 및 키 비밀번호는 PKCS12 KeyStores에 대해 지원되지 않습니다. 사용자가 지정한 -keypass 값을 무시하는 중입니다. 에러 처리 방법

Key was created with errors:경고: 다른 저장소 및 키 비밀번호는 PKCS12 KeyStores에 대해 지원되지 않습니다. 사용자가 지정한 -keypass 값을 무시하는 중입니다. 에러 처리 방법   안드로이드 키 생성 시에   키스토어 암호와 키 암호를 같게 해주면 해결된다.   나 같은 경우는 키스토어 암호화 키 암호를 다르게 해서 문제가 발생  

Play 스토어 앱에서 개발자 모드 활성화 - 내부 테스트

 플레이스토어를 통한 내부 테스트 시에 "Play 스토어" 앱을 통해서 설치를 해야 하는데  그 전에 "Play 스토어" 앱 개발자 모드를 활성화 해줘야 한다.  1. "Play 스토어" 앱 오픈 2. 오른쪽 상단에 계정 아이콘 클릭 (클릭하면 팝업 표시됨) 3. 하단에 "설정" 항목 클릭  4. 목록에서 "정보" 클릭  5. 표시된 "정보" 목록 중 "Play 스토어 버전" 을 연타 6. "개발자가 되셨습니다." 라는 메시지가 표시되면 성공  7. 그 후에 "일반" 항목으로 이동  8. "내부 앱 공유" 항목을 ON 으로 변경

안드로이드 - 갤럭시 개발자 모드 변경 방법

 안드로이드 기기 특히 삼성 갤럭시 기기에서 개발자 모드 변경 방법 정리  1. 기기 설정으로 이동  2. 휴대전화 정보 이동  3. 소프트웨어 정보 이동  4. 빌드번호 탭을 7번 연타 이렇게 하면 활성화 된다.  그럼 기기 설정 목록 하단에 "개발자 옵션" 항목이 생기며  "USB 디버깅" 목록을 ON 할 수 있다. 

전체화면 (시스템바 숨김) 에서 뷰가 키보드위로 이동하지 않을때 처리 (adjustResize 가 먹히지 않는 경우)

안드로이드에서 하단의 시스템 바를 숨김 처리해서 전체화면으로 쓰는 경우에서  텍스트 필드 클릭 시에 키보드가 표시되고  그 텍스트 필드 레이아웃이 키보드 위로 이동하지 않는  즉 기존 위치를 유지하는 경우가 있다.  adjustResize 가 동작하지 않는 것 처럼  이 경우 해당 레이아웃의 상위 레이아웃에  fitsSystemWindows 옵션을 true 로 선언해주면 된다.   

NDK 코드를 Objective-C Xcode 에 적용 시 유의 사항 정리

NDK opengle c++ 코드를 iOS Xcode 에 적용하면서 몇 가지 사항을 정리 Build Active Achitecture Only NO Enable Bitcode NO Complie Source As Objective-C++ C++ Standard Library libstdc++ (GNU C++ standard library) Other Linker Flag -all_load -ObjC Header 파일 아래 처럼 #ifdef __cplusplus 와 #endif 로 묶어 줘야 함 #ifdef __cplusplus extern "C" { #endif .. 코드 .. #ifdef __cplusplus } #endif #Define 정의 jni 변수를 obj-c ++ 에 맞게 변경 #define LOGI( s, ... ) NSLog( @"LogI : %@", [NSString stringWithFormat:(s), ##__VA_ARGS__] ) #define LOGE( s, ... ) NSLog( @"LogE : %@", [NSString stringWithFormat:(s), ##__VA_ARGS__] ) #define jboolean bool #define jint int #define jsize NSUInteger #define jobject id #define jfloat float #define jintArray NSArray* #define jfloatArray NSArray* #define jobjectArray NSArray* #define delete delete[] JNIEXPORT 와 JNICALL 은 모두 찾아서 삭제

static 라이브러리(또는 C/C++ 코드)를 swift 에 넣는 꼼수

swift 에는 static 라이브러리를 추가 할 수 없다. static 라이브러리 (.a 파일) 이나 c++/c 코드를 같이 swift 에 추가 하기 위해서 한 가지 꼼수는 static 라이브러리와 c/c++ 코드를 포함하는 Objective-C Framework 를 생성해서 추가 하고 swift 프로젝트에 Framework 를 추가하면 swift 에서도 c/c++ 파일이나 .a 파일의 라이브러리를 사용할 수 있다. 이번에 freetype 라이브러리와 c++ 로 된 Android opengl 코드를 그대로 swift 에 적용하면서 처음에 구상을 했고 실제로 만들어보니 잘 동작 했다. !!

Android : Executing tasks: [:app:assembleRelease] release apk 파일 생성이 되지 않는 문제 대처방법

안드로이드 스튜디오 버전도 올리고 플러그인 버전도 올리다가 Generate Signed APK ... 메뉴를 통해서 배포하기 위한 apk 파일을 생성하려고 하는데 debug 파일은 만들어지는데 release 파일이 생성되지 않고  안드로이드 스튜디오에서는 Executing tasks: [:app:assembleRelease] 만 출력되고 멈춰버리는 증상이 발생한다. 이런 경우 dependencies { classpath 'com.android.tools.build:gradle:1.3.1' // classpath 'com.android.tools.build:gradle:1.5.0' } 위의 코드 처럼 1.5.0 -> 1.3.1 로 버전을 내려주자 그러면 정상적으로 release.apk 파일이 생성이 된다. 왜 발생하는지는 정확히 모르겠다. 다만 다음 버전에서 수정되길 ...

android : photoView proguard 적용

프로가드를 사용하는 프로젝트에서 photoView 라이브러리를 사용하는 경우 프로젝트 내부의  proguard-rules.pro  파일 안에 아래와 같이 입력해주면 됨  -dontwarn uk.co.senab.photoview.** # PhotoView 라이브러리 -keep class uk.co.senab.photoview.** { public *; }

android : com.google.android.gms:play-services:8.1.0 변경 후 proguard 에러 문제

안드로이드 스튜디오를 1.4 로 업데이트 후 구글 플레이 라이브러리를 8.1.0 으로 업데이트 하고 프로가드( proguard )를 적용한 앱의 경우 빌드를 하면 에러가 발생 한다 그럴 경우 프로젝트 내부에 있는  proguard-rules.pro 파일 에 아래 항목들을 추가해보자 -dontwarn org.apache.http.** -dontwarn com.google.android.gms.** -keep public class com.google.android.gms.** { public *; }

Android : Warning:com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced method ... 에러 발생 시

앱 빌드시에 Warning:com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced method … 로 시작하는 에러가 발생을 하면 GooglePlayService 라이브러리를 최신 버전으로 업데이트 해줘야한다 안드로이드 스튜디오는 친절하게 build.gradle 파일의 dependencies 부분에 적혀있는 라이브러리에 마우스 커서를 위치시키면 아래와 같이 팝업으로 최신 업데이트 내역을 알려준다 2015년 10월 현재 최신 버전은 8.1.0 으로 나오니 compile 'com.google.android.gms:play-services:8.1.0' 이렇게 변경을 해주자

Android : ViewPager 라이브러리 사용시 java.lang.IllegalArgumentException: pointerIndex out of range 에러 해결책

ImageView 줌이 라이브러리 중에 ViewPager 라이브러리를 사용을 해봤는데 줌을 늘리는 부분이 아니라 아주 작게 줄이기 시작하면 java.lang.IllegalArgumentException: pointerIndex out of range 에러가 발생을 하면서 앱이 계속 죽는 문제가 발생 구글링?? 에서 저 해결책이 ViewPager 를 상속하는 별도의 클래스를 만들고 그 클래스 안에 아래와 같이 함수를 하나 넣어주면 해결이 된다는 것 발견 !! @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super .onInterceptTouchEvent(ev); } catch (IllegalArgumentException e) { e.printStackTrace(); return false ; } } 그래서 xml 안에서 아래와 같이 별도로 만든 클래스 경로로 바꿔주면 에러가 해결되는 것을 확인할 수 있다. (기존 소스는 별도로 바꿀 필요가 없다) 클래스 경로는 노출 방지를 위해서 xx 처리 < com.xxxxx.util.DetailViewPager android :id= "@+id/pager" android :layout_width= "match_parent" android :layout_height= "match_parent" android :layout_weight= "1" android :visibility= "visible" />

compile 'com.android.support:appcompat-v7:23.0.1' 에러 발생 시

이번 안드로이드 스튜디오를 1.4로 업데이트 후 sdk 23 (마시멜로) 를 타겟으로 개발을 할 수 있다. 기본 라이브러리 들을 23.0.1 버전으로 올리면 (compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:support-v4:23.0.1') 빨간 줄(에러)이 발생을 한다 그럴 경우 아래와 같이 변경해준다 compileSdkVersion 23 buildToolsVersion "23.0.0" 그러면 라이브러리에서 에러가 발생하지 않는다 buildTools 은 23.0.0 버전이 최신 버전이고 (2015년 10월 초 기준) Plugin for Gradle Release  버전은 아직 1.3.1 이 최신이다 (classpath 'com.android.tools.build:gradle:1.3.1') 변경 후에도 NDK 는 별도의 에러는 발생하지 않는다

Android Studio 1.3.0 NDK 에러

이번에 안드로이드 스튜디오가 업데이트 되면서 아래 처럼 설정 파일에 1.3.0 으로 바꿔주면 NDK 를 적용한 프로토콜에서 에러가 발생한다 classpath 'com.android.tools.build:gradle:1.3.0' 발생하는 에러는 아래와 같은데 Error:(15, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration. useDeprecatedNdk 옵션을 줘야한다는 이야기 갔다.(영어 잘 못함) Project 의 gradle.properties 파일안에 android.useDeprecatedNdk=true 를 입력해주고 안드로이드 스튜디오를 끄고 재시작을 해보자 그러면 에러가 발생하지 않고 정상동작을 한다.

Android 가끔 리스트뷰 셀이 클릭이 안될 때

안드로이드를 개발하면서 리스트뷰의 셀이 클릭이 먹히지 않는 경우가 있는데 이런 경우는 셀 안에 있는 ImageView, ImageButton, Button 등의 모든 것에 대해서 focusable 을 false 바꿔서 포커스를 가지지 못하도록 해주면 클릭이 정상적으로 먹힐 가능성이 있다.

android.os.TransactionTooLargeException 에러

안드로이드 앱을 개발 중 android.os.TransactionTooLargeException 에러가 갑자기 발생했는데 원인은 Activity 를 실행할 때 intent 에 데이터를 넘겨주는데 일정 크기 이상 큰 데이터를 넘기게 되는 경우 위와 같은 에러가 발생을 하게 된다. 그런 경우는 Singletone 을 사용해서 데이터를 넘겨주거나 (내가 사용한 방법) 아니면 다른 방법들을 찾아서 intent 를 통해서 일정 사이즈의 데이터를 넘겨주지 않으면 발생하지 않는다.

ViewPager 에서 하위 Fragment 에 데이터 전달

V4 라이브러리를 사용해서 ViewPager 를 구성하고 하위 페이저에 데이터를 각각 전달하려고 하는 경우 Bundle 을 사용하면 된다 우선 페이저 아답터는 FragmentStatePagerAdapter 를 사용한다 그리고 아래처럼 Fragment instantiate 를 할 때 Bundle 을 전달해주고 Fragment. instantiate ( mContext , info. clss .getName(), info. bunlde ); Fragment 의 onCreateView 에서 아래 처럼 사용하면 된다, Bundle bundle=getArguments();

맥에서 안드로이드 디컴파일 방법 정리

개발 시 프로가드를 적용하고 적용 여부를 확인해보기 위해서 디컴파일을 하는 것이므로 악용은 하지 맙시다. 꼭 !!!! 참조 사이트 참조사이트 링크 1 참조사이트 링크 2 맥에서 안드로이드 디컴파일 방법 정리 dex2jar 를 다운로드 받는다 https://github.com/pxb1988/dex2jar 압축을 풀고 터미널에서 설치된 폴더로 이동 sh dex2jar.sh <apk 파일이 설치된 경로> 를 입력해서 apk 파일을 jar 파일로 만든다 다만 이때 sh 파일 permission 에러가 나는 경우가 있다. 그런 경우 설치된 폴더 내부에서 아래 문구 입력 chmod a+x *.sh 다시 실행하면 정상적으로 dex2jar.sh 파일이 위치한 경로에 jar 파일이 생성되어 있는 것을 확인 할 수 있다. JD-GUI 를 다운받아서 설치하자, 아래 링크로 이동을 해도 되고, 구글에서 JD-GUI 로 검색을 해도 된다. http://jd.benow.ca/ JD-GUI 파일로 에러가 나면서 잘 안 열리면 jar 파일을 zip 파일로 바꾸고 압축을 풀어서 내부의 class 파일 중에 하나를 JD-GUI 로 열면 볼 수 있다.