如何对安卓进行增删改重打包
‘壹’ 手机如何压缩文件打包
以华为P40手机,EMUI10.1.0系统为例,手机压缩文件打包的方法:1、首先打开手机,找到手机自带的“文件管理”软件,点击进入。
2、接着在文件管理中,找到需要进行打包压缩的文件。
3、长按选择要压缩的文件,点击右侧的对勾即可同时选择多个文件。
4、选择完成以后,点击右下角的“更多”选项。
5、最后点击“压缩”进行文件的打包压缩保存即可。
以苹果11、ios14.2系统为例,苹果手机不支持手机压缩文件打包。
文件压缩包在安卓手机里打开的方法:
首先打开手机,点击“文件管理”图标,进入文件管理页面。然后在文件管理中找到“压缩包”选项,进入之后点击需要打开的压缩包。之后选择“用其他应用打开”后,即可对文件进行解压。
‘贰’ 如何更改安卓安装包的内置文件
工具:安卓修改大师、一个你要修改的app安装包(这里以贪吃蛇大作战为例)。
1、纯手选取一个要进行反编译的游戏或应用:点击安卓修改大师顶部的安卓游戏选项卡,打开的页面中找到任何一款想修改的游戏,例如,本示例将要修改的游戏为“贪吃蛇大作战”。
更改安卓安装包的内置文件需要反编译已经打包的APK安装包,此方法推荐使用“安卓修改大师”,可以在没有源代码的情况下,直接反编译安装包,通过修改代码实现添加和去除部分功能,也可以修改应用图标和应用程序名称。
‘叁’ 安卓studio解包修改重编译一个apk
1.查看APKTool的版本: 控制台输入apktool和apktool -version进行验证
2.反编缺渗译apk并修改代码:
在apk所在目录控制台输入下面指令,即可将文件名为source的apk反编译到outDir目录中
apktool d -o outDir source.apk
3.修改编译出的代码,可以更改res资弯扮备源,manifests等。如果修改版本号:打开输入目录outDir找到apktool.yml文件,编辑修改versionCode
4.重新打包 :
通过以下命令就可以将目录outDir中的文件重新打包为no_sign_result.apk
apktool b -o no_sign_result.apk outDir
5.重新签名:
使用如下命令进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore demostore.jks -signedjar result-signed.apk no_sign_result.apk yourkey
注:demostore.jks为签名文件、yourkey为签名的key、no_sign_result.apk为要埋毁签名的源文件、result-signed.apk为签名后的目标文件
‘肆’ 如何对android多媒体数据库进行增删改
Android四种存储方式: sharedpreference,file,sqlite,contentprovider。
1、SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
具体实现代码如下:实现存储,读取,清除,删除
效果图:
首先创建:// 首先拿到sharedpreference对象
mShared =getSharedPreferences(SHARED_MAIN_XML, MODE_PRIVATE);
存储:
private void write() {// 存入数据
savename = name.getText().toString().trim();
saveage = Integer.valueOf(age.getText().toString().trim());
Editor editor = mShared.edit();
editor.putString("name", savename);
editor.putInt("age", saveage);
// 保证操作的事务完整性
editor.commit();
}
阅读:
private String read() {// 从数据库里读取数据
namecontent = mShared.getString("name", "数据库里没有存储姓名");
agecontent = mShared.getInt("age", 0);
String reading = "姓名:" + namecontent + "\n年龄:" + agecontent;
return reading;
}
清除内容:
private void clear() {//清除内容
/** 开始清除SharedPreferences中保存的内容 **/
Editor editor = mShared.edit();
editor.remove("name");
editor.remove("age");
editor.commit();
}
删除文件:
private void delete() {//删除文件
/** 删除SharedPreferences文件 **/
Filefile = new File("/data/data/cn.csdn.activity" + "/shared_prefs/"
+ SHARED_MAIN_XML + ".xml");
if (file.exists()) {
file.delete();
Toast.makeText(this, "删除成功", Toast.LENGTH_LONG).show();
}
}
haredPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
2、File: 即常说的文件(I/O)存储方法,常用存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
下面实现:在本地data文件下使用自己生成的文件处理数据的新建储存 读取 删除
如果说不想把内容存在SharedPreferences中的话,我们可以自己写一个文件保存须要的数据,在这里我将文件保存在系统中的工程路径下。
跟上面布局一样,删除文件也一样,清除内容也查不多,下面只是简单的写和读的方法:
写:
17String
nameage="名字:"+name.getText().toString().trim()+"年龄:"+age.getText().toString();
try {
os = this.openFileOutput(SHARED_MAIN_XML, MODE_PRIVATE);
/* 把字符串转换成字节数组,写入文件中 */
os.write(nameage.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
/* 关闭文件输出流 */
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
读:
private String read() {
String nameage="";
// 打开文件输入流,
try {
is = this.openFileInput(SHARED_MAIN_XML);
/* 初始化字节数组 */
b = new byte[1024];
/* 从文件输入流中读取内容到字节数组中,返回内容长度 */
int length = is.read(b);
/* 把字节数组转换成字符串 */
nameage= new String(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return nameage;
}
很简单吧!!
3、SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:
NULL: 空值
INTEGER: 整数
REAL: 浮点数
TEXT: 字符串
BLOB: 大数据
它是一个轻量级的数据库、非常小 、 移植性好、效率高、可靠
在Android系统中提供了android.database.sqlite包,用于进行SQLite数据库的增、删、改、查工作。
创建与删除数据库
封装一个类去继承SQLiteOpenHelper
在构造函数中传入数据库名称与数据库版本号,数据库被创建的时候会调用onCreate(SQLiteDatabase db)
方法,数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db, int oldVersion,
intnewVersion)方法,可以方便的对软件游戏升级后做出相应处理避免覆盖安装数据库发生改变产生的错误。调用SQLiteOpenHelper
的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用
deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。
第一种:详细请看上一遍博客:android之利用SQLite数据库实现登陆和注册,http://blog.csdn.net/rhljiayou/article/details/7085347
下面介绍第二种:另一种添删改查操作
效果图:
布局文件很简单,在此不再给出!!
直接给创建数据库和表,增删改查的代码:
public class UserService {
private DatabaseHelper helper;
public UserService(Context context, String name, int version) {
helper = new DatabaseHelper(context, name, version);
}
public UserService(Context context, String name) {
helper = new DatabaseHelper(context, name);
}
public void insert(UserDao user) {// 插入数据
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.insert("user", "name", values);
sdb.close();
}
public void delete(int id) {// 删除数据
SQLiteDatabase sdb = helper.getWritableDatabase();
sdb.delete("user", "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public void update(UserDao user, int id) {// 更新数据
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.update("user", values, "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public Cursor select() {// 查询所有数据
SQLiteDatabase sdb = helper.getWritableDatabase();
return sdb.query("user", new String[]{"id as _id","username","password"},
null, null, null, null, null);
}
public UserDao find(int id){//按id查询数据
UserDao user=null;
SQLiteDatabase sdb=helper.getWritableDatabase();
Cursor cursor=sdb.query("user", new String[]{"id","username","password"},
"id=?", new String[]{String.valueOf(id)}, null, null, null);
if(cursor.moveToFirst()){
user=new UserDao();
user.setId(cursor.getInt(0));
user.setUsername(cursor.getString(1));
user.setPassword(cursor.getString(2));
}
cursor.close();
sdb.close();
return user;
}
}
插入数据:通过insert(String table, StringnullColumnHack, ContentValues
values)方法插入数据,其中参数含义分别为:
table: 目标表名
nullColumnHack:
指定表中的某列列名。因为在SQLite中,不允许不允许插入所有列均为null的记录,因此初始值有值为空时,此列需显式赋予null
values:ContentValues对象,类似于java中的Map。以键值对的方式保存数据。
‘伍’ 如何重打包修改androidmanifest
在AndroidManifest中修改了package之后,所有类都找不到R文件,解决方案就是将src目录下的包也改一下包凯山名即可递归修改了。 1. Ctrl+h >> file serach >> 输入原侍孙源包名(类型为*.java)>>Replace>>找到后输入要替换的包名 然后自己选择是全部替换还是部老态分替换. 2.直接修改出错的类所在的包的名称再改回来,这样就可以统一修改所有出错的类的package包名称
‘陆’ Android ROM包定制(解包,增删模块,打包)
以前刚用手机的时候,经常可以在玩机论坛上看到很多发ROM包的帖子,譬如什么大深度定制ROM,什么大深度深度精简纯净版ROM...相信很多喜欢搞机的都有见过这类帖子。后来自己不满每次刷机后都要手动设置一大堆东西,遂按照论坛上的教程改了Defy+的cm11的ROM,集成了绿色守护,默认允许安装未知来源的应用,默认电池百分号显示等等。时隔4年,又玩起了ROM包定制,感慨颇多
假设有一个名为update.zip的ROM包,我们要在Ubuntu下对它进行定制。首先把 system.transfer.list 和 system.new.dat.br (有些旧版的系统的镜像可能是system.new.dat)从update.zip解压出来,转成system.img(原始镜像格式),修改完后又按步骤打包回原来的格式。本文只写了system分区的定制方法,但是对于其他分区也是类似的,都要转成原始镜像格式后才能对它修改。如果使用 file system.img 命令来查看system.img文件信息,会得到类似下面的信息:
brotli -d system.new.dat.br
挂载后可以通过 df -h 来查看挂载点 /mnt/system 剩余空间有多少,如果没有剩余,就要对它进行扩容,下面的例子是给它增加128M的空间,扩容之前要先取消挂载
现在,可以在/mnt/system目录下根据自己的需求增删文件了
增删文件需要注意:
打包其实就是解包的逆过程
成功后会在当前目录下生成system_new.img。如果发生错误,根据错误进行调整参数,直到没有错误提示为止。
转换之前可以对之前解压出来的文件进行备份:
开始转换
成功后会在当前目录下生成system.transfer.list和system.new.dat
在有些刷机包里,它里面包含的system.img镜像是 sparse image 格式的,如果用file命令查看它的信息,显示如下:
对于这种格式的镜像,如果想把它挂载和修改,就要转成我们上面提到的raw image(原始镜像)格式,命令如下:
修改完成后,取消挂载,再使用下面的命令将 raw image 转成 sparse image :
相对于修改Android源码的方式,直接修改镜像的方法对PC配置要求低很多。如果我们只想增加一些现有的模块和删除不必要的模块,这是很好的方式。而且对于一些手机厂商,他们没有提供Android源码,我们就只能用直接修改镜像的方式来定制我们的ROM。修改ROM的方法是灵活的,总结下来就是,看见一个镜像,可以根据后缀名和file命令确认它的格式,看情况将它转成原始镜像格式并挂载,就可以修改了,修改后又转回它原来的格式,最后替换刷机包中原有的镜像
‘柒’ 安卓手机里的软件怎么打包成安装包
root后system/app下提取 没超级权限的话好像不行吧
‘捌’ 安卓如何把自己的系统打包成一个ROM
可以先刷入第三方recovery,推荐使用第三方移动叔叔recovery自带中文,操作方便。
刷入recovery后,按音量+-和电源键进入recovery,选择备份,recovery会将system目录下所有数据打包存放在SD卡根目录,文件较多需耐心等待,中途不可强行退出,以免备份的ROM出现问题。
后续想刷回来的时候先清下数据,再选择打包好的ROM刷机即可恢复。
‘玖’ 安卓怎么把本地游戏数据打包
1 方法一 用电脑下载数据包游戏
2 1.安装好apk文件后,下载数据包文件,存放至SD卡中。
3 2.先打开文件管理器,进入SD卡;
4 3.手机连接电脑,用电脑进入SD卡,新建gameloft文件夹,在里面新建games文件夹。即SDCARD/gameloft/games。(一般而言带数据包的游戏,80%都是GAMELOFT公司出品的大型游戏)
5 4.把下载的数据包,解压到games中就OK了。 如果上述方法不行,说明游戏为非Gameloft公司出品的android游戏,需要将数据包解压至游戏安装的目录下。 举例:比如极品飞车13是EA出品的Android游戏,就需要数据包解压到SD中的android/date/"游戏名称"的目录下,就可以运行了。具体的”游戏名称(英文)“在数据包下载的网页上,会有标注的。
6 方法二 用手机软件下载 这个办法相对简单很多,下载一个游戏或软件,启动后,打开手机WIFI(设置-无线和网络-WLAN)——因为是数据包游戏,开WIFI省流量。 搜索游戏名并下载,下载完成后,点击安装,游戏连同数据包将一次装好。在首次运行游戏时,建议将手机调成为飞行模式。 方法:按住手机关机键不放,选择飞行模式(即离线状态,无法上网和接打电话) 这是因为,有些游戏会对数据包进行验证。当顺利进入游戏画面后,就可以重新切换成标准模式了。 虽然数据包游戏相对而言比较麻烦,但是不论从游戏画面还是从游戏质量,都大大高于普通的游戏
‘拾’ android中如何对xml中存储的数据进行增删改查求完整的例子。谢谢
android中,不能直接访问和读取xml文件中的数据。 只能先把盯李xml的数据解析出来,存储在集合或者数据库里,再进行增删改笑判查,如需要将xml文件的内容更新,凯升迟就重写个文件替换。