Android 数据库打包随APK发布

有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做好的数据库打包进我们的APK呢,其实很简单,就是把我们的数据库文件放到我们的手机里,所以不必局限在哪个地方写这个代码,在第一次创建数据库的时候可以,我觉得在软件起动页里效果更好一点,首先我们应该把事先写好的数据库文件比如 test.db放到res文件夹里的raw文件夹里,也可以放到assets里,因为这两个文件夹不会在生成APK的时候不会被压缩

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import com.android.qufu.dinner.MealActivityGroup;

import com.android.qufu.dinner.R;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.pm.ActivityInfo;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteException;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.Window;

import android.view.WindowManager;

import android.widget.ImageView;

import android.widget.TextView;

public class Loggin extends Activity {

public static String dbName="dinner.db";//数据库的名字

private static String DATABASE_PATH="/data/data/com.android.qufu.dinner/databases/";//数据库在手机里的路径

int alpha = 255;

int b = 0;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.login);

//判断数据库是否存在

boolean dbExist = checkDataBase();

if(dbExist){

}else{//不存在就把raw里的数据库写入手机

try{

copyDataBase();

}catch(IOException e){

throw new Error("Error copying database");

}

}

new Thread(new Runnable() {

public void run() {

initApp(); //初始化程序

while (b < 2) {

try {

if (b == 0) {

Thread.sleep(20);

b = 1;

} else {

Thread.sleep(50);

}

updateApp();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

}

//启动另一个Activity,一般不用

/*       public void updateApp() {

alpha -= 5;

if (alpha <= 0) {

b = 2;

if(true){

try{

Intent in = new Intent(Loggin.this,MealActivityGroup.class);

Loggin.this.startActivity(in);

Loggin.this.finish();

}catch(Exception e){

}

}

}

}*/

/**

* 判断数据库是否存在

* @return false or true

*/

public boolean checkDataBase(){

SQLiteDatabase checkDB = null;

try{

String databaseFilename = DATABASE_PATH+dbName;

checkDB =SQLiteDatabase.openDatabase(databaseFilename, null,

SQLiteDatabase.OPEN_READONLY);

}catch(SQLiteException e){

}

if(checkDB!=null){

checkDB.close();

}

return checkDB !=null?true:false;

}

/**

* 复制数据库到手机指定文件夹下

* @throws IOException

*/

public void copyDataBase() throws IOException{

String databaseFilenames =DATABASE_PATH+dbName;

File dir = new File(DATABASE_PATH);

if(!dir.exists())//判断文件夹是否存在,不存在就新建一个

dir.mkdir();

FileOutputStream os = null;

try{

os = new FileOutputStream(databaseFilenames);//得到数据库文件的写入流

}catch(FileNotFoundException e){

e.printStackTrace();

}

InputStream is = Loggin.this.getResources().openRawResource(R.raw.test);//得到数据库文件的数据流

byte[] buffer = new byte[8192];

int count = 0;

try{

while((count=is.read(buffer))>0){

os.write(buffer, 0, count);

os.flush();

}

}catch(IOException e){

}

try{

is.close();

os.close();

}catch(IOException e){

e.printStackTrace();

}

}

/**

* 初始化,这里是起始页的没有用

*/

public void initApp(){

}

}

时间: 2024-11-09 23:58:19

Android 数据库打包随APK发布的相关文章

Android studio使用心得(二)— 打包签名apk发布

1.—–Android Studio菜单   Build->Generate Signed APK 2.——Create new.. 3.——-跟eclipse里面一样,添加keystore 信息 4.————Finish   搞定收工! 0 您可能也喜欢: Android studio 使用心得(四)---android studio 多渠道打包(二) Android studio 使用心得(五)---代码混淆和破解apk Android studio 使用心得(一)---android st

Android 项目打包成apk文件

首先,要利用Android SDK 自带的kdytool生成keystore文件: keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore参数意义:-validity主要是证书的有效期,写100000天:空格,退格键都算密码. 在DOS里面的过程: (D:\Program Files\Java\jdk1.7.0_25\bin> keytool -genkey -

如何将Android程序打包成apk文件

1.生成keystore 按照下面的命令行 在C:\Program Files\Java\jdk1.6.0_10\bin>目录下,输入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore 参数意义:-validity主要是证书的有效期,写100000天:空格,退格键 都算密码. 命令执行后会在C:\Program Files\Java\jdk1.6.0_10\

Android Studio 打包生成apk

打开AndroidStudio,并且打开想要生成apk文件的项目.  点击工具栏上面的"Builder"   点击"Builder"之后在下拉菜单里面可以看到"Genarate Singed APK",点击这个选项!   之后会要求开发者输入相关的密钥文件和密码   如果开发者之前已经有了自己的密钥文件的话,此时会自动查询到以前的密钥文件(如果没有自动查询到也可以手动查找),找到之后输入密码就可以了,中途如果出错的话,那就可能是密钥文件配置不正确

Android Studio 打包生成 APK

1. 第一步 Build -> Generate Signed APK 2. 之后会要求开发者输入相关的密钥文件和密码 如果有则找到对应的 .jks 文件输入密码完成相应操作,否则则创建一个对应的 .jks 文件,我们则新建一个 .jks 文件 3. 申请一个新的密钥文件,点击上一个图片中“Create new...”即可打开新建密钥文件的对话框,在对话框中输入相应的信息即可 4. 回到刚才的页面填入刚才的密码点击 Next, 再次输入密码 5. 接着一般选择默认就行

Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用aapt命令生成R.java文件 2.用aidl命令生成相应java文件 3.用javac命令编译java源文件生成class文件 4.用dx.bat将class文件转换成classes.dex文件 5.用aapt命令生成资源包文件resources.ap_ 6.用apkbuilder.bat打包资源

react-native 打包成apk 文件

用android studio 打包成apk 文件 js build 执行: react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 进入Android studio 坐等 问?为啥要build js

android数据库(随apk一起发布数据库)

读取数据库+数据库版本更新 注意: a, 将随apk发布的数据库放在android工程下/res/raw路径下. b, 数据库文件存到手机上时,路径在/data/data/你的包名/databases下,其他路径则会出错. 需要直接在工程里新建数据库时,会继承SQLiteOpenHelper,但本文讲的是随apk一起发布数据库的情况,因此没有必要继承SQLiteOpenHelper,但也需要对test.db做一层包装,在对test.db进行包装的类对数据库进行操作. 编写程序的过程中经常改变数据

Win7平台下React-Native开发之Android项目打包发布流程

一.bundle文件 React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager.这个packager的主要功能是:1.监视当前目录下相关文件的改动:2.监听在本机的8081(默认)端口,为正确的请求提供相应的bundle文件.总结一点来说就是:bundle文件是根据项目目录下相应文件的最新内容来动态生成的,这样在开发过程中就能实时地观察我们修改JS文件所带来的程序的改变.因为这个bundle文件就是