2013-11-03 2 views
2

안드로이드 소스를 다운로드했습니다. 백엔드에서 앱 사용 권한을 확인하는 방법을 알고 싶습니다.안드로이드 권한이 어떻게 확인 되었습니까?

예를 들어 앱이 카메라에 액세스하려고하면 OS가 매니페스트 파일에 권한이 있는지 여부를 확인합니다.

더 구체적으로 말하면 정확한 소스 폴더를 탐색하고 싶습니다.

편집 : 코드에서 몇 발자국을 채워서 Stephan의 설명에 감사 드리며 프레임 워크/base/data/etc/platform.xml에서 해당 권한 및 할당 된 uid 또는 gid.

위치 연락처 등이 셸에 대한 액세스 권한을 부여한 것으로 보입니다. 예를 들면 : 응용 프로그램이 매니페스트 파일에 READ_CONTACTS 권한이있는 경우

<assign-permission name="android.permission.READ_CONTACTS" uid="shell" /> 

는 그래서 기본적으로 그렇게 할 액세스하여, 그것을 의미 하는가

? 나는 유효성 확인이 수행되는 곳을 의미합니다.

답변

2

부분적인 대답이 책을 살펴 보자는 귀하의 질문에 관련된 Embedded Android

내가 여기에 내가 그 책에서 정답을 한 것으로 확인 있지만 수는 그 책의 내 자신의 해석이다 . 제발, 누구든지 내 해석을 언제든지 고칠 수 있습니다. 나는 그 해답을 확실히 알지는 못한다. 그리고이 권한 시스템에 대한 내 자신의 해석은 코드가 작업을 수행하는 올바른 위치를 찾는데 도움이 될 것입니다. 왜냐하면 그 부분도 찾지 못했기 때문입니다.

이러한 종류의 사용 권한은 모두 Linux 파일 그룹 ID 사용 권한 수준에서 투명하게 처리됩니다. Android는 근본적으로 다른 운영 체제에 앉아 운영 체제를 사용하는 운영 체제입니다.

안드로이드에서 시스템 카메라가 처음 설치되면 리눅스는 자신의 홈 디렉토리와 함께 자신의 사용자 ID를 할당하고 서비스 관리자 (높은 수준의 안드로이드와 혼동해서는 안된다. 서비스는 완전히 다른 것입니다.) 또한 그룹 ID (가능한 여러 개의 카메라에 대한 진입 점을 나타내는 단일 그룹 ID : 전면 카메라, 후면 카메라 및 3D 카메라가있는 경우 두 번째 후면 카메라) . 그 그룹 id (gid)는 본질적으로 설치시에 카메라에 대한 허가를 나타내는 문자열 상수로부터 매핑 된 정수입니다.

리눅스에서는 모든 앱이 사용자이고 모든 앱도 디렉토리이지만 Linux에서도 모든 것이 파일이며 빈 디렉토리가 파일이고 장치가 파일이고 파일도 io가 될 수 있습니다 .

그리고 여기서 나는 반 직관적 인 생각을합니다. Linux의 경우 각 사용자 앱에는 자체 프로세스를 실행하기위한 자체 공백 샌드 박스가 함께 제공됩니다. 그리고 리눅스에서는 그 허가 자체가 바인더에 사용되어 해당 시스템 응용 프로그램의 핸들에 액세스하여 응용 프로그램과 바인딩합니다. 따라서 시스템 응용 프로그램의 핸들과 가능한 모든 환경 변수가 없으면 자신의 앱은 샌드 박스 외부에서 실행하는 방법을 알지 못합니다. 이것은 프로그램을 작성하고 관련 import 구문을 생략하는 것과 같습니다.

Android에서 사용중인 기능에 대한 권한을 남기지 않아도 시스템에서 "이 작업을 수행 할 권한이 없습니다"라고 직접 말하지 않습니다. 시스템은 그렇게 많이 알지 못합니다.시스템은 사용자가 찾을 수 없거나 액세스 할 수없는 것을 실행하려고 시도했음을 알고 있습니다 (이유는 무엇이든 알고있는 모든 소스 파일의 오타 일뿐입니다). 그리고 대부분의 경우 허가를 포함하는 것을 잊어 버렸을 때, 시스템은 마치 당신이 화성에 말을 걸었던 것처럼 당신에게 큰 의아해를줍니다.

그리고 최근에는 Android 개발 도구 제작자가 특정 권한을 포함하는 것을 잊어 버렸을 수 있다는 힌트를 제공하는 데 점점 더 나아졌습니다. 허가를 잊어 버리는 것은 특히 초보자들 사이에서 쉽게 쉽게 범하는 실수입니다. 올바른 IDE/툴체인 자동화 툴을 사용하면 영구적으로 사라질 수있는 오류입니다.

+0

응답 해 주셔서 감사합니다. 나는 책을 파헤쳐 당신의 설명이 나의 이해를위한 기초를 제공 할 것이다. 앞으로 귀하의 정답을 찾고 :) –

+0

귀중한 의견을 주셔서 대단히 감사합니다. 질문을 매우 구체적으로 업데이트했습니다. 더 이상의 생각은 인정됩니다. –