Cocos2d-x v3.17, Android: сбой при использовании Donwloader на некоторых устройствах Android - PullRequest
0 голосов
/ 11 июля 2019

Этот сбой происходит при использовании Downloader на некоторых устройствах Android.

Вот журнал ошибок:

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 голосов
/ 14 июля 2019

Я получил путь, используя эту функцию 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);

А теперь выше ошибки не возникает.

...