Cocos2d-x v3.17,Android:在某些Android设备上使用Donwloader发生崩溃

时间:2019-07-11 08:05:51

标签: android cocos2d-x android-async-http

在某些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)

1 个答案:

答案 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);

现在不会发生上述错误。