mFile.listFiles() JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xb7

開發工具:Android Studio1.2

真機:華碩 ASUS_T00J 

功能:文件管理


之前軟件有個功能是:文件管理功能,發現一個問題,sdcard裏面的apk 文件filesize爲0,原因:文件名不是UTF-8的;

後來就在本地調試,發現只要一進去那個有亂碼文件的文件夾,軟件就會崩潰;

後來各種折騰。。。略過

文件截圖:

出錯log如下:

 W/dalvikvm﹕ JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xb7                                                                      
 W/dalvikvm﹕ string: '????QQ.mp3'                                                                                                                         
 W/dalvikvm﹕ in Ljava/io/File;.listImpl:(Ljava/lang/String;)[Ljava/lang/String; (NewStringUTF)                                                            
 I/dalvikvm﹕ "main" prio=5 tid=1 NATIVE                                                                                                                   
 I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x42f06460 self=0x42ef0320                                                                             
 I/dalvikvm﹕ | sysTid=7188 nice=0 sched=0/0 cgrp=apps handle=1073954848                                                                                   
 I/dalvikvm﹕ | state=R schedstat=( 6269686245 258615653 3600 ) utm=556 stm=70 core=3                                                                      
 I/dalvikvm﹕ #00  pc 0010b068  /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+72)                                               
 I/dalvikvm﹕ #01  pc 000e7b0b  /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+1099)                                      
 I/dalvikvm﹕ #02  pc 000e7d75  /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+69)                                                                    
 I/dalvikvm﹕ #03  pc 000a1893  /system/lib/libdvm.so (ScopedCheck::checkUtfString(char const*, bool)+259)                                                 
 I/dalvikvm﹕ #04  pc 000a25cb  /system/lib/libdvm.so (ScopedCheck::check(bool, char const*, ...)+1275)                                                    
 I/dalvikvm﹕ #05  pc 000a6674  /system/lib/libdvm.so                                                                                                      
 I/dalvikvm﹕ #06  pc 0005e5e9  /system/lib/libjavacore.so (toStringArray(_JNIEnv*, std::vector<std::string, std::allocator<std::string> > const&)+217)    
 I/dalvikvm﹕ #07  pc 00018688  /system/lib/libjavacore.so                                                                                                 
 I/dalvikvm﹕ #08  pc 0007c02f  /system/lib/libdvm.so (dvmPlatformInvoke+79)                                                                               
 I/dalvikvm﹕ at java.io.File.listImpl(Native Method)                                                                                                      
 I/dalvikvm﹕ at java.io.File.list(File.java:749)                                                                                                          
 I/dalvikvm﹕ at java.io.File.listFiles(File.java:791)                                                                                                     
 I/dalvikvm﹕ at java.io.File.listFiles(File.java:826)                                                                                                     
 I/dalvikvm﹕ at com.pkgname.filemanager.FileSystemNode._getChildren(FileSystemNode.java:95)                                                    
 I/dalvikvm﹕ at com.pkgname.filemanager.FileSystemNode.getChildren(FileSystemNode.java:206)                                                    
 I/dalvikvm﹕ at com.pkgname.filemanager.FileManager.createFileListAdapter(FileManager.java:556)                                                
 I/dalvikvm﹕ at com.pkgname.filemanager.FileManager.selectDirNode(FileManager.java:583)                                                        
 I/dalvikvm﹕ at com.pkgname.filemanager.FileManager.onClickDirectory(FileManager.java:561)                                                     

這是在as上直接運行apk出問題,找了一個下午,大部分都是說需要修改jni,但是第三方應用不能這樣幹啊;

後來突然發現在Jenkins上編譯的包可以運行,文件管理不會崩潰,只是取得的文件size是0,而且不能刪除和重命名;但是展示是沒有問題的;

所以以後有人遇到這樣的問題,就別費勁弄了,可能是簽名的問題;


到現在我也不明白是怎麼回事,現在還有幾個疑問:

1. 調用listfile有兩個地方:一個是後臺線程池遍歷sdcard,取得apk文件功能; 一個是有界面的文件管理器功能; 後臺的遍歷到那個運行不會崩潰,有界面的文件管理就崩潰了,即使我這兩個地方把代碼改成一模一樣的,一樣崩潰;

2. 我在網上下載兩個文件管理器的源碼:點擊打開鏈接,   的可以下載源碼看看,其中FileExplorer本地運行崩潰,Androidfilemanager運行良好;

這就導致了矛盾, 爲什麼我自己的包可能跟簽名有關???而下載的源碼貌似又跟簽名無關。。。

求大神解答,如果確少亂碼文件,可以回覆我,我上傳;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章