我有三个android项目:baselibproject、mainlibproject和appproject。
这三个android项目的关系是:
baselibproject是mainlibproject使用的库项目。
mainlib project使用baselibproject作为库项目,并生成mainlib.jar(使用maven build)
生成的mainlib.jar被添加到appproject的libs/
文件夹中,也被添加到appproject的构建路径中。
接下来:
baselibproject中的一个简单类:
public class BaseLibClass {
public static String doBaseTask() {
Log.i("MyLog", "doBaseTask..."); //I can't see this log
return "Result from Base!";
}
}
mainlibproject中定义函数的简单类调用baselibproject中的函数:
public class MainLibClass {
public static void doMainTask() {
Log.i("MyLog", "doMainTask..."); //I can see this log in logcat
String result = BaseLibClass.doBaseTask();
Log.i("MyLog", "result = " + result); //I can see the result log
}
}
最后,在appproject中,我只需调用mainlibproject的上面的函数(记住我有mainlib.jar):
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MainLibClass.doMainTask();
}
}
我用命令
adb logcat -s MyLog:*
启动了logcat。当我运行appproject应用程序时,logcat显示I/MyLog(2039): doMainTask...
I/MyLog(2039): result = Result from Base!
根据上面的日志,baselibproject中的代码正在运行(因为我从baselibclass得到了结果),但是它没有显示baselibproject中的任何日志,为什么????
(我在互联网上搜索了一下,有人通过重启eclipse解决了类似的问题,但对我来说,这没用。另外,我检查的是终端的日志,而不是eclipse的日志。)
最佳答案
好吧,最后,我解决了这个问题。
原因是在baselibproject pom.xml中,我定义了<packaging>apk</packaging>
,而在mainlibproject pom.xml中,当我定义baselibproject的依赖项时,我没有指定工件的<type>
。
在我将baselibproject的pom.xml更改为<packagin>apklib</packaging>
之后,在mainlibproject的pom.xml中用<type>apklib</type>
指定了baselibproject的依赖项。我可以看到baselibproject中的日志。