公司之前app下載檔案是通過Android自帶的第三方庫FTPClient,有一個問題就是在檔案下載程序中會存在檔案泄密的問題,于是公司自己開發了一套加密傳輸檔案的api,api是用c來實作的,Android如果要呼叫必須通過so檔案的方式來加載,公司的同事通過一周的開發終于把so檔案發給我,然后就有了以下一系列的問題;
首先選用通過jna的方式來加載so檔案(當然也可以通過jni方式,不過更麻煩)
在開發程序中一直使用debug模式在除錯,測驗驗證之后檔案可以正常下載,以為這一個小小的功能在只需要一下午的時間就搞定了,于是打包了release版本的apk提供給測驗部測驗,萬萬沒想到第二天直接給我提了一個嚴重等級的bug(bug內容:點擊下載檔案按鈕app崩潰),我不是測驗很多遍都沒問題嗎?怎么就崩潰了?一臉疑惑,心里想著我才不信,必須狠狠的打測驗的臉,立馬自己親自安裝了發給測驗的release版本的apk,也崩潰了,,,,
看來自己自己一手造成的bug還是要自己來承受,于是我開始各種百度,什么csdn,GitHub等等,找了一下午還是沒有結果,就在我絕望的時候無意間看到了一個配置沒錯就是混淆(minifyEnabled)我在想這個配置是干嘛的(作為Android開發的小白)于是我有開始各種百度,什么csdn,GitHub等等,這是我百度的一段混淆感念
Android代碼混淆,又稱Android混淆,是伴隨著Android系統的流行而產生的一種AndroidAPP保護技術,用于保護APP不被破解和逆向分析(混淆就是將關鍵字和關鍵類名,修改為無意義的字符以起到迷惑試圖反編譯去查看原始碼的人)
看完之后我心里想會不會這個玩意把我呼叫so檔案類給混淆掉了,我把true改為了false(修改完之后打包release版本的apk發現體積比之前大了4mb)通過一頓測驗后都正常,重新打包apk發給了測驗部,覺得這下應該沒問題了
過了一天之后,測驗部又提了一個新的bug,檔案下載可以了,打不開ppt格式的檔案(只有ppt格式打不開,其他都可以,我們公司的檔案瀏覽是通過內置騰訊tbs插件)馬德這是什么奇葩
我開始想會不會是檔案解密的問題(我們公司檔案都是加密過的,在打開前必須通過解密介面解密后才能正常打開),于是我把解密后的檔案,和原本明文檔案做了二進制對比,發現一模一樣,這就奇怪了,難道是tbs插件最近有更新?那也不會影響到之前的插件的使用啊,我還是去了tbs官網,發現真的有最新插件,于是我下載下來替換了最新的重新打包測驗,發現還是不行,
到底是什么原因呢?就在我又一次絕望的時候,突然想起來之前解決檔案下載崩潰的時候修改了一個工程屬性會不會是那個玩意引發的,我又把minifyEnabled這個配置改成了true,反復測驗發現就是這個配置導致ppt格式檔案打開失敗,
這下要怎么解決,兩個都是很嚴重的問題,好像修改這一個配置并不能解決兩個問題
tbs是別人的東西,不好輕易去修改,只能硬著頭皮去解決檔案下載失敗的問題了,以下就是問題原因和解決方法
首先我們打包兩份release版本的apk包一份是minifyEnabled = true 一份minifyEnabled=false,因為就是這個配置導致我們檔案下載時崩潰的所以我們需要對比一下究竟這兩個包有哪些差異,打包好之后,在Android studio中可以查看apk包的內容,對比之后發現開啟混淆之后,會將我們呼叫的類名、類中的成員重命名為a、b、c、d.......等等,就像上面提的混淆的概念所說的起到保護作用

于是我有在網上找到,可以通過單獨設定某個類不開啟混淆,通過proguard-rules中添加對應的類來實作關倍訓淆

添加之后,將 minifyEnabled 設定為 true,在打包release版本apk查看對應類的名稱

發現和 minifyEnabled設定為false打包出來的一致,ok打包測驗
測驗后下載檔案、打開ppt格式檔案都正常,這下可以放心的提交bug,打新包給測驗部
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/293764.html
標籤:其他
上一篇:Android的java的報錯提示:java.lang.RuntimeException: Fail to connect to camera service
