如何對安卓進行增刪改重打包
『壹』 手機如何壓縮文件打包
以華為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文件的內容更新,凱升遲就重寫個文件替換。