• Android Package Manager #08 strlcpy memcpy 비교

    소스 코드: NativeLibraryHelper.cpp findSupportedAbi와 copyNativeBinaries 속도 측정 findSupportedAbi가 호출하는 cpp 코드에서 findSupportedAbi와 copyNativeBinaries에 해당하는 cpp 코드인 copyFileIfChanged 부분의 시간을 측정한 결과는 아래와 같다. find 보다 copy에서 시간이 많이 걸렸다. 단위는 밀리세컨드이다. cpp에서 시간을 측정했는데 이상하게 시간이 오래 걸렸다. 부팅 과정 중 혹은 부팅이 끝난 다음 앱 최적화 과정때문에 시간이 오래걸리는...


  • Android Package Manager #07 derivePackageAbi

    PackageManagerService.java #7554 #6967에서 derivePackageAbi를 호출한다. 이 부분의 시간이 오래 걸린다. #7554에 derivePackageAbi 메소드가 선언돼 있다. ABI, Application Binary Interface ABI는 두 개의 바이너리 프로그램 모듈 사이의 interface 이다. 보통 한 쪽은 라이브러리 혹은 운영체제이고, 다른 한 쪽은 사용자가 동작시키는 프로그램이다. API는 source code에서 접근 가능하며, 상대적으로 high-level, hardware-independent, human-readable 형식이다....


  • Android Package Manager #06 AOSP 빌드 시 APK를 이용하여 AVD에 어플 설치

    AVD에 어플 설치하기 환경: Ubuntu 16.04, Android 6.0.1_r77, emulator 참고자료: AOSP AVD에 앱 설치 - stackoverflow, APK 설치 결과 안드로이드 앱을 APK로 만들어 AVD에 설치 가능 /system/app 폴더에 설치 가능 /data/app 폴더에 앱을 설치하려고 시도하였으나 안됨, AOSP build 자체에서 user app 설치가 불가능하다는 스택오버플로우 답변 있음 구글 플레이 스토어 같은...


  • Android Package Manager #05 scanPackageDirtyLI 주석

    코드 링크


  • Android Package Manager #04 PackageParser

    PackageParser.java PackageParser.java parsePermission(), parsePermissionGroup(), parserPermissionTree() private Permission parsePermission() #2221 permission은 App manifest file 안에 포함된다. 다음과 같은 형태이다. <permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | ...] /> 해당 어플 혹은 다른 어플의 구성요소에 대한 접근을 제한하는 security permission을 선언한다. private Permission parsePermission(Package...