Incorporar um banco de dados no .apk de um aplicativo distribuído [Android
-
26-09-2019 - |
Pergunta
Minha pergunta é bem simples, mas não acho que a resposta seja ... tenho muito conteúdo em ter em meu aplicativo para fazê -lo correr corretamente, e estou pensando em colocar tudo isso em um banco de dados e distribua -o em um banco de dados incorporado com o aplicativo no mercado. O único problema é que não tenho idéia de como fazer isso. Sei que posso extrair um arquivo .db do Eclipse DDMS com o conteúdo do meu banco de dados, e suponho que preciso colocá -lo na pasta de ativos do meu aplicativo, mas como fazer com que o aplicativo o use para regenerar o banco de dados do aplicativo ? Se você tiver algum link para algum código ou ajuda, isso seria ótimo. Obrigado
Solução
Bem, para alcançar o que você está perguntando, você pode colocar o arquivo .db em seus ativos/ diretório e copiá -lo na primeira vez que iniciar seu aplicativo ...
final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db";
// Check if the database exists before copying
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {
// Open the .db file in your assets directory
InputStream is = getContext().getAssets().open("MyDatabaseFile.db");
// Copy the database into the destination
OutputStream os = new FileOutputStream(DB_DESTINATION);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0){
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
}
Onde "InitialisedAtabase" é um sinalizador indicando se o aplicativo foi lançado pela primeira vez.
Embora, se você estiver olhando para armazenar muitos dados, como mencionou: eu recomendo fortemente que você evite inchar o arquivo APK com ele e use a conexão com a Internet para baixar os registros do banco de dados (de um servidor hospedado) após o aplicativo ter sido lançado. Dessa forma, você pode mostrar uma barra de progresso indicando ao usuário por que eles estão esperando muito tempo para começar a usar o aplicativo. Fazer o APK especialmente grande geralmente impede as pessoas de instalá -lo em primeiro lugar.
Outras dicas
Você pode implementar a solução no meio da estrada: use a abordagem acima, mas em vez de distribuir o arquivo DB, coloque-o no servidor em algum lugar. Na minha experiência, obter arquivos é de apenas 10% do tempo de processamento, o resto dele é analisar e serializar imagens para DB