programing tip

Android에서 assert를 사용하는 방법은 무엇입니까?

itbloger 2020. 10. 30. 07:46
반응형

Android에서 assert를 사용하는 방법은 무엇입니까?


assert obj != null : "object cannot be null"Android 기기 에서 사용하고 싶습니다 . 어설 션이 작동하지 않는 것 같아서 온라인으로 검색 한 결과이 로컬 솔루션을 찾았습니다.

adb 쉘 setprop debug.assert 1

내 로컬 컴퓨터에서 작동합니다.

내 이클립스 프로젝트를 사용하여이 명령을 실행하고 싶습니다 (소스 제어에 있음). 어떻게하니?

감사!


Assert는 대부분의 경우 사용자가 디버그 모드에서 실행되지 않고 최적화 된 코드로 실행되기 때문에 Android에서 작동하지 않습니다. 따라서 적절한 해결책은 다음과 같은 코드를 사용하여 수동으로 예외를 throw하는 것입니다.

if (obj==null) throw new AssertionError("Object cannot be null");

설계 상 Assert는 릴리스 타임 코드가 아닌 디버그 코드 용이라는 점에 유의해야합니다. 따라서 이것은 Assert를 던지는 최선의 사용이 아닐 수도 있습니다. 하지만 그래도 그렇게 할 수 있으니까 ...


Android 4.x 기기에서 테스트되었으며 Android 기기에서 Java assert를 사용할 수 있습니다.

  • /system/build.prop (예 : X- plore)을 편집하고 파일 끝에 다음 줄을 추가합니다. debug.assert = 1
  • 전화 재부팅

이제 Android 장치가 검사를 어설 션 할 수 있으며 어설 션 검사가 실패하면 AssertionError를 발생시킵니다.

편집하다:

또 다른 쉬운 방법은 장치가 다시 시작될 때까지 PC에서 어설 션을 활성화하는 것입니다.

platform-tools\adb shell setprop debug.assert 1

예를 들어 Windows에서 .bat 파일을 생성하고 장치가 연결되면 실행할 수 있습니다.


고유 한 assert 메서드를 만듭니다.

public static <T> T assertNotNull(T object) {
    if (object == null)
        throw new AssertionError("Object cannot be null");
    return object;
}

동일한 객체를 반환하면 간결함을 위해 할당에서 이것을 사용할 수 있습니다.


if (somevar == null) throw new RuntimeException();

RuntimeException ()을 적절한 예외 하위 유형으로 바꿉니다.


Android에서 어설 션에 사용하는 클래스를 공유하면 다음과 같이 어설 션을 작성할 수 있기 때문에 이름이 좋고 매우 우아합니다.

Assert.that(obj!=null, "Object should not be null");

수업 코드는 다음과 같습니다.

public class Assert {
    public static void that(boolean condition, String message) {
        if (!condition) {
            throw new AssertionError(message);
        }
    }
}

도움이 되었기를 바랍니다.


- 사용, 자바 가상 머신에서 주장 사용할 수 있도록하는 방법 의 enableassertions 또는 - EA의 명령 줄 옵션을

  • Window의 명령 프롬프트에서

    java –ea YourApp

  • 에 안드로이드 스튜디오 3.0에 도구 / 편집 구성 / VM 옵션 , 입력 - 의 enableassertions 또는 - EA

참고 URL : https://stackoverflow.com/questions/6176441/how-to-use-assert-in-android

반응형