2017-10-24 25 views
0

Android Studio 2.3.3. 나는 안드로이드 라이브러리로 새 모듈 (일반적인)를 추가Log.d가 모듈에서 작동하지 않습니까?

때문에 프로젝트 구조는 다음과 같습니다

프로젝트에서
MyProject 
-app 
--src 
---main 
----java 
----MainActivity.java 
-common 
--src 
---main 
----java 
----StringUtil.java 

settings.gradle :

include ':app', ':common' 

에서 응용 프로그램/build.gradle :

dependencies { 

    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':common') 

    testCompile 'junit:junit:4.12' 
} 
여기에 63,210

응용 프로그램에서 니펫을/MainActivity :

import myproject.customer.BuildConfig; 
import myproject.customer.common.StringUtil; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (BuildConfig.DEBUG) 
      Log.d(TAG, "onCreate:"); 
     StringUtil.urlEncodeQueryString("some_url_to_encode"); 

    } 

그리고 여기가 모듈에서 snippent : 일반/StringUtil : 출력 로그 캣

import myproject.customer.common.BuildConfig; 

    public static void urlEncodeQueryString(String urlToEncode) { 
     if (BuildConfig.DEBUG) 
      Log.d(TAG, "urlEncodeQueryString: urlToEncode = " + urlToEncode); 
     String urlQueryEncode = null; 
     try { 
      URL url = new URL(urlToEncode); 
      URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); 
      urlQueryEncode = uri.toASCIIString(); 
     } catch (MalformedURLException | URISyntaxException e) { 
      if (BuildConfig.DEBUG) 
       Log.e(TAG, e.getMessage(), e); 
     } 
    } 

그리고 여기 :

10-24 18:18:12.407 D/myproject.customer.ui.MainActivity(31646): onCreate: 

MainActivity가 로깅 중이지만, StringUtil (모듈에서)이 로깅되지 않습니다. "urlEncodeQueryString: urlToEncode ="메시지가 표시되지 않습니다.

왜?

P. "if (BuildConfig.DEBUG)"을 에서 제거하면 StringUtil 메시지가 표시됩니다. 그러나 메시지가 디버그 모드에서만 표시되어야하기 때문에이 검사가 필요합니다.

+0

Log 명령문을 메서드 호출 바로 뒤에 넣고 먼저 호출해야합니다. 어쩌면 "if (BuildConfig.DEBUG)"가 아마도 false로 평가되고 있기 때문에 로깅되지 않습니다. – Sonam

+0

잘못된 프로세스 등에서 logcat을 필터링하지 않도록하십시오. –

+0

(BuildConfig.DEBUG)가 true를 반환하는 경우 "app"에서, (BuildConfig.DEBUG)가 false를 반환하는 경우 "common"모듈에서 확인하십시오. 왜? : – Alexei

답변

0

BuildConfig.DEBUG을 확인할 필요가 없습니다.

방금 ​​설정 한 경우는 당신의 buildType 릴리스 서명 애플리케이션을 위해 당신을 위해 할 기본입니다 debuggable false에, 더 로그는 관계없이 수준 (정보, 디버그, 경고 ...)

예 무엇인지 읽을 수 없습니다 (명시 적으로 설정하지 않아도 됨).

android { 
    buildTypes { 
     debug { 
      resValue "string", "app_name", "App - Debug" 
      applicationIdSuffix '.debug' 
      debuggable true 
     } 
     release { 
      debuggable false 
     } 
    } 
} 

그렇지 않으면 코드에 아무 것도 표시되지 않습니다. 아마 문제는 다른 곳에있을 것입니다. 다른 클래스에서 BuildConfig을 사용하고 있으며 정상적으로 작동합니다.

+0

"release"buildType에 "debuggable false"를 추가합니다. 하지만 "릴리스"모드에서 앱을 시작하면 로그가 표시됩니다! Log.d (TAG, "onCreate_TEST Log"); 왜? – Alexei

+0

Release buildType 앱을 제작 했습니까? 'Build -> Generate Signed APK'에서'Build Type'을 선택하면됩니다. 휴대 전화에 설치하고 Android Studio를 실행하면 로그가 표시되지 않습니다. – zed

+0

나는 gradle (buildType = release)로 Release를 빌드한다. 결과로 나는 apk에 서명했다. 하지만 전화 APK 설치 후 로그 쇼! 왜? – Alexei