代码如下:

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,目前尚未有任何合理的解释