Próbuję utworzyć aplikację na Androida, która korzysta z funkcji NDK w wersji NativeActivity
. Mam następującą strukturę:Android - zapisywanie/zapisywanie plików tylko z kodu natywnego
- grono rodzimych współdzielonych bibliotek zainstalowanych w
/system/vendor/<company>
; Pracuję z niestandardowy zbudowany Android obrazu, więc nie ma problemu konieczności bibliotek tam z odpowiednie uprawnienia i wszystko - kilka aplikacji wykorzystujących
NativeActivity
, które zależą z kolei od bibliotek wymienionych powyżej
Biblioteki zainstalowane w/system/vendor i moje aplikacje używają kilku plików konfiguracyjnych . Nie ma problemu z odczytaniem ich przy użyciu standardowego interfejsu API C fopen/fclose
. Ale te biblioteki i moja aplikacja muszą również przechowywać niektóre pliki w wyniku ich działania, takie jak konfiguracja, niektóre parametry czasu pracy, dane kalibracji , pliki dziennika itp. Przy zapisywaniu plików występuje niewielki problem, ponieważ "nie wolno mi pisać do /system/vendor/...
(ponieważ system plików w"/system/... "jest montowany tylko do odczytu i nie chcę na tym siekać).
Jaki byłby najlepszy sposób tworzenia i przechowywania tych plików i gdzie znajduje się najlepszy "zgodny z Androidem" obszar pamięci?
Czytałem kilka wątków w grupie android-ndk Google i tutaj na SO, które wymieniały the internal application private storage lub the external SD card, ale ponieważ nie mam rozszerzonego doświadczenia z Androidem, nie jestem pewien, co byłoby właściwe podejście. Jeśli podejście obejmuje pewien specyficzny interfejs API systemu Android, bardzo mały przykład kodu w C++ byłby bardzo pomocny; Widziałem kilka przykładów z udziałem Javy i JNI (e.g. in this SO question), ale chciałbym teraz trzymać się z dala od tego. Występuje również problem z używaniem z C++ natywnej aktywności: internalDataPath/externalDataPath
para (a bug that makes them be always NULL).