在某些Android设备上使用Downloader
时会发生此崩溃。
这是错误日志:
Fatal Exception: java.lang.NullPointerException Attempt to invoke
virtual method 'boolean java.io.File.isDirectory()' on a null object reference org.cocos2dx.lib.Cocos2dxDownloader$3.run (Cocos2dxDownloader.java:364) android.os.Handler.handleCallback (Handler.java:739) android.os.Handler.dispatchMessage (Handler.java:95) android.os.Looper.loop (Looper.java:135) android.app.ActivityThread.main (ActivityThread.java:5438) java.lang.reflect.Method.invoke (Method.java) java.lang.reflect.Method.invoke (Method.java:372) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:917) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:712)
答案 0 :(得分:0)
我使用此Java函数获得了路径
public static String getDocPath(String fileName) {
Context context = getContext();
return context.getFilesDir().getPath() + "/" + fileName;
}
和Cocos2d-x函数是
std::unique_ptr<network::Downloader> downloader;
downloader.reset(new network::Downloader());
downloader->createDownloadFileTask(strDownloadUrl, Cocos2dExt::NativeInterface::getDocPath(strFileName));
我更改了这部分
downloader->createDownloadFileTask(strDownloadUrl, Cocos2dExt::NativeInterface::getDocPath(strFileName));
到
downloader->createDownloadFileTask(strDownUrl, FileUtils::getInstance()->getWritablePath() + strFileName);
现在不会发生上述错误。