현재 위치 - 중국 분류 정보 발표 플랫폼 - 비즈니스 서비스 정보 - Android 컴파일 버전 eng, user 및 userdebug의 차이점

Android 컴파일 버전 eng, user 및 userdebug의 차이점

Android 컴파일 버전 eng, user 및 userdebug의 차이점:

1. Android 공식 웹사이트의 설명

eng 이는 기본 버전입니다. make eng과 동일합니다.

* eng, debug, user 및/또는 development 태그가 지정된 모듈을 설치합니다.

* 태그가 지정되지 않은 비 APK 모듈을 설치합니다.

p>

* 태그가 지정된 APK 외에 제품 정의 파일에 따라 APK를 설치합니다.

* ro.secure=0

* ro.debuggable= 1

* ro.kernel.android.checkjni=1

* adb는 기본적으로 활성화되어 있습니다.

* Setupwizard는 선택 사항입니다.

user make user< /p>

최종 릴리스 비트로 의도된 버전입니다.

* user 태그가 지정된 모듈을 설치합니다.

* 다음과 같은 APK가 아닌 모듈을 설치합니다. 지정된 태그가 없습니다.

* 제품 정의 파일에 따라 APK를 설치합니다. APK 모듈에서는 태그가 무시됩니다.

* ro.secure=1

* ro.debuggable= 0

* adb는 기본적으로 비활성화되어 있습니다.

* 기본적으로 모든 TARGET 프로젝트에 대해 dex 사전 최적화를 활성화하여 장치 첫 부팅 속도를 높입니다.

userdebug make userdebug

다음을 제외하고 user와 동일합니다.

* 또한 debug 태그가 붙은 모듈을 설치합니다.

* ro.debuggable=1

* adb는 기본적으로 활성화되어 있습니다.

2. MTK 컴파일 버전에 대한 보충 지침

MTK 보충 지침 차이점: (

( 1) 디버그/로그 측면에서 원칙적으로 사용자 버전은 제한된 정보만 캡처할 수 있는 반면, 영어 버전은 더 많은 정보를 캡처할 수 있으며 개발 및 테스트에는 영어 버전을 사용하는 것이 좋습니다.

* user/eng 버전이 ro로 설정되어 있기 때문입니다. 보안상의 차이로 인해 adb의 사용자 버전에는 쉘 권한만 있는 반면 eng 버전은 있습니다.

루트 권한이 있습니다

* MTK 시스템 로그 ICS 이후 사용자 버전에서는 모든 로그가 기본적으로 닫혀 있고 영어 버전에서는 기본적으로 열려 전체 정보를 캡처합니다

* eng 버전 버전으로 보면 LOG 양 >= 사용자 버전의 로그 양 어떤 곳에서는 eng/사용자 버전을 직접 확인하여 LOG 인쇄 여부를 확인합니다

* 사용자 버전은 uart를 끕니다. eng 버전에서는 기본적으로 uart가 활성화됩니다.

* eng 버전에서 ANR의 사전 덤프를 활성화하면 ftrace가 캡처되고 더 많은 ANR 정보를 얻을 수 있습니다.

* eng 버전에서는 rtt를 사용하여 역추적을 캡처할 수 있고, 커널 디버그를 위해 kdb를 열 수 있으며, ftrace를 사용하여 CPU 실행 장면을 캡처할 수 있습니다.

* MTK aee는 ENG에서 더 많은 예외 정보를 캡처합니다. 예를 들어 네이티브 예외는 코어 덤프 정보를 캡처합니다.

(2) 성능 성능 테스트 측면에서는 원칙적으로 사용자 버전 테스트를 사용하십시오.

* 개선을 위해 첫 번째 부팅 속도에서는 사용자 버전은 DVM 사전 최적화를 사용하여 dex 파일을 직접 로드하고 실행할 수 있는 odex 파일로 분해합니다. ENG 버전은 이 최적화를 활성화하지 않습니다.

* 적은 LOG 인쇄, uart는 끄는 것이 원칙입니다. eng 버전보다 user 버전의 성능이 더 좋습니다.

(3) 사용자 /eng 버전 확인 방법

* Java 레이어를 확인하세요. android.os.Build 클래스의 TYPE 값

* 네이티브 레이어, property_get("ro.build.type", char* value, "eng") 그런 다음 값 값을 확인하세요.

* 디버그 시 adb shell getprop ro.build.type 반환 값 user인 경우 사용자 버전, eng은 eng 버전

* 로그 확인, ro.build.type 속성 확인 모바일 로그/Aplog_xxxxx/versions

(4) 사용자/eng 버전 컴파일 방법

* 기본 컴파일은 eng 버전입니다. 사용자 버전을 컴파일해야 하는 경우, 매개변수 -o=TARGET_BUILD_VARIANT=user를 추가하세요:

./mk -o=TARGET_BUILD_VARIANT=user mt6577_phone new

default.prop 및 /system/build.prop p>

3. 컴파일된 버전과 ADB 및 루트 간의 제어 관계

1. 루트 권한: adb.c 및 ro.kernel.qemu 속성(에뮬레이터인지 여부) , ro.secure, ro.debuggable, service.adb.root가 관련되어 있습니다.

service.adb.root: services.c -> restart_root_service()의 설정

build/core/main.mk의 다음 위치는 ro.secure 및 ro.debuggable 값을 결정합니다.

user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))

enable_target_debugging := true

tags_to_install :=

ifneq (,$(user_variant))

# 대상은 사용자 빌드에서 안전합니다.

ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1

...< /p >

else # !user_variant

# 비사용자 빌드에 대해 checkjni를 활성화합니다.

ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1

# 비사용자 빌드에 대해 기기 안전하지 않음을 설정합니다.

ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0

# 비사용자 빌드에 대해 기본적으로 모의 위치를 ​​허용합니다

ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1

endif # !user_variant

ifeq (true,$(strip $(enable_target_debugging)))

# 대상은 디버깅 가능성이 더 높으며 기본적으로 adbd가 켜져 있습니다.

ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1

# 이 빌드에 디버깅/테스트 OTA 키를 포함합니다.

INCLUDE_TEST_OTA_KEYS := true

else # !enable_target_debugging

# 대상은 디버그 가능성이 낮고 adbd는 기본적으로 꺼져 있습니다.

ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable = 0

endif # !enable_target_debugging

## eng ##

...

endif

2 adbd 서비스 활성화 여부: UsbDeviceManager.java는 persist.sys.usb.config, sys.usb.config, persist.service.adb.enable

persist.sys.usb 속성과 연결되어 있습니다. config:/build/tools/post_process_props.py ro.debuggable에 따라 persist.sys.usb.con을 설정합니다.

fig의 초기값

sys.usb.config: UsbDeviceManager.java -> setUsbConfig

sys.usb.config 속성 변경 사항이 init.clippers.usb 파일에서 모니터링되는 경우 .rc 작업

속성:sys.usb.config=adb에 대한