我尝试在Android中创建一个Library项目,并在其他项目中使用该库。
我创建了一个简单的Library项目,其中一个布局显示了一些文本。检查它是否是图书馆'然后就去了。
我带了在' bin'中创建的Jar文件。目录,复制到新项目的资产'文件夹(尝试了' libs'方法,结果相同)。
我已检入过'属性 - > java构建路径 - >订购和出口'它已经被选中了。
在应用程序中,我试图从库中启动一个Activity,使用:
Button btnLoad = (Button)findViewById(R.id.btnLoadLibrary);
btnLoad.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, LibraryActivity.class);
startActivityForResult(intent, 0);
}
});
导入了库:
import com.example.superlibrary.LibraryActivity;
此处没有错误。
然后,当我启动应用程序并按下按钮时,我得到:
05-01 20:24:07.030: E/AndroidRuntime(19011): FATAL EXCEPTION: main
05-01 20:24:07.030: E/AndroidRuntime(19011): java.lang.NoClassDefFoundError: com.example.superlibrary.R$layout
05-01 20:24:07.030: E/AndroidRuntime(19011): at com.example.superlibrary.LibraryActivity.onCreate(LibraryActivity.java:12)
05-01 20:24:07.030: E/AndroidRuntime(19011): at android.app.Activity.performCreate(Activity.java:5206)
05-01 20:24:07.030: E/AndroidRuntime(19011): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
为了确保,我已经检查了应用程序的清单文件,我在那里:
<activity
android:name="com.example.superlibrary.LibraryActivity"
android:label="LibraryActivity" >
</activity>
所以它被认可并包括在内......
为什么会出现这种错误? (java.lang.NoClassDefFoundError)
谢谢!
答案 0 :(得分:1)
Eclipse添加外部库非常挑剔,我曾经做过的唯一方法是将lib复制并粘贴到项目的lib文件夹然后打开Eclipse,在新项目中右键单击Project Explorer中的项目然后左键单击Refresh。说到这一点,请确保库出现在libs文件夹和Android Dependencies文件夹中 如下面的屏幕截图所示。
答案 1 :(得分:0)
http://developer.android.com/tools/projects/index.html
根据文档
但是,库项目与标准Android应用程序项目的不同之处在于,您无法将其直接编译为自己的.apk并在Android设备上运行它。同样,您无法将库项目导出到自包含的JAR文件,就像对真正的库一样。相反,您必须通过引用依赖应用程序中的库并构建该应用程序来间接编译库。
当您构建依赖于库项目的应用程序时,SDK工具会将库编译为临时JAR文件并在主项目中使用它,然后使用结果生成.apk。
您无法将库项目导出到JAR文件。
库不能作为二进制文件(例如JAR文件)分发。这将在SDK工具的未来版本中添加。
你需要在你的android项目中引用一个库项目。
检查以下链接。
http://developer.android.com/tools/projects/projects-eclipse.html
答案 2 :(得分:0)
绝对可以在android项目中包含一个jar并从中启动一个活动。 以下链接深入讨论了如何创建库项目以及如何详细引用库项目
http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject
以下代码可让您从jar
开始活动final Intent it = new Intent(android.content.Intent.ACTION_VIEW);
it.setClassName(getApplicationContext(), "<complete path of the Activity class>");
startActivity(it);