0

私は Android をターゲットとするプロジェクトを作成しています。その中に、いくつかのデータがロードされる .json ファイルが含まれている必要があります。

.json ファイルを Android フォルダーに入れました。「tns run android --device 1」(私の物理デバイス)を実行すると、次のようになります。

-code-gen:
[mergemanifest] No changes in the AndroidManifest files.
 [echo] Handling aidl files...
 [aidl] No AIDL files to compile.
 [echo] ----------
 [echo] Handling RenderScript files...
 [echo] ----------
 [echo] Handling Resources...
 [aapt] Found new input file
 [aapt] Generating resource IDs...
 [aapt] invalid resource directory name: /Users/konrad/Desktop/NativeScript/hello-world/platforms/android/res res
 [aapt] invalid resource directory name: /Users/konrad/Desktop/NativeScript/hello-world/platforms/android/res small.json

BUILD FAILED
/usr/local/Cellar/android-sdk/24.3.3/tools/ant/build.xml:649: The following error occurred while executing this line:
/usr/local/Cellar/android-sdk/24.3.3/tools/ant/build.xml:694: null returned: 1

Total time: 0 seconds
Command ant failed with exit code 1

ファイルはsmall.jsonと呼ばれます

編集:ファイルを削除しても、問題は残ります。

4

1 に答える 1

0

Android の特性は、ファイル システムの一部へのアクセスを制限することです。NativeScript for Android でファイルにアクセスするには、次の 2 つの方法があります。

1) JavaScript の方法

var fs = require('file-system');
var documents = fs.knownFolders.documents();
var myFile = documents.getFile(filename);   

ドキュメントで指定されているとおり: https://github.com/NativeScript/docs/blob/master/ApiReference/file-system/HOW-TO.md

2) コマンドtns library add androidを使用してアタッチする必要がある「json-simple」と呼ばれるサードパーティ ライブラリを含む Android 固有の方法。

var context = app.android.context;
var assets = context.getAssets();

var br = new java.io.BufferedReader(new java.io.InputStreamReader(assets.open(filename)));

var parser = new org.json.simple.parser.JSONParser();
try {
    parser.parse(br);
} catch (ex) {
    var javaEx = ex.nativeException;
    var msg = javaEx.getMessage();
    console.log("whops! : "+msg);

}
于 2015-07-09T10:08:50.500 に答える