2014-10-13 3 views
0

최근에 일부 업데이트가 도착했습니다. 즉 Eclipse에서 Android Studio로 옮겨서 Gradle을 사용하기 시작했습니다. 게다가 내 타겟 API는 16에서 20으로 업데이트되었고 이전처럼 작동하지 않습니다.응용 프로그램에서 자산 파일에 액세스 할 수있는 위치는 어디입니까?

데이터베이스 파일을 가져 오는 응용 프로그램의 일부를 리팩토링하기 시작했습니다. 그러나 LogCat은 application/app/assets 디렉토리에 자산이 없음을보고합니다 (assetssrc 디렉토리와 동일한 레벨 임). dbfile.sqlite이 있습니다. 내가 확인으로

, 나는 자산 중 다음 사항이 없습니다 :

AssetManager assetManager = getAssets(); 
String[] assetFile = assetManager.list(""); 

for (int i = 0; i < assetFile.length; i++) { 
Log.d(PTAG, "Assets found [" + i + "]: " + assetFile[i]); 
} 

출력 : 데이터베이스에 대한

D/MainActivity﹕ Assets found [0]: images 
D/MainActivity﹕ Assets found [1]: sounds 
D/MainActivity﹕ Assets found [2]: webkit 

아무것도. 내 데이터베이스 파일을 어디에 두어야하는지, 응용 프로그램을 제공하는 방법을 알고 있습니까?

답변

-1

좋아, 신사 숙녀 여러분. 나는 대답을 얻었다.

com.android.support에서 하위 호환성을 확인하고 라이브러리를 가져 오는 경우 해당 폴더의 하위 디렉토리를 확인하십시오. appcompat-v7 및/또는 support-v4 일 수 있습니다. 그리고 해당 디렉토리에서 assets 폴더를 찾을 수 있습니다 : assetManager.list() 내 예제에서 참조하십시오.

요약 : API 4 및/또는 API 7에서 미리 정의 된 애셋을 사용하려는 경우 애셋이 com.android.support 아래의 각각의 하위 디렉토리에 복사되었는지 확인하십시오.

0

클래식 Android Studio 프로젝트에서 자산은 main 소스 세트의 assets/ 디렉토리 또는 적절한 경우 다른 소스 세트에 저장됩니다. 따라서 Android Studio 프로젝트에 프로젝트의 app/ 모듈에 앱이있는 경우 자산은 app/src/main/assets/입니다. 그런 다음 프로젝트의 다른 소스 세트의 자산과 Android 라이브러리 프로젝트에서 제공된 자산을 혼합하여 APK에 번들됩니다.

Here is a sample appSQLiteAssetHelper을 사용하여 응용 프로그램 데이터베이스를 패키징합니다. 데이터베이스는 databases/ 디렉토리에 app/src/main/assets/ 안에 있습니다.

Android APK, Built By Android Studio, Showing Assets

SQLiteAssetHelper 당신이 예상하는대로 자산을 선택할 수 있습니다 : 결과 APK는 당신이 기대 데이터베이스 권리가 있습니다.

이 프로젝트는 appcompat-v7을 사용하므로 과도 종속성을 통해 support-v4이 사용됩니다.

이제 에 자산을 배치 할 수 있습니다.하지만 자산을 어디에서 찾을 지 가르 칠 필요가 있습니다. 예를 들어, my CWAC-RichTextUtils projectrichtextutils 라이브러리 테스트 (androidTest)와 별도의 demo 모듈 사이에서 에셋을 공유합니다. 그 자산의 사본 두 장을 가지기보다는 프로젝트 레벨에 하나씩 가지고 있으며 각 모듈의 구성을 build.gradle 파일의 해당 자산으로 가리 킵니다.

관련 문제