2013년 6월 12일 수요일

토막 지식 2


서비스 관련 지식 복습.





 

System property 파일 이름은  system.prop, locate 명령으로 찾아 보세.

JNI_CreateJavaVM

jint JNI_CreateJavaVM(JavaVM **p_vm, JNIEnv **p_env, void *vm_args);

로드해, Java VM 를 초기화합니다. 현재의 thread가 메인 thread가 됩니다. env 인수를, 메인 thread의 JNI 인터페이스 포인터에 설정합니다.

 


 

 

 

안드로이드 프레임웍에 서비스 추가시

Android / frameworks/ base /services / java

추가될 서비스의 자바 파일을 LOCAL_SRC_FILES 추가.

실재 넣을 파일은 java/com/android/server 아래 적절한 위치에 추가.

 

 

 


base/services/java/com/android/server/pm/PackageSignatures.java
base/services/java/com/android/server/pm/PackageSettingBase.java
base/services/java/com/android/server/pm/PackageSetting.java
base/services/java/com/android/server/pm/PackageManagerService.java
 
 

 


Base/services/java/com/android/server/pm/

PackageSettings - PackageSettingsBase - GrantedPermissions

 

Signature.java -> byte[] 타입의 시그니처 정보 저장.

 

Base/core/java/android/context/pm

 

PackageSignatures

writeXml 함수

readXml 함수

assignSignatures 함수

        Signature[] mSignatures;

        String countStr = parser.getAttributeValue(null, "count");

        mSignatures = new Signature[count];

 

PackageSettingsBase PackageSignature 가지고 있고 , PackageSetting base 상속해서

실재로 쓰여짐.

 

PackageManagerService.java에서

          allowed = (compareSignatures(bp.packageSetting.signatures.mSignatures,

                                 pkgParser.mSignatures) == PackageManager.SIGNATURE_MATCH)

                                 || (compareSignatures(mPlatformPackage.mSignatures,

                                         pkgParser.mSignatures) == PackageManager.SIGNATURE_MATCH);

Signature 정보를 사용함.

 

 


if (bp != null && bp.packageSetting != null) {
 
       final String perm = bp.name;
                 boolean allowed;
                 boolean allowedSig = false;

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

에이전트 설계 ⑪ (완결) — 프레임워크와 2026 스택: 제어 흐름의 소유권만은 넘기지 마라

마지막 편. 프레임워크 전쟁은 사실상 수렴했다 — 모든 메이저 벤더가 공식 SDK를 냈고 원시 개념(도구 루프·subagent/handoff·체크포인팅·MCP)도 동일해졌다. 차별화 전선은 루프가 아니라 하네스 품질과 내구성(durability) 으로...