наконец я пришел к выводу с помощью Нареша (спасибо). Вот краткое резюме:
при первом запуске я пытался скопировать файл data.db объемом 1.6 Мб из ресурсов в папку /data.../databases, которой никогда не было Итак
OutputStream os = new FileOutputStream(destPath);
строка выдала ошибку. Но после этой строки мой экземпляр dbhelper называется getreadabledatabase, который создал папку баз данных по указанному пути. Android поместил БД с тем же именем, но без полезных данных. В моем методе copyDatabase я обновил его следующим образом:
InputStream is = getBaseContext().getAssets().open(assetsDB);
//when there is no databases folder fileoutputstream gives error,
//we have to make sure databases folder exists
DbAdapter temp = new DbAdapter(getApplicationContext());
temp.open(); //gets readable database: creates databases folder containing DB_NAME db
temp.close(); //since we don use this temp, we close
//this wont give error: because path is now exists (databases folder exists)
OutputStream os = new FileOutputStream(destPath);
//copying 1K bytes at a time
byte[] buff = new byte[1024];
это решение, которое я придумала. Кстати, размер бывшей sdk из 2.3 базы данных активов должен быть меньше 1 МБ. Это еще одна проблема, и мы нашли решение здесь