图书馆项目的依赖性没有内置到APK中

时间:2013-08-08 16:58:35

标签: android eclipse android-library

我有以下项目结构:

MyApp (an Android Application Project)
-- includes MyLibrary

MyLibrary (an Android Library Project)
--libs
----- core.jar*

问题是core.jar没有内置MyApp的最终APK,所以我得到了NoClassDefFoundError s,我的应用程序崩溃了。 core.jar设置为在MyLibrary中导出,并显示在MyApp的Android私有库部分中,但它不包含在APK中。 我正在使用最新的Eclipse Kepler和最新的ADT。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

在项目的“Java Build Path”属性选项下的“Order and Export”选项卡上选中“MyLibrary”吗?

我相信它可能只是它。

答案 1 :(得分:1)

我终于找到了错误。这是core.jar的问题。我用ant脚本构建它,看起来脚本很糟糕。 This是糟糕的剧本。 this是好脚本。我不知道哪个偏好错了。 所以根本不是Android构建器问题。


糟糕的剧本:

<?xml version="1.0" encoding="utf-8" ?>
<project name="project" default="jar" basedir=".">

    <target name="compile" description="Compile source">
        <mkdir dir="bin" />
        <javac srcdir="src" includes="**" destdir="bin"/>
        <copy todir="bin">
            <fileset dir="src" />
        </copy>
    </target>

    <target name="jar" description="Package into JAR" depends="compile">
        <jar destfile="project.jar" basedir="bin" compress="true" />
    </target>
</project>

好剧本:

<project name="core" basedir="." default="dist" >

    <property name="dist.dir" value="dist" />
    <property name="src.dir" value="src" />
    <property name="build.dir" value="bin" />

    <target name="dist" depends="clean, package" />
    <target name="clean" >
        <delete dir="${build.dir}" />
    </target>
    <target name="init" >
        <mkdir dir="${build.dir}" />
    </target>
    <target name="compile" >
        <javac debug="off" destdir="${build.dir}" source="1.6" srcdir="${src.dir}" target="1.6" />
    </target>
    <target name="package" depends="init, compile" >
        <jar basedir="${build.dir}" destfile="${dist.dir}/core.jar" />
    </target>

</project>