2013-08-08 2 views
1

У меня есть следующая структура проекта:библиотеки проекта не встроена в APK

MyApp (an Android Application Project) 
-- includes MyLibrary 

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

Проблема заключается в том, что core.jar не встроена в конечное APK из MyApp, поэтому я получить NoClassDefFoundError с, и моим приложением падает. core.jar настроен для экспорта в MyLibrary, и он отображается в разделе частных библиотек Android MyApp, но он не включен в APK. Я использую последний Eclipse Kepler и новейший ADT. Что я делаю неправильно?

+1

Вы видели http://stackoverflow.com/questions/16596969/libraries-do-not-get-added -в-APK-больше-после обновления к ADT-22? – shanet

+0

Нет, но на моем вкладке в моем проекте проверено 'Частные библиотеки Android'. – WonderCsabo

+0

Я прочитал все ответы, но никто из них не помог. Я обновился до Build Tools 18, проверил и перепрограммировал экспорт частных библиотек Android, очистил каждый проект. :( – WonderCsabo

ответ

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> 
+1

+1 для решения проблемы :) – shanet

+0

Спасибо! На самом деле использование было правильным, возникла еще одна проблема. – WonderCsabo

1

Включена ли опция «MyLibrary» на вкладке «Заказ и экспорт» в разделе «Параметры построения Java» в вашем проекте?

Я верю, что это может быть только оно.

+0

Хмм, 'MyLibrary' не отображается на этой вкладке. src', 'gen',' Android Dependencies' и 'Android Private Libraries'. – WonderCsabo

Смежные вопросы