Android 3.2+ Kodu (Yanlışlıkla mı?) Harici Depolamaya Yazma Erişimini Engelleme

Görünüşe göre Google'ın AOSP kodunda, Android 3.2 civarında ortaya çıkan ve işletim sisteminin USB Depolamayı işleme biçimini etkileyen ve SD kartlara ve USB çubuklara yazma erişimini engelleyebilen bir hata var. XDA Elite Tanınmış Geliştirici, Kıdemli Moderatör ve Haber YazarıZincirleme ateş konuyu kendi yazısında özetliyor Blog yazısı:

Geçmişte bir uygulama "WRITE_EXTERNAL_STORAGE" yazma erişimi sağlayacak izin Tümü harici depolar (kullanıcı/grup "sdcard_rw"). Görünüşe göre bu, yalnızca yazma erişimi verecek şekilde değiştirildi. öncelik harici depolama. "adlı ikinci bir izin getirildi"WRITE_MEDIA_STORAGE", diğer harici depolara (kullanıcı/grup ") erişim izni verirmedya_rw").

Sorun şu ki, aslında üçüncü bir tarafa bu izin verilmeyecek, yalnızca sistem uygulamalarına ve cihaz üreticisi tarafından sağlanan uygulamalara normalde bu izin verilecek. İstisnalar var, görünüşe göre bazı cihazlarda üçüncü taraf uygulamalara bu izin verilecek, ancak AOSP kaynaklarına göre kesinlikle verilmemeleri gerekiyor.

Chainfire sorunu araştırırken kodla karşılaştı. /system/vold/Volume.cpp açıkça şunu belirtmektedir:

 if (birincilDepolama) {

// Özel durum birincil SD kart.

// Bunun için SDCARD_RW grubuna yazma erişimi veriyoruz.

gid = AID_SDCARD_RW;

} başka {

// İkincil harici depolama için işleri kilitli tutuyoruz.

gid = AID_MEDIA_RW;

}

Pek çok cihazda dahili flaş "birincil SD kart" olarak kabul edilir. gerçek SD kart daha sonra ikincil harici depolama birimi haline gelir ve ulaşılamayan "WRITE_MEDIA_STORAGE" izin.

Chainfire sorusunu yetkililere iletti Android Geliştiricileri Ofis Saatleri ekip ve bunu kendi toplantılarında tartışmaya başladılar canlı sohbet 11 Nisan'da. Ne yazık ki Hangout'ta bulunan Google mühendisleri gerçek bir yanıt veremediler; çünkü bu karmaşık bir konu ve soru, gösterinin yayınlanmasından yalnızca bir saat önce sorulmuştu. Ancak bu sorunun temeline ineceklerine ve Chainfire'a (ve bize) daha sonra geri döneceklerine söz verdiler.

Ayrıca Chainfire'a göre sorun aslında SGS2 için ICS yapılarında da mevcut, ancak Samsung "çok çirkin bir izin hack'i kullanarak bu sorunu çözdüm":

Burada gördüğünüz şey Samsung sırtında taşıma WRITE_MEDIA_STORAGE iznini WRITE_EXTERNAL_STORAGE iznine değiştirin, böylece uygulamalar açıklanan sorunu yaşamaz.

Google'ın, bağlı SD Kartların ve USB belleklerin üçüncü taraf uygulamalar için salt okunur olacak şekilde sınırlandırılmasını amaçlayıp amaçlamadığı henüz bilinmiyor. Ancak rahatsız edici bir düşünceyi doğuruyor: Peki ya kod ve beraberindeki notlar Google'ın ilk notlarıysa? harici depolama için bir tür yazma koruması uygulama aşamaları ve dolayısıyla mobil kullanım alanımızı daha da sınırlandırma özgürlük? Bunun sadece gerçek bir hata olduğunu umabiliriz, zira özgürlük hepimizin bu hatalardan kaçınmamızın sebeplerinden biridir. Karanlık taraf.

[Chainfire'a uyarısı ve yardımları için çok teşekkürler!]