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的;

后来就在本地调试,发现只要一进去那个有乱码文件的文件夹,软件就会崩溃;

后来各种折腾。。。略过

文件截图:mFile.listFiles() JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xb7_第1张图片

出错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 > 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运行良好;

这就导致了矛盾, 为什么我自己的包可能跟签名有关???而下载的源码貌似又跟签名无关。。。

求大神解答,如果确少乱码文件,可以回复我,我上传;


你可能感兴趣的:(mFile.listFiles() JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xb7)