Подтвердить что ты не робот

Как запустить приложение Android на устройстве с помощью ant

Я хотел бы иметь возможность запускать свое приложение после установки с помощью ant так же, как это происходит при нажатии кнопки run в eclipse.

Есть ли существующая задача ant после создания проекта в командной строке или есть команда, которую я мог бы выполнить с помощью ant?

4b9b3361

Ответ 1

Выполнение adb shell am start -a android.intent.action.MAIN -n <Package_name>/.<Activity> из ant должно запуститься в вашем приложении. Вы должны создать и установить приложение, пытающееся запустить приложение... вы можете использовать android build xml для создания и использования "adb install" для установки приложение...

Ответ 2

Используя команду, предоставленную Navin, я смог создать эту цель ant:

<target name="run">
    <exec executable="adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="{package.name}/{activity}"/>
    </exec>
</target>

В командной строке я выполняю:

ant debug install run

И все это работает плавно.

ИЗМЕНИТЬ

Как WarrenFaith с полезной ссылкой в ​​комментариях {activity} должен быть именем класса основного действия с префиксом ..

Таким образом, полный пример значения последнего arg будет

org.package.name/.MyCustomActivity

Ответ 3

Как правило, скопируйте следующую цель в свой файл build.xml или custom_rules.xml. Обратите внимание, что в custom_rules.xml(если он еще не существует) вам нужно обернуть это в элемент.

<target name="start">
    <xpath input="AndroidManifest.xml"
           expression="/manifest/@package"
           output="manifest.package" />
    <xpath input="AndroidManifest.xml"
           expression="/manifest/application/activity[intent-filter/action/@android:name='android.intent.action.MAIN']/@android:name"
           output="manifest.main" />
    <echo level="info">Restart main activity ${manifest.package}/.${manifest.main}</echo>
    <exec executable="${android.platform.tools.dir}/adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-S"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="${manifest.package}/.${manifest.main}"/>
    </exec>
</target>

Ответ 4

<target name="run">
    <exec executable="adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="{package.name}/{activity}"/>
    </exec>
</target>

Я просто хочу сказать, что {package.name} должен быть равен <manifest> package, а {activity} должен быть полным квалифицированным именем основного действия (то есть с его именем пакета, например com.example.activty. MainActivty).