日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs解析apk

發(fā)布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodejs解析apk 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? 項目再github上的目錄:https://github.com/chen2009277025/nodejs_apkTool

? ? ? ?nodejs無可厚非是新興的后端語言,因為他的開發(fā)語言是javascript,javascript語言的自身優(yōu)勢,讓nodejs迅速的火遍大江南北。

? ? ? 很多的nodejs的開發(fā)插件如雨后春筍般的涌現(xiàn)出來,比如文件操作的fs,解決數(shù)據(jù)庫鏈接的各種中間件,mysql、mongoose等等。

? ? ?但是目前我還沒有發(fā)現(xiàn)關(guān)于nodejs解析apk的,這個需求并不是很大眾,但是對于有些項目而言這個需求確實很重要的。其實實際上來講需要安裝好java環(huán)境,至少得是java1.6以上。

? ? ?android就會有一個庫文件是用來讀取apk中的簽名和信息的庫了,而我們再這里所要做的就是用nodejs去調(diào)用這些庫文件,把這些操作分裝成一個個的子操作,使用的人只需要關(guān)心如何和我們的中間件交互得到自己想要的數(shù)據(jù),而不需要去關(guān)心中間做了些什么。

????

? ? ? ? 一般的apk是用過一定的壓縮格式壓縮過的,我們可以通過將apk的后綴名修改成rar或者zip甚至是tar.gz然后解壓提取里面的圖片等的靜態(tài)資源文件。

可是此時的applicationContext.xml文件是不能看的,或者它里面的class文件也是不能看到的。


此時這個apktool就有用了:


nodejs_apktool 是用nodejs寫的一個對apk處理的一個工具

1.能對apk進行讀取簽名,讀取apk內(nèi)部的appkey,appid,

2.能對apk進行解包,打包

3.能寫入指定的appid,appkey

? ? ? ?

使用:


//apkToolPath:這個是你的項目的絕對路徑,比如:/users/chenjianhui/node_apktool,node_apktool是我的項目名

//sign:是項目中希望打進apk里面的簽名,簽名是一個和公司有關(guān)的文件,這個文件的生成可以去各大搜索引擎上就能搜到怎么生成

//sign_path:簽名的路徑,系統(tǒng)絕對路徑

//sign_password:簽名的密碼,以防止別人給你解密的密碼

//sign_align:簽名的別名,這些參數(shù)在你創(chuàng)建簽名的時候就會設(shè)置好

//apkTool的setting

apkTool.settings = {

? ? apkToolPath: "",

? ? sign: {

? ? ? ? sign_path: "",

? ? ? ? sign_password: "",

? ? ? ? sign_align: ""

? ? }

};


具體的使用請看我的測試用例里面的代碼

????

/***?Created?by?chen?on?15-7-30.*/ var?apktool?=?require("../index"); var?fs?=?require("fs");apktool.settings.apkToolPath?=?"/Users/chenjianhui/WebstormProjects/node_apktool";//unpack?apk //解壓apk包 apktool.apkTool_unpack("/Users/chenjianhui/Documents/apkTest/Pet.apk","/Users/chenjianhui/Documents/apkTest",function(err,result){if(err){console.log("error:"+err);}console.log(result) });/* //pack?apk //打包apk apktool.apkTool_pack("/home/chen/youyuan_test","/home/chen/youyuan_unsign.apk",function(err,result){if(err){console.log("error:"+err);}console.log(result) }); *///這里的參數(shù)是需要向apk中寫入的渠道號,版本號,appkey,appid等信息 //var?params?=?{ //????channel_name:"COM_CHANNEL_BS", //????channel_val:"default", //????permissions:[], //????appkey_name:"COM_APPKEY_BS", //????appkey:"", //????appid_name:"COM_APPID_BS", //????appid:"" //} // //apktool.handle_manifest("/home/chen/youyuan_test",params,function(err,result){ //????????if(err){console.log(err);} //????????console.log(result); //})/*//讀取得到apk中的版本信息 //這個方法很有用,因為通過去applicationContext.xml里面找版本號是一個很不科學的辦法, //而且不一定能找到 apktool.getVersionOfApk("/home/chen/youyuan_test",function(err,result){}) */ /*重新簽名apk,將apk簽名成自己公司的apk,這個apk就是自己的了 apktool.resigned_apk("/home/chen/youyuan_unsign.apk","/home/chen/youyuan_sign.apk","/home/chen/android.keystore","haoxin","android",function(err,result){if(err){console.log(err);logger.writeErr(err);return;}console.log(result); });*//*//讀取簽名 apktool.readSign("/home/chen/youyuan_sign.apk",function(err,result){if(err){logger.writeErr(err);return;}console.log(result);console.log(result.data.MD5);console.log(result.data.SHA1);console.log(result.data.所有者); })*//*這是解壓的配置, var?pack_param?=?{unpack_folder:"/home/chen/haoxin_test",?//解壓目錄desi_dir:"/home/chen/haoxin_2"??//壓縮目標 };//這是需要穿進去的一些渠道號和版本好等信息 var?manifest_param?=?{channel_name:"COM_CHANNEL_BS",channel_val:"default",permissions:[],appkey_name:"COM_APPKEY_BS",appkey:"1231",appid_name:"COM_APPID_BS",appid:"12121" };var?sign_param?=?{sign_file:"/home/chen/android.keystore",password:"haoxin",sign_align:"android" }apktool.handle_apk("/home/chen/youyuan.apk",pack_param,manifest_param,sign_param,function(err,result){if(err){console.log(err);return;}console.log(result);console.log(?result.data["所有者"]); }) */ // //var?path?=?"/home/chen"; // //console.log(fs.existsSync(path)); // //獲取MD5,這是獲取apk?MD5的方法 //apktool.getMd5("/Users/chenjianhui/Documents/apkTest/Pet.apk",function(err,result){ //????if(err) //????{ //????????console.log(err); //????????return; //????} //????console.log(result); //})

? ? ? ? 這里面還有可以修改的空間,比如我們的apk需要的?權(quán)限,由于時間的問題,我并沒有給該工具新增添加或者刪除權(quán)限的功能,

? ? ? ?如果有可能還可以將這個功能寫成一個web,用戶直接上傳apk,手動輸入自己需要的渠道號產(chǎn)品id等信息,手動選擇需要的權(quán)限,就可以下載簽名過后屬于自己的apk

轉(zhuǎn)載于:https://blog.51cto.com/snaile/1727234

總結(jié)

以上是生活随笔為你收集整理的nodejs解析apk的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。