Niedawno zaktualizowałem swój telefon do LG Motion 4G (Android 4 ICS). Widzę, że sdcard jest zamontowany na /sdcard/external_sd
. Zauważyłem również, że wydaje się, że jest tak samo z niektórymi nowszymi modelami. Aplikacje oczekują, że sdcard będzie na /sdcard
. Zakładam, że producenci chcą uwzględnić dużo pamięci wewnętrznej, ale po co montować pamięć wewnętrzną /sdcard
? Czy nie powinno to być sprzeczne z jakąś formą standardu specyfikacji Androida?
external-sd
storage
Sepero
źródło
źródło
Odpowiedzi:
Powodem jest historia Androida: pierwsza generacja urządzeń z Androidem miała tylko niewielką ilość pamięci wewnętrznej (około 100-400 MB), pod którą zostało zamontowane
/data
.Następnie pojawiły się urządzenia z zewnętrzną kartą SD. Karta SD została zamontowana pod
/mnt/sdcard
.Następnie na rynku pojawiły się urządzenia z dużą pamięcią wewnętrzną. To miejsce zostało podzielone, ponieważ
/mnt/sdcard
stało się domyślnym miejscem dla dużych zbiorów danych z aplikacji, zdjęć i tym podobnych. Więc środowisko Androida musiało mieć katalog/data
i/mnt/sdcard
. Dlatego jedna partycja była dla/data
, a druga dla/mnt/sdcard
. To jest powód, dla którego ilość miejsca w pamięci może być niska (/data
partycja), nawet jeśli jest dużo miejsca/mnt/sdcard
.Ta sytuacja została poprawiona w systemie Android 3.0:
/data
i/mnt/sdcard
teraz wskazują na tę samą partycję. Dobra robota, Google, można było to zrobić wersje temu. To jest również powód, dla którego app2sd nie jest już potrzebny na Androidzie 3.0 lub nowszym: przenosisz dane tylko w tym samym wolumenie.Teraz dochodzimy do odpowiedzi, jeśli twoje pytanie: Ponieważ
/mnt/sdcard
jest już zamontowane w pamięci wewnętrznej, zewnętrzna karta SD musi używać innego punktu montowania. Ten punkt montowania nie jest określony przez Google. Mogłoby być/mnt/sdcard/ext_sd
/mnt/external
/mnt/extSdCard
/mnt/sdcard/external_sd
Wywołanie API
getExternalStorageDirectory()
zwykle wskazuje na wewnętrzny katalog pamięci. To zachowanie jest udokumentowane. Istnieją projekty o otwartym kodzie źródłowym, które zapewniają narzędzia do znalezienia zewnętrznego katalogu karty SD w kanoniczny sposób.źródło
isExternalStorageRemovable()
trzeba sprawdzić, czy pamięć „zewnętrzna” jest wymienna, a ponadto można określić punkty instalacji (za pomocąmount
polecenia) i sprawdzić flagi instalacji itp. Ale jeśli się tu nie mylę, oznacza to, że każdy programista potrzebuje dowiedzieć się o swojej aplikacji i nie ma dla niego prostego wywołania API?/data
partycja zostaną połączone, jak mogę bezpiecznie zamontować / odmontować kartę SD, aby podłączyć ją, powiedzmy, na komputerze? Wydaje mi się, że oddzielne partycje są logiczne i nie rozumiem, dlaczego to wszystko musiało się wydarzyć./data
partycja, która się łączy.This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition
. Po prostu FYI, to NIE jest prawdą na co najmniej jednym telefonie z Androidem 4.0 (Pantech Burst), gdzie/data
jest partycja 1 GB ext4 i 12 GB partycja/mnt/sdcard
FAT32.Wymuszanie zewnętrznego montowania SD
/mnt/sdcard
nie ma żadnych technicznych zalet, jest to sposób Google'a, aby pomóc producentom sprzętu stworzyć punkt różnicowania dla telefonów z większą pamięcią wewnętrzną.Nie ma powodu, dla którego aplikacje musiałyby znaleźć sposób na zlokalizowanie karty zewnętrznej, gdy
/mnt/sdcard
wyraźnie było to miejsce, w którym powinna być karta SD, a niezdefiniowany sposób ładowania zewnętrznej karty SD przez Google jest kolejną mało przyjazną dla konsumenta działką, aby zewnętrzna karta SD była mniej przydatna w nowsze urządzenia z Androidem. Nie ma powodu, dlaczego/data
i/mnt/sdcard
musiały być połączone w tej samej partycji na nowszej wersji Androida wyjątkiem producenta do odróżnienia telefony z większej pamięci wewnętrznej z niższych jednostek lotniczych z pamięcią mniej wewnętrznego. Nawet gdyby scalenie musiało zostać wykonane, Google mógłby jasno zdefiniować STANDARDnowy punkt montażowy dla zewnętrznych kart SD zamiast pozostawiać całkowicie niejasny. Jest to całkowicie przeciwdziałające zapobieganiu dalszej „segmentacji” ekosystemu Androida przez niezdarny projekt, który pomaga sprzedawcom odróżnić telefony wyższej klasy od tańszych jednostek o mniejszej wbudowanej pamięci.Pliki binarne aplikacji na Androida są małe, telefony z 1-2 gigabajtami pamięci wewnętrznej powinny mieć o wiele więcej miejsca niż setki aplikacji, a wszystkie duże dane można bezpiecznie schować na zewnętrznej karcie SD. Ale potem dostawcy zdali sobie sprawę, że muszą mieć sposób na wyróżnienie swojego wyższego produktu końcowego, a twierdzenie, że wyższa pamięć wewnętrzna stała się częścią tego schematu, a paraliżująca użyteczność pamięci zewnętrznej to kolejna zintegrowana część, której ten schemat wymagał, aby działał w pełni, dlatego mniej pomocny interfejs API do wyszukiwania zewnętrznych kart SD i niestandardowych punktów montażowych.
A więc: Nie, montowanie karty SD w innym miejscu
/mnt/sdcard
jest niczym innym, jak strategią biznesową dotyczącą sprzedaży droższych nowych telefonów pod nowszą wersją Androida, nic więcej. Wyobraź sobie, że jeśli Nexus 4 8 GB i Nexus 16 GB mogą używać 64 GB zewnętrznej karty SD do aplikacji i multimediów, czy istnieje powód, aby ktokolwiek kupił wersję 16 GB? Te dodatkowe 8 GB pamięci NAND z pewnością nie jest warte różnicy w cenie 50 USD, jeśli w grę wchodzą zewnętrzne karty SD. Ponieważ większość elementów smartfona musi być prawie taka sama (pamięć RAM, procesor, radia), jedynym obszarem pozostałym do uzyskania większej marży zysku jest przestrzeń pamięci wewnętrznej, a tym samym dziwny punkt montowania pamięci zewnętrznej.Czy wszyscy też zauważyli brak zewnętrznej obsługi SD w bieżącej ofercie urządzeń z Androidem marki „Google”? Trend ten będzie się rozwijał na urządzeniach z Androidem „najwyższego poziomu”. Obsługa zewnętrznych kart SD była kluczowym wyróżnikiem urządzeń z Androidem, aby wyprzedzić dominację iPhone'a na rynku mobilnym. Teraz, gdy Androidem rządzi gra liczbowa, nie ma potrzeby, aby ta praktyka ograniczania zysków była utrzymywana o wiele dłużej.
Android 5.0 mnie nie zaskoczy, obsługa zewnętrznych kart SD byłaby już przeszłością. Ponieważ jeśli aplikacjom trudno jest znaleźć zewnętrzną kartę SD, wówczas większość programów po prostu korzysta ze znanych
/data
i/mnt/sdcard
lokalizacji, a większość aplikacji wykorzystuje do przechowywania coraz więcej danych, dzięki czemu „z powietrza” powstaje dynamiczna strategia znakowania produktów „po prostu nie montuj zewnętrznej karty SD w/mnt/sdcard
.źródło
/data
i/mnt/sdcard
”, jak wyraźnie widać powód: Unikanie fragmentacji pamięci wewnętrznej./sdcard/external_sd
W LG P880) tworzenie kopii zapasowej „pamięci wspólnej” obejmuje obie te rzeczy i tworzy ogromne archiwum. Nie ma możliwości wykonania kopii zapasowej wewnętrznej karty SD tylko w prosty sposób. To nie ma większego sensu, ponieważ istnieją znacznie łatwiejsze sposoby tworzenia kopii zapasowej karty zewnętrznej. Fakt, który doprowadza mnie do szału, ponieważ mam wspomniane urządzenie ...Powinieneś zdawać sobie sprawę (jeśli jesteś zrootowany), że możesz przejść do /system/etc/vold.fstab i zamienić punkty montowania dla / sdcard i /mnt/external_sd..... Pozwoli to na włączenie twojej sdcard na / sdcard zgodnie z oczekiwaniami a pozostała „pamięć wewnętrzna” zostanie zamontowana na / mnt / external_sd lub jeśli wolisz / sdcard / external_sd /
źródło