네, 아마도 두 가지 방법을 사용할 수 있습니다.
부분 1. 사용 권한 매니페스트 권한 정보
. 매우 간단합니다. 로깅 라이브러리에 권한을 추가하지 말고 런타임에 확인하십시오. 이처럼 :
if (context.checkPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
android.os.Process.myPid(),
Process.myUid()) == PackageManager.PERMISSION_GRANTED) {
carry on with your write to disk operation ...
}
다음 문서에 라이브러리를 사용하는 개발자는 로컬 로깅을하고자하는 경우, 그들은 매니페스트에 WRITE_EXTERNAL_STORAGE를 선언해야한다는 쓰기
. lib 디렉토리
모든 여기 거 쓰기있어 가져 오기
2 부 (하지)를하지 테스트 마음과 100 %입니다. 약간의 오류가있을 수 있지만, 잘하면 솔리드 한 아이디어를 전달할 것입니다.
먼저 NoobCameraFlash 라이브러리에서 파일에 LumberJack
을 compile
대신 provided
으로 정의합니다. 그러면 컴파일러가 LumberJack
에 대해 알게되어 컴파일이 통과 할 수 있지만 실제 빌드에는 포함되지 않습니다.
그런 다음 NoobCameraFlash 라이브러리에 라이브러리 funcionalities의 미러 인 클래스를 작성하십시오. 즉, 방법을 의미합니다 d(String, String)
, e(String, String)
등
다음이 미러 클래스에서 당신은 lumberjack이 실제로 사용 가능한지 확인하기 위해 다음과 같이합니다.
private static boolean lumberJackAvailable = false;
private static boolean lumberJackTested = false;
private static boolean isLumberJackAvailable() {
if(lumberJackTested) return lumberJackAvailable;
lumberJackTested = true;
try {
if(Class.forName("") != null) {
lumberJackAvailable = true;
}
} catch(Throwable e){
// ClassNotFoundException, LinkageError, ExceptionInInitializerError
}
return lumberJackAvailable;
}
public static LumberJackMirror create() {
// could also be a singleton
if(isLumberJackAvailable() return new LumberJackMirror();
else return null;
}
물론 if(lumberJackMirror != null)
을 확인해야합니다. 당신이 볼 수 있듯이 일을하는 가장 직접적인 방법은 아닙니다.
조금 더 간단하게하는 또 다른 방법은 다른 라이브러리에 인터페이스를 만드는 것입니다. 미러와 실제 LumberJack이 모두 구현되어 공장을 사용하면 null을 모두 사용하지 않고 인터페이스의 빈 구현을 반환 할 수 있습니다. 시간.
또한 개발자가 로깅 기능을 원할 경우 build.gradle
에 추가해야한다는 문서에 포함하십시오. 그 일의 또 다른 일반적인 방법 compile 'your_groud_id:lumberjack:version'
편집
같은 뭔가가 NoobCameraFlash 초기화 코드에 명시하는 것입니다. 같은 뭔가 :
NoobCameraFlash.config()
.setLogger(new LumberJack());
그래서 그 나무꾼 대신 Class
를 통해 확인에 대해 알고 개발자를 강제로. 그러나 그것은 단지 static
메소드가 아닌 LumberJack 버전이 필요하다는 것을 의미합니다.
행복 코딩] =
end_edit
그러나 희망 단지 권한 제거가 충분하고이 part.2 할 필요가 없습니다.
[Material Dialogs] (https://github.com/afollestad/material-dialogs)와 같은 라이브러리의 두 가지 버전을 만들 수 없으며 – Max