で、デバイス上のAndroidアプリを実行するために、どのように私は日食でrun
ボタンを押したときの動作としてだけアリとインストール後に私のアプリを起動できるようにしたいと思います。はアリ
コマンドラインでプロジェクトを作成した後、既存のAntタスクがあるか、私はアリで実行できるコマンドはありますか?
で、デバイス上のAndroidアプリを実行するために、どのように私は日食でrun
ボタンを押したときの動作としてだけアリとインストール後に私のアプリを起動できるようにしたいと思います。はアリ
コマンドラインでプロジェクトを作成した後、既存のAntタスクがあるか、私はアリで実行できるコマンドはありますか?
実行するには、あなたのapp.ofcourseを起動する必要がありますあなたは、アプリケーションを起動しようとするアプリケーションを構築し、インストールする必要があります...あなたは、アプリケーションをインストールするために "adbのインストール"を構築して使用するためにアンドロイドのビルドXMLを使用することができます.. 。
私はこの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
をとそれはすごくうまくいく。
EDIT
WarrenFaithが親切コメントで指摘したように{activity}
は.
接頭辞を持つ主な活動のクラス名でなければなりません。
だから、最後の引数の値の完全な例は、あなたのbuild.xmlまたはcustom_rules.xmlにターゲットを以下のコピー、一般
org.package.name/.MyCustomActivity
誰もが私のように苦労しています: '{活動}'が '.'(ドット!)で始まらなければならないことを忘れないでください。サンプル:また、最初からアプリを再起動するには、「
ナイスアイデアzode64、多分あなたはそれを追加する必要がありますアリターゲット? –
複数のデバイスが接続されていると、これは失敗します。インストールするデバイスを確認するための方法はありますか?あなたは 'アリ-Dadb.device.arg =試みることができるのantを実行 – karl
だろう。 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>
この回答は、アンドロイドプロジェクトフォーマットと最も緊密に統合されているため、zode64が提供するものより優れています。 – smaudet
<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)。
+1本当に良い質問。 'ant'と' makefile'の組み合わせを使って自分の 'compile-> install'プロセス全体を自動化しましたが、唯一欠けているのはエミュレータ内のappです。 –