代码如下:
public class testfile {
public native RenderCar();
public native RenderSky();
public boolean testPathExit()
{
String str = Environment.getExternalStorageDirectory().getPath();
str = str + "/Android/data/test/";
String str1 = "/storage/sdcard0/Android/data/test/";
File file = new File(str);
if (file.exists())
{
return true;
}
return false;
}
public String getDataPath()
{
String str1 = "/storage/sdcard0/Android/data/test/";
String str = Environment.getExternalStorageDirectory().getPath();
str = str + "/Android/data/test/";
File file = new File(str);
if (file.exists()) {
return str;
}
return str1;
}
}
说明:该类编写了一些native函数,调用Jni实际的函数实现,在调试模式下getDataPath函数测试出来的str目录永远是不存在的,因为直接return str1,但是testPathExit函数测试的结果却都是true,说明该目录存在,并且单步调试过程中进入到断点ret = true.
在发布版本中,打印getDataPath返回的字符串,目录确实是存在的,返回结果是/storage/emulate/0/Android/data/test,说明确实返回return str,目前尚未有任何合理的解释