[Kotlin, Java] Android 10에서 파일 엑세스가 되지 않는 문제 해결

- EPERM 오류 해결하기 -


얼마전 개발 테스트 진행중 Android 8이나, Android 9에서 잘만 읽기/쓰기가 되던 파일이 Android 10에서 구동을 하니 에러만 열심히 뿜어내고 저장이 안되는 문제가 있었습니다.

로그창을 확인해보니 EPERM 오류를 뿜어내고 있었고, 저장이 되지않아 곤란해 하고 있었습니다.

특히 테스트를 하며 확인되었지만, READ_EXTERNAL_STORAGE 및 WRITE_EXTERNAL_STORAGE 권한을 유저에게 승인받고 있어서 유독 Android 10에서만 생기는 문제로 파악이 되었죠.

오늘은 이런 Android10으로 올라가면서 파일에 대한 읽기 쓰기가 되지않는 문제에 대해 다뤄보겠습니다.

 - 원인과 해결

Android 10 부터는 외부 저장소 액세스에 대해서 제한을 걸어두는 모양입니다.

해당 제한을 풀기 위해서는 AndroidManifest.xml에 requestLegacyExternalStorage의 값을 true로 설정해주어야합니다. (Android 10 이상을 타겟팅으로 하는 앱의 경우)

<manifest ... >

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  
  <!-- This attribute is "false" by default on apps targeting
  Android 10 or higher. -->
  <application 
  	android:requestLegacyExternalStorage="true" ... >
    
  ...
  
  </application>
</manifest>

 

* Android 10 이상에서는 외부저장소에 접근을 하기위해 requestLegacyExternalStorage 속성을 꼭 넣어주시기 바랍니다.

** 다만 해당 방법이 완벽히 해결을 할 수 있는 방법은 아니며, 추후 업데이트 되는 Android 버전에서는 동작하지 않을수 있으니 주의해주시기 바랍니다.

 

 - 참조

https://developer.android.com/training/data-storage/files/external-scoped?hl=ko#opt-out-of-scoped-storage

 

범위가 지정된 외부 저장소 액세스 관리하기  |  Android 개발자  |  Android Developers

사용자에게 파일의 더 많은 권한을 제공하고 파일이 복잡해지는 것을 제한하기 위해, Android 10(API 레벨 29) 이상을 타겟팅하는 앱은 외부 저장소로 범위가 지정된 액세스 또는 범위 지정 저장소��

developer.android.com

버전정보 (v1.0)

 - v1.0 2020.06.12 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

 

Karzin

abbeea@naver.com


샤오미 홍미 노트 4x에 Pixel Experience 10 설치 후 사용 후기


Pixel Experience 10 커스텀롬을 올리고

저의 샤오미 홍미 노트 4x가 완전히 바꼈습니다!

그냥 새로 태어났습니다!!

 

사용하며 생각나는 것들 몇개 정리해보았습니다. (계속 업데이트 예정)

 


더욱 아름다워졌습니다!

더욱 아름다워진 홍미 노트 4x


어두운 테마의 사용이 가능해 졌습니다!

어두운 테마의 사용이 가능해진 홍미 노트 4x


얼굴인식을 통한 잠금해제가 가능해졌습니다! (인식률 정말 괜찮습니다.)

얼굴인식 잠금해제가 가능해진 홍미 노트 4x (빠른속도, 높은 인식률!)


배터리 타임이 더욱 길어졌습니다!

(기분탓인지는 확인 필요)

배터리 런타임이 더욱 늘어난 홍미 노트 4x (확인필요)


- 이외에도 동작 애니메이션에 대한 버벅임이 많이 줄었고, 앱 실행속도가 훨씬 빨라짐을 느꼈습니다.

이는 개인적인 차이일 수 있으며, 더욱 자세한건 확인이 필요해 보입니다.

(제가 가진 홍미노트4x는 한대라서 비교는 어렵겠지만..) 

 

* 커스텀롬을 올릴 경우 디바이스에 문제가 생기면 자신이 책임져야 합니다. 많은 고민 후 커스텀롬을 적용하시기 바랍니다.

* 저작권등의 이유로 게시글 및 이미지 등 갑자기 사라질 수 있음을 알려드립니다.

 


나의 개발 장비들 (Android 디바이스)

- LeEco Le Pro3, 샤오미 Redmi Note 4x -


 

 

* 우선 아래 나오는 두 제품은 전부 제가 직접 직구를 해서 구매(제돈이 지출됬음을..)를 했음을 미리 알려드립니다.

 

개발을 하다보면 개발장비가 필수적으로 필요한 경우가 있습니다.

 

특히 Android에서 하드웨어(카메라 등)를 제어하는 부분이 아니라면 에뮬레이터로 어느정도 커버가 가능하겠지만, 보통의 경우는 그렇지 않은 경우가 허다합니다.

그럴 때 안드로이드 디바이스가 꼭 필요한 경우가 많은데, 저의 경우 테스트용 장비 두대를 구입해서 활용하고 있습니다.

 

그.래.서! 이번 게시물은 제가 활용중에 있는 개발장비(Android 디바이스) 2대를 소개할까 합니다.

(사실 좀 더 있는데 이번은 해외에서 직구한 녀석들만 소개할게요)

 

별건 없습니다만...

 

사용중인 개발 장비들(Android 디바이스)

사진 출처 : Karzin, 촬영 : 아이폰SE2, 좌 : LeEco Le Pro 3 / 우 : 샤오미 Redmi Note 4x / 키보드 : 로지텍 K780

 

- 장비 소개

> 좌측 디바이스(상단 사진 참고)

 - LeEco Le Pro 3

 - 사양

  -> AP : 스냅드래곤 821

  -> Memory : 4GB(RAM), 32GB(STORAGE)

  -> 운영체제 : Lineage OS 17.1.0 (Android 10)

 

> 우측 디바이스(상단 사진 참고)

 - 샤오미 Redmi Note 4x

 - 사양

  -> AP : 스냅드래곤 625

  -> Memory : 3GB(RAM), 16GB(STORAGE)

  -> 운영체제 : Pixel experience 10 (Android 10)

 

* 두 제품 다 운영체제는 제가 직접 올려둔 상태입니다.

 

개발용으로 저렴한 제품들을 구매를 했었는데 이게 전부 커스텀롬이 적용될지는 생각도 못했는데 커스텀롬을 이용해서 안드로이드 10을 사용중에 있습니다.(이득이득)

 

개발용으로 구입을 한 계기는 회사에서 주는 테스트장비로는 개발에 있어 여러모로 힘든게 많더라구요.

성능도 후지거니와, 어플 하나 구동하는데 버벅이는.. 이런 똥..

그래서 그냥 답답함을 이기지 못하고 플래그십 성능과 중간 성능을 골라서 구입하여 개발 테스트를 진행하고 있습니다.

한 2년정도 써먹었는데 아직도 쌩쌩한 현역이라 생각이 되는 제품들입니다!

 

 - 사용 후기

> LeEco Le Pro3

LeEco사의 Le Pro3를 구입할 때 당시 LeEco라는 회사가 간당간당 했던걸로 기억하고 있습니다.

(지금은 어떨지 모르겠네요.)

덕분에 폰을 굉장히 저렴하게 판매를 하고 있었구요.

당시에도 고스팩이었던 스냅드래곤 821을 굉장히 저렴하게 구매를 할 수 있는 좋은 기회였죠.(심지어 램도 4기가)

고민없이 질렀습니다.

전반적으로 고스팩에 저렴한 가격으로 운용을 하다보니 이래저래 개발용으로 막쓰기 용으로는 괜찮았습니다.(지금도)

무엇보다 제가 전화나 개인적인 용무를 사용하는 플래그십폰(당시 갤럭시 S8+)을 테스트용으로 사용하지 않아도 되었다는 점이 제일 마음에 들었었죠.(아시겠지만 개발용으로 쓰다보면 금방 고장이.. 나만 그런가..?)

가격도 스팩도 전부 마음에 들었지만 한가지 아쉬운게 있었다면 배터리였습니다.

이 친구.. 1년정도 쓰니까 배터리가 부풀어서(그니까 배터리 스웰링현상이라고들 하죠?) 한번 알리발 정품배터리를 구매해서 교체를 해준 기억이 있습니다.

다행히 교체작업은 어려운작업이 아니었고, 금방 교체를 하고서 지금도 현역으로 저의 모든 테스트 어플을 열심히 돌려주는 저의 즐겨찾기 장비가 되었습니다.

 

> 샤오미 Redmi note 4x

사실 샤오미는 구매 생각도 없다가 가격만 보고 지른 제품 중 하나입니다.

성능은 그냥저냥 준수한 편이고, 무엇보다 가격이 저렴해서 그거 하나만...

지르고 나서 후회를 한 케이스이기도 하네요.

개발용 장비로 사용을 하려면 샤오미 계정을 만들고 어플 설치 권한?을 줘야했던걸로 기억합니다.

(뭔가 그런게 있어서 빡쳐서 쳐박아 두었...)

이 후 여러 테스트장비를 사용해볼 필요가 있어서 다시 꺼내서 사용을 하려고 여러모로 연구(??)를 했고,

커스텀롬을 올려서 테스트용 장비로 다시금 태어나게 만들자! 라는 생각을 가져보았었죠...

근데 Unlock도 샤오미 계정이 있었어야했고, 심지어는 개통된 유심카드가 필요했지만, 어찌저찌 진행은 했습니다.

그러다 또 일이 하나 터지는게 Unlock을 하려면 신청을하고 몇일을 기다리는게 또 필요하더군요?

(빡쳐서 쳐박아 두었...x2)

사실 얼마전 너무 아까워서 생각난김에 Unlock을 진행했고, 다행히 날짜 기다리는 문제 없이 바로 Unlock이 되었습니다.

덕분에 커스텀롬 중에 Pixel experience 10 (Android 10)을 설치하여 사용할 수 있게 되었구요.

지금은 새폰처럼 Le Pro3와 함께 저의 모든 테스트용 어플들을 돌려주는 노예장비(...) 가 되었습니다.

지금이야 Unlock도 되었고, 커스텀롬이 올라가서 잊어버리고 살지만, 아마 개발용으로 추가 구입은 안하지 않을까 합니다(...) 물론, Android One기종은 예외겠지만요. 

 

지금은 카메라, 녹음 등 다양한 하드웨어 실험(?)에 사용중에 있습니다만, 두 제품 다 아직도 쌩쌩한게 사용할때마다 구입하길 잘했다는 생각이 듭니다.

앞으로도 개발용 장비로 오래오래오래(?) 잘 활용할 수 있었으면 좋겠네요.(제발 내 돈을 더 쓰게 하지 말아줘...)

+ Recent posts