2012-02-11 49 views
10

Tôi có thể viết hệ thống tệp không gian người dùng tùy chỉnh có thể chạy trên các thiết bị gốc không được bắt nguồn thông qua các tiện ích chuẩn có sẵn không?Trình điều khiển hệ thống tệp người dùng Android trên thiết bị không bắt nguồn từ?

Tôi nhận thức được sự tồn tại của fuse-android, tuy nhiên như xa như tôi đã hiểu, nó đòi hỏi một thiết bị bắt nguồn từ. Nếu đó không phải là trường hợp, xin vui lòng sửa tôi.

Mục đích tôi đang cố gắng để đạt được là tạo ra một FS 'giả' mà thực sự được gắn vào một tập tin.

Trả lời

12

Tôi có nhu cầu tương tự một số thời gian trước đây và đến điểm mà tôi phải thừa nhận rằng không thể ở tất cả (chủ yếu). Nó không phải là một vấn đề để xây dựng libfuse cho android, cũng là wrapper Java là không có vấn đề.

Vấn đề thực sự là hầu hết các hệ thống mà tôi đã thấy không được xây dựng với buildin hỗ trợ cầu chì cũng như chúng cung cấp các mô-đun có thể được tải (yêu cầu root, nhưng dù sao).

Bạn có thể dễ dàng tìm ra nếu cầu chì được kích hoạt bằng cách đọc/proc/filesystems. Nó sẽ liệt kê cầu chì, nếu không bạn sẽ cần root. Nhưng rất có khả năng hầu hết các thiết bị Android đều được xây dựng mà không cần hỗ trợ cầu chì.

ý tưởng khác của tôi đã sử dụng một hệ thống tập tin để một cái gì đó "giả" như cầu chì. Điều này có thể được thực hiện với nfs hoặc một số hệ thống tệp mạng khác, nơi bạn có thể tự mình triển khai máy chủ. Điều này không cho phép bạn viết một cầu chì giả nhưng tôi không nghĩ rằng nó có giá trị nó.

Chỉnh sửa: Và ngay cả khi nhiều thiết bị có cơ hội hỗ trợ cầu chì thì chúng sẽ không cho phép bạn gắn kết với tư cách người dùng, bạn sẽ cần quyền truy cập root vì ứng dụng của bạn sẽ không có đặc quyền để gắn hệ thống tệp cầu chì .

+1

Cảm ơn, đó là * chính xác * câu trả lời tôi cần. Bounty cũng chi :) –

+0

Không có vấn đề, vui vì tôi có thể giúp =) – Luminger

+0

tôi gặp phải cùng một vấn đề. Nhưng dù sao, tôi nghĩ rằng tôi có thể làm cho nó nếu tôi vượt qua các vấn đề sau.1: làm cho hạt nhân Android có khả năng tải mô-đun hạt nhân (Tôi đã thực hiện nó) 2: cross-biên dịch các dự án cầu chì (tôi đã thực hiện nó) 3: modprobe các fuse.ko vào hạt nhân android (bởi vì tôi không có ý tưởng nơi ko chuyển sang cầu chì 2.9.0 , tôi dừng lại ở đây) .Vì vậy, bất cứ ai có thể giúp tôi throgh? đây là chi tiết của vấn đề: http: //stackoverflow.com/questions/10477309/what-substitute-the-fuse-ko-as-the-kernel- modlue-in-fuse-2-9 –

1

Điều đó tùy thuộc vào việc triển khai của bạn. Những gì nó âm thanh như tôi là bạn muốn có một tập tin vật lý (s) đại diện cho một hệ thống tập tin không gian người dùng đầy đủ. Có lẽ tương tự như một .iso. Nếu đây là trường hợp, tôi không thể nghĩ ra bất kỳ lý do nào cần root: Bạn chỉ cần tạo/cài đặt tệp ở đâu đó chẳng hạn như/sdcard/và "gắn kết" hệ thống tệp của bạn lên trên nó.

Điều đó nói rằng, nếu bạn muốn biết hệ thống tập tin để có thể truy cập từ các ứng dụng khác mà bạn không kiểm soát, bạn sẽ cần phải gốc như ứng dụng của bạn sẽ được chạy trong một sandbox Android khác.

+0

Ok, vì vậy nếu tôi muốn các ứng dụng khác truy cập vào nó và để nó hiển thị trong cây hệ thống tệp chung, không có cách nào, đúng không? –

+0

Không có cách nào tôi biết mà không có gốc, không. – NuSkooler

+0

@NuSkooler Tôi cần phải có một tập tin được gắn kết như một hệ thống tập tin chỉ dành cho ứng dụng của tôi, không cho những người khác. Làm thế nào là nó có thể? Bạn dường như biết điều gì đó về thành tích này một phần là đủ cho tôi. Xin vui lòng, bất kỳ đề nghị hoặc lời khuyên từ bạn được đánh giá cao. Cảm ơn trước – P5music

2

Luminger gần như có ý tưởng đúng. Đây là những gì tôi tìm thấy trên Galaxy S3 của tôi (trên Verizon):

Cầu chì thích hợp hiện tồn tại trong/proc/filesystems. Vì vậy, một cái gì đó phải được sử dụng nó, khá có thể là hệ thống. Tuy nhiên, khi tôi cố gắng thực hiện 'fusermount', tôi nhận được "Không thể thực hiện - Quyền bị từ chối."

Vì vậy, có vẻ như tất cả các công cụ FUSE là có, nhưng tôi đã không có ý tưởng cho dù tôi thực sự có thể sử dụng nó trực tiếp (dropbox? Sshfs?) Mà không cần rễ thiết bị.

+0

Tôi cũng xác nhận sự hiện diện của phiên bản của nhà cung cấp trong tab Galaxy S. – user2284570

Các vấn đề liên quan