2014-10-13 6 views
0

Недавно обновил некоторые обновления, то есть перешел из Eclipse в Android Studio и начал использовать Gradle. Кроме того, мой целевой API обновлен с 16 до 20, и все работает не так, как раньше.Где можно разместить файл актива для приложения?

Я начал рефакторинг части моего приложения, ответственного за выборку файла базы данных. Но LogCat не сообщает никаких активов в каталоге application/app/assets, (assets находится на уровне src), хотя мой 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 активы находятся в каталоге assets/ в вашем наборе main или в другом случае, если это необходимо. Итак, если ваш проект Android Studio имеет ваше приложение в модуле app/ проекта, активы идут в app/src/main/assets/. Затем они будут объединены с активами из других источников в вашем проекте, плюс те, которые были внесены в проекты библиотеки Android, и будут включены в ваш APK.

Here is a sample app, который использует SQLiteAssetHelper для упаковки базы данных с приложением. Он имеет базу данных в каталоге databases/ в пределах app/src/main/assets/. Полученный APK имеет право базы данных, где можно было бы ожидать:

Android APK, Built By Android Studio, Showing Assets

SQLiteAssetHelper способен подобрать актив, как можно было бы ожидать.

Обратите внимание, что в этом проекте используется appcompat-v7 (и поэтому support-v4 через транзитивную зависимость).

Теперь у вас есть может иметь свои активы, расположенные где-то в другом месте, если вы предпочитаете, но тогда вам нужно будет научить Грэдле, где их найти. Например, my CWAC-RichTextUtils project разделяет активы между тестами библиотеки richtextutilsandroidTest) и отдельным модулем demo. Вместо двух копий этих активов у меня есть один на уровне проекта, и я указываю конфигурацию каждого модуля на эти активы в своих файлах build.gradle:

sourceSets { 
    main { 
     assets.srcDirs = ['../testAssets'] 
    } 
} 
Смежные вопросы