NativeScript при добавлении пользовательских файлов ресурсов/json

Я создаю проект для 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.

EDIT: даже если я удалю файл, проблема все равно останется.


person user2827159    schedule 08.07.2015    source источник


Ответы (1)


Свойство Android в том, что он ограничивает доступ к некоторым частям файловой системы. Есть два способа доступа к файлам на NativeScript для Android:

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) Особый способ Android, включая стороннюю библиотеку под названием «json-simple», которую необходимо подключить с помощью команды tns library add 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);

}
person user2827159    schedule 09.07.2015