将简单的Eclipse库项目打包为jar文件

3
我使用这个库项目:https://github.com/JakeWharton/Android-ViewPagerIndicator 为了使它在我的项目中正常工作,我创建了一个基于git提供的源代码的新项目,并将其引用到我的最终项目中。一切都很好。我在我的最终项目中这样使用它:
 <com.viewpagerindicator.TitlePageIndicator
        android:id="@+id/indicator"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

我希望避免使用该库项目的引用,而是在我的最终项目中使用一个简单的jar包。我已经将在库项目中生成的jar包添加到Java Build Path中的最终项目中。但当我运行它时,出现了错误:

12-09 10:57:34.714: E/AndroidRuntime(10492): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.SettingsActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class com.viewpagerindicator.TitlePageIndicator

我想知道是否有可能实现我想要的目标?


你在你的项目中添加了库项目吗? - sam_k
是的,我已经添加了它,但我更喜欢只添加一个JAR文件,因为这样更容易重用它或仅发送项目源代码。这就是问题的关键所在... - Alin
将导出的库项目保存为Jar文件,然后在您的项目中导入。 - sam_k
我如何进行导出?我刚刚将library.jar文件从我的Library项目bin文件夹中取出,并将其添加到我的Java Build Path的最终项目中。这种方式有问题吗?谢谢您的帮助。 - Alin
4个回答

6
目前的Android开发工具(版本15.0.1)不允许包含资源(例如布局、自定义属性等)的项目作为简单的.jar进行捆绑。
根据库项目文档
然而,库项目与标准Android应用程序项目不同,您不能直接将其编译为自己的.apk文件并在Android设备上运行它。同样,您也不能将库项目导出为独立的JAR文件,就像真正的库一样。相反,您必须通过引用依赖应用程序中的库来间接编译库。
ADT目前在Eclipse中附加库项目的.jar以解决先前难以处理的仅项目引用问题。然而,这不包括任何资源。
ADT工具网站的下载页面也没有指出支持此问题的内容将被纳入ADT 16(截至ADT 16预览版2)。目前的传言是,这将在工具的第17个版本中实现,但离发布还有很长的路要走。我无法引用来源,因为这主要是从Twitter和Android开发人员聊天室里得到的听说。
目前,您只能将其作为库项目使用。
相信我,除了我之外没有人想将这些项目捆绑为.jar。 :)

@Jake:你能指向你信息来源吗?在http://developer.android.com/guide/developing/projects/index.html#LibraryProjects我发现以下信息:“注意:您需要SDK工具r14或更新版本才能使用生成每个库项目为自己的JAR文件的新库项目功能。”但这可能意味着什么都有可能。 SDK工具修订版14(2011年10月)的发布说明除了“更改库项目的构建方式”之外没有任何相关内容。 - Viktor Brešan
我尽力添加了一些引用和澄清。我无法在b.android.com上找到此功能的原始错误。 - Jake Wharton

1

我动态创建了TitlePageIndicator,但没有抛出异常:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ViewPagerAdapter adapter = new ViewPagerAdapter(this);

    ViewPager pager = new ViewPager(this);
    pager.setAdapter(adapter);

    TitlePageIndicator indicator = new TitlePageIndicator(this);
    indicator.setViewPager(pager);

    LinearLayout body = (LinearLayout) findViewById(R.id.body);
    body.addView(indicator);
    body.addView(pager);

}


0
我没有使用jar文件,但我遇到了相同的错误信息,并在Eclipse中这样修复它: 右键单击项目,转到属性> Android,在Library框中,单击添加并选择ViewPagerIndicator。

0

我也遇到了布局膨胀错误...我知道这篇文章已经很老了,但是我还是希望能够回复,以便任何遇到相同错误的人可以解决它...我按照博客中包含的所有步骤进行操作...但是我犯了一个错误,我的库文件位于非常长的路径下(C:/Users//Downloads/Jakewhartan...yada, yada yada/Jakewhartan...../libs),这就是问题所在...我将其移到了一个较短的路径下,例如F:/workdpace/mylibs,然后它就起作用了...

现在我要注意的是,Windows不支持适当的长路径...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接