Как запустить приложение Android на устройстве с помощью ant
Я хотел бы иметь возможность запускать свое приложение после установки с помощью ant так же, как это происходит при нажатии кнопки run
в eclipse.
Есть ли существующая задача ant после создания проекта в командной строке или есть команда, которую я мог бы выполнить с помощью ant?
Ответы
Ответ 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).