在Android Studio 2.3.3中。我将新模块(常用)添加为Android库
所以项目结构是:
MyProject
-app
--src
---main
----java
----MainActivity.java
-common
--src
---main
----java
----StringUtil.java
在项目 settings.gradle :
中include ':app', ':common'
在 app / build.gradle :
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':common')
testCompile 'junit:junit:4.12'
}
app / 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");
}
这里是模块的代表: common / 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);
}
}
这里是logcat输出:
10-24 18:18:12.407 D/myproject.customer.ui.MainActivity(31646): onCreate:
正如您所看到的,MainActivity正在记录,但 StringUtil (来自模块)未记录。消息“urlEncodeQueryString: urlToEncode =
”未显示。
为什么?
P.S。如果我删除 StringUtil 中的“if (BuildConfig.DEBUG)
”,则会显示消息。但是我需要这个检查,因为消息必须只在调试模式下显示。
答案 0 :(得分:0)
您无需检查BuildConfig.DEBUG
。
如果您只是将buildType
设置为debuggable false
,默认情况下为已签名的应用程序设置,则无论其级别如何(信息,调试,警告等)都无法读取日志。 。)
示例(明确设置,不需要):
android {
buildTypes {
debug {
resValue "string", "app_name", "App - Debug"
applicationIdSuffix '.debug'
debuggable true
}
release {
debuggable false
}
}
}
否则,我的代码中没有任何错误。可能问题出在其他地方。我一直在其他类中使用BuildConfig
,它工作正常。