これが問題です。アプリに含める 2 つの別個のクラスがあります。1 つは広告 SDK で、もう 1 つは RoboSpice です。どちらもソースを持っていませんが、私が含めているのは単なる .jar ファイルです。これらのアプリケーションが外部ストレージへのパスを取得して一時ファイルを書き込もうとすると、null が返されます。ログがコンソールにダンプされるため、私はそれを知っています。ただし、私自身のソース コードでは、getexternalstorage() などの同じルーチンを使用すると仮定すると、パスが返され、ファイルを問題なく保存できます。これらのクラスのソース コードを持っていないので、ステップ実行してデバッグすることはできません。信頼できるのは、それらがコンソールに書き込む内容だけです。
今、完全な話。このプロジェクトは、私が別の開発者から継承したものです。彼らはプロジェクトで Maven を使用し、依存関係の一部は非公開の Maven ソースに依存していました。そこで私は先に進み、それを標準のEclipseプロジェクトに変換しました。古いコンパイル済みソースには、テスト デバイスの /data/data//cache に保存されている robospice 一時ファイルが含まれているため、古いソースが過去に問題なくデバイスに書き込んでいたことがわかります。コンパイルされたソースがデバイス上の適切な保存場所を取得できない理由について何か考えはありますか?