2013-05-01 36 views
1

我想在Android中创建一个库项目,并在其他项目中使用该库。包括JAR库到Android项目,并从它开始一个活动

我创建了一个简单的库项目,其中一个布局显示一些文本。检查它被设置为'is Library'并且已经去。

我把'bin'目录中创建的Jar文件复制到'assets'文件夹中的一个新项目中(同样尝试了'libs'方法)。

我检查过'属性 - > java构建路径 - >订单和导出',它在那里并被选中。

在应用程序中,我试图从库中推出的活动,使用:

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

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

+0

我开始一个活动认为在SDK-17中你可以这样做 - 至少这是在某些地方写的。 – Roman 2013-05-01 17:41:55

+0

如果没有 - 是否有隐藏所有库代码的方法? – Roman 2013-05-01 17:42:17

+0

@roman我刚刚从文档中引用了上述内容。我没有看到你在第一条评论 – Raghunandan 2013-05-01 17:44:56

1

Eclipse是非常挑剔与增加外部利布斯,我曾经有过工作是复制和粘贴的lib的项目,然后打开Eclipse中的lib文件夹,并在新项目中右键单击的唯一方法项目浏览器中的项目并单击刷新。说到这一点,请确保该库出现在libs文件夹和Android Dependencies文件夹中 如下面的屏幕截图所示。

enter image description here

+0

是的,所有:) – Roman 2013-05-01 17:58:51

+0

然后你需要检查你的Java构建路径,这个错误告诉你你错误地添加了一个库。 – yams 2013-05-01 21:51:37

0

这绝对是可能的,包括广口瓶中,Android项目,并从它开始活动。 以下链接深入讨论了如何建立一个库项目,以及如何详细引用库项目

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

下面的代码允许您从罐子

final Intent it = new Intent(android.content.Intent.ACTION_VIEW); 
it.setClassName(getApplicationContext(), "<complete path of the Activity class>"); 
startActivity(it); 
相关问题