Android의 원시 리소스 대신 자산을 언제 사용해야합니까?


151

나는 안드로이드 연구의 한가운데에 있으며 자산과 원시 자원을 방금 다루었습니다. Raw resources vs. Assets를 사용하는 이유를 이해하려고합니다.

  1. 둘 다 컴파일되지 않은 리소스 입력 스트림을 제공합니다.

  2. 자산은 원시 자원보다 훨씬 더 많은 유연성과 기능을 제공하는 것으로 보입니다.

    ㅏ. 아래에서 폴더 구조를 만들 수 assets있지만 아래에서 만들 수는 없습니다.raw

    비. assets폴더에있는 것이 아니라 폴더 에 모든 리소스를 동적으로 나열 할 수 있습니다 raw.

그렇다면 왜 Android에서 Raw 리소스를 사용해야합니까?


답변:


182

사이의 주요 차이점 raw폴더와 assets폴더.

  • raw는 리소스 (res)의 하위 폴더이므로 Android는 ID그 안에있는 모든 파일을 자동으로 생성 합니다. 이것은 ID다음에 저장되어있는 R class이 쉽게 다른 안드로이드 클래스와 메소드에서, 심지어 안드로이드 XML 파일에 액세스 할 수 있습니다 의미하는 파일에 대한 참조 역할을 것이다. 자동 생성 된 ID를 사용하는 것이 Android에서 파일에 액세스하는 가장 빠른 방법입니다.

  • assets폴더가있다 "부록" 디렉토리. R 클래스 ID를 생성하지 않습니다 일부 안드로이드 클래스와 메소드 덜 호환이 배치 파일에 있습니다. String을 기반으로assets 폴더에 대한 핸들을 가져와야 하므로 폴더의 파일 액세스 속도가 느려집니다 . 그러나 데이터베이스 파일을 시스템 메모리에 복사하는 것과 같이이 폴더에 파일을 저장하면 일부 작업이 더 쉽게 수행됩니다. Assets 폴더 안의 파일에 대한 Android XML 참조를 만드는 쉬운 방법은 없습니다.


4
@ user370305 안녕하세요, 이제 새로운 Android OS에 1MB 제한이 있습니까? 이것에 관한 문서를 찾을 수 없습니다. 어디서 찾을 수 있는지 아십니까?
GMsoF

6
@GMsoF-이에 대한 특정 문서가 없습니다. 하지만 유용한 링크가 있습니다. 1. blog.rossgreenhalf.com/2010/12/13/android-file-size-limits 2. stackoverflow.com/questions/11276112/… 3. stackoverflow.com/questions/6809651/… 4. elinux.org/Android_aapt 그리고 5. android-developers.blogspot.in/2012/03/… Sr No.에 따라 진행하십시오.
user370305

2
@GMsoF- /asset디렉토리에 파일 크기를 1MB보다 크게 설정하는 많은 트릭이 있습니다 .
user370305

10
자산 폴더의 파일 크기 제한이 없었습니다. 그런 것이 확실합니까?
안드로이드 개발자

2
예, Android 2.2 또는 2.3 이전에는 압축되지 않은 크기가 1MB를 초과하는 압축 된 자산 파일을 APK에서 읽을 수 없습니다. 여기에 groups.google.com/forum/#!topic/android-developers/lguGFJD-JRs
user370305가

33

로부터 안드로이드 문서raw/디렉토리가 사용됩니다 :

원시 파일로 저장할 임의의 파일. 원시 InputStream으로 이러한 자원을 열려면 자원 ID ( R.raw.filename )Resources.openRawResource () 를 호출 하십시오 .

그러나 원래 파일 이름과 파일 계층에 액세스해야하는 경우 res / raw / 대신assets/ 디렉토리에 일부 자원을 저장하는 것을 고려할 수 있습니다 . asset /의 파일 에는 자원 ID가 제공되지 않으므로 AssetManager를 통해서만 읽을 수 있습니다 .


한 라인에서의 파일 raw/디렉토리가되는 플랫폼에서 컴파일되지 , 리소스 ID를 할당 하고 하위 폴더로 그룹화 할 수 없습니다 당신이 원하는 경우 그렇지 않으면 사용하는 반면, assets/디렉토리.


1
대용량 파일을 저장 폴더에 복사하려는 경우 원시 파일이 최선의 옵션입니까?
라이브 사랑

@ 40-Love 이전 버전을 지원하지 않는 한 Android 2.3 이상의 파일 크기에는 제한이 없습니다 . 요구 사항에 따라 저장소 폴더를 선택할 수 있습니다. 주요 차이점은 이러한 파일에 액세스하는 방법입니다.
프린스

1

위에 주어진 답변에 추가하는 중 ...

/ res / strings, / res / layout, / res / xml 파일 등은 모두 이진 형식으로 컴파일됩니다. 그러나 XML 파일을 포함한 파일을 / res / raw / 디렉토리에 배치하면 이진 형식으로 컴파일되지 않습니다.

원시 자원보다 자산을 사용하는 것의 큰 장점 중 하나는 file:///android_asset/ Uri 접두사입니다. 이는 자산을 WebView에로드하는 데 유용합니다. 예를 들어 프로젝트 내 asset / foo / index.html에있는 자산에 액세스하기 위해 loadUrl("file:///android_asset/foo/index.html")해당 HTML을 WebView에로드하는 것을 호출 할 수 있습니다 .


file:///android_res/접두사를 사용 하여 원시 리소스를 가리킬 수 있습니다 .
androidguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.