2013-04-15 2 views
4

Кажется, есть приличное количество вопросов о добавлении внешних банок в проекты android и проекты ant, но я не нашел решения, которое работает в этом случае. Я не слишком знаком с Ant, что, вероятно, раздражает проблему.Добавление внешних банок в проект Android UIautomator

Проблема в следующем: я пытаюсь добавить библиотеки JSch в свой проект uiautomator. Я поместил файл jsch.jar в папку/libs в надежде, что его найдет «android create uitest-project». Однако, не так - так, кажется, мне нужно изменить build.xml/ant.properties/build.properties или что-то, чтобы получить муравей найти в банку

Специфическая ошибка:

[javac] Compiling 5 source files to /Users/.../KeyEvents/bin/classes 
[javac] /Users/.../KeyEvents/src/com/proj/automation/core/coreSSH.java:9: error: package com.jcraft.jsch does not exist 

Строить .xml создается скриптом android, и Ant используется из коробки - так что я думаю, что мой кустарник-знание муравья является проблемой: P.

+0

Извините, я сосредоточился на аспекте выполнения, поэтому я избавился от своего ответа (чтобы помочь другим ответам). В Eclipse вы добавили бы его как внешний JAR в свой путь сборки. Если Ant не подбирает 'libs /' ... У меня нет ничего странного, как это исправить. Если вы не любите здесь, попробуйте группу Google adt-dev', это может быть просто отсутствующей функцией на стороне Ant-скрипта. – CommonsWare

+0

@CommonsWare Спасибо за обновление! Вы поощряли меня копаться в скриптах сборки муравьев. Хотя я до сих пор не знаю, что делать точно, кажется, что uitest.xml, импортированный в build.xml, не содержит никаких внешних файлов jar во время реального процесса сборки, хотя ссылочные идентификаторы есть. Это немного похоже на то, что они скопированы с других частей и удалены из компиляции внешние библиотеки. Это главным образом предположение. Мне просто нужно выяснить, как их добавить, если это так: S – Brian

+0

Любое обновление по этому вопросу? Кажется, я наткнулся на ту же проблему. – aragaer

ответ

0

если вы используете затмение

Из Project Explorer, щелкните правой кнопкой мыши на новом проекте, который вы создали, а затем выберите Свойства> Java Build Path, и выполните следующие действия: Нажмите Add External JARs ... и перейдите в каталог и добавьте файлы jar

1

посмотрите здесь [1]. Просто скопируйте этот файл и поместить разыскиваемую банку в директории LIBS, так запустить муравей строить, муравей установки и, наконец ::

ADB оболочки uiautomator RunTest YourTest.jar bundle.jar -c your.test

[ 1] - https://github.com/xiaocong/android-uiautomator-jsonrpcserver/blob/master/custom_rules.xml

2

создать каталог lib в проекте сохранить все необходимые jar там создайте новый custom_rule.xml и скопируйте ниже написанный код, тогда он будет работать файлом. Или вы можете вставить этот код в последний из build.xml тоже ,

<property name="jar.libs.dir" value="libs" /> 
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" /> 
<path id="classpath"> 
    <fileset dir="${jar.libs.absolute.dir}"> 
     <include name="your-helping-version.jar" /> 
     <include name="gson-2.2.2.jar" /> 
    </fileset> 
</path> 

<!-- version-tag: VERSION_TAG --> 
<import file="${sdk.dir}/tools/ant/uibuild.xml" /> 


<!-- overwrite the compile target in uibuild.xml to include to external 
    jars --> 
<target name="compile" depends="-build-setup, -pre-compile"> 
    <javac encoding="${java.encoding}" source="${java.source}" 
     target="${java.target}" debug="true" extdirs="" includeantruntime="false" 
     destdir="${out.classes.absolute.dir}" bootclasspathref="project.target.class.path" 
     verbose="${verbose}" fork="${need.javac.fork}"> 
     <src path="${source.absolute.dir}" /> 
     <classpath refid="classpath" /> 
     <compilerarg line="${java.compilerargs}" /> 
    </javac> 
</target> 

<!-- overwrite the -dex target in uibuild.xml to include external jar files 
    into the target dex file. --> 
<target name="-dex" depends="compile, -post-compile"> 
    <dex executable="${dx}" output="${intermediate.dex.file}" 
     nolocals="@{nolocals}" verbose="${verbose}"> 
     <fileset dir="${jar.libs.absolute.dir}"> 
      <include name="your-helping-version.jar" /> 
      <include name="gson-2.2.2.jar" /> 
     </fileset> 
     <path path="${out.classes.absolute.dir}" /> 
    </dex> 
</target> 
8

Привет я встречаю тот же problem.And я исправить это следовать следующие шаги:

  • 1 создать "ЛИЭС" dirtory в проекте dirtory, разместить все extrnal .jar файл в LIBS dirtory.
  • 2 добавьте файл custom_rules.xml в проект без изменений.

https://github.com/xiaocong/android-uiautomator-jsonrpcserver/blob/master/custom_rules.xml

<!-- Include external libs --> 
<property name="jar.libs.dir" value="libs" /> 
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" /> 
<path id="classpath"> 
    <fileset dir="${jar.libs.absolute.dir}"> 
     <include name="**/*.jar"/> 
    </fileset> 
</path> 

<property name="dex.file.name" value="classes.dex" /> 
<property name="out.dir" value="bin" /> 
<property name="out.absolute.dir" location="${out.dir}" /> 
<property name="out.absolute.bundle.dir" location="${out.absolute.dir}/bundle" /> 
<property name="intermediate.dex.bundle.file" location="${out.absolute.bundle.dir}/${dex.file.name}" /> 

<property name="out.bundle.file" value="${out.absolute.dir}/bundle.jar" /> 

<target name="-pre-compile"> 
    <mkdir dir="${out.absolute.bundle.dir}" /> 
</target> 

<!-- overwrite the compile target in uibuild.xml to include to external jars --> 
<target name="compile" depends="-build-setup, -pre-compile"> 
    <javac encoding="${java.encoding}" 
      source="${java.source}" target="${java.target}" 
      debug="true" extdirs="" includeantruntime="false" 
      destdir="${out.classes.absolute.dir}" 
      bootclasspathref="project.target.class.path" 
      verbose="${verbose}" 
      fork="${need.javac.fork}"> 
     <src path="${source.absolute.dir}" /> 
     <classpath refid="classpath"/> 
     <compilerarg line="${java.compilerargs}" /> 
    </javac> 
</target> 

<!-- empty default post-dex target. Create a similar target in 
    your build.xml and it'll be called instead of this one. --> 
<target name="-post-dex"> 
    <dex executable="${dx}" 
      output="${intermediate.dex.bundle.file}" 
      nolocals="@{nolocals}" 
      verbose="${verbose}"> 
     <fileset dir="${jar.libs.absolute.dir}"> 
      <include name="**/*.jar"/> 
     </fileset> 
    </dex> 
</target> 

<!-- empty default post-jar target. Create a similar target in 
    your build.xml and it'll be called instead of this one. --> 
<target name="-post-jar"> 
    <jar destfile="${out.bundle.file}"> 
     <fileset file="${intermediate.dex.bundle.file}" /> 
    </jar> 
</target> 

<target name="install" description="Install the test package"> 
    <exec executable="${adb}" failonerror="true"> 
     <arg line="${adb.device.arg}" /> 
     <arg value="push" /> 
     <arg value="${out.file}" /> 
     <arg value="/data/local/tmp" /> 
    </exec> 
    <exec executable="${adb}" failonerror="true"> 
     <arg line="${adb.device.arg}" /> 
     <arg value="push" /> 
     <arg value="${out.bundle.file}" /> 
     <arg value="/data/local/tmp" /> 
    </exec> 
</target> 

  • 3 выберите "build.xml" работает как "Ant Строить" каждый в порядке.

  • 4 сгенерирует буксировочный .jar файл, дополнительный файл банка называется "bundle.jar"

  • 5 толчок bundle.jar в/данные/местные/TMP/

  • 6 ADB оболочки uiautomator xxxTestCast.jar bunder.jar -c com.xxx.MainClass

это работает!

+0

Спасибо! Этот код решил мою проблему. : D – thiagolsilva