Мне нужно сгенерировать файл apk, используя скрипт Ant, но у меня проблемы с целью компиляции. Для автоматического создания сценария Ant я использовал инструмент Android с командой android update project
. Проблема в том, что этот проект зависит от другого проекта, поэтому мне нужно использовать пользовательскую задачу компиляции.
По этой причине я переопределил эту цель: я скопировал скомпилированную задачу из ant_rules_r3.xml
и изменил задачу javac
следующим образом (см. Комментарии к тому, что я изменил):
<!--I've changed the target 1.5 to target 1.6 -->
<javac encoding="UTF8" target="1.6" debug="true" extdirs=""
destdir="${out.classes.absolute.dir}"
bootclasspathref="android.target.classpath"
verbose="${verbose}"
classpath="${extensible.classpath}"
classpathref="android.libraries.jars">
<src path="${source.absolute.dir}" />
<!--My project has two src directories -->
<src path="${source2.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<src refid="android.libraries.src" />
<!--I've added here the src dir of the other project -->
<src path="${dep1.source.absolute.dir}"/>
<classpath>
<!--I've added here the lib dir of the other project -->
<fileset dir="${dep1.external.libs.absolute.dir}" includes="*.jar" />
<fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
<fileset dir="${extensible.libs.classpath}" includes="*.jar" />
</classpath>
</javac>
Проблема в том, что когда я компилирую с ant compile
, я получаю следующую ошибку:
[javac].... cannot find symbol
[javac] symbol : constructor IOException(java.lang.String,java.security.NoSuchAlgorithmException)
[javac] location: class java.io.IOException
[javac] throw new IOException("Algorithm not found", e);
Кажется, что он был скомпилирован с JDK 1.5 вместо 1.6, хотя я установил целевое свойство на 1.6. Мой компьютер использует версию Java 1.6.0_20.
Я пытался использовать javac compiler="javac1.6"
, но я получаю ту же ошибку.
Я также установил в своем build.properties
:
ant.build.javac.target=1.6
ant.build.javac.source=1.6
но это тоже не решает проблему. Если установить значение 1,3 вместо 1,6, это приведет к большему количеству ошибок, поэтому, похоже, он использует JDK, который я здесь устанавливаю.
Как мне заставить это правильно скомпилироваться?