2012-01-26 6 views
19

で、デバイス上のAndroidアプリを実行するために、どのように私は日食でrunボタンを押したときの動作としてだけアリとインストール後に私のアプリを起動できるようにしたいと思います。はアリ

コマンドラインでプロジェクトを作成した後、既存のAntタスクがあるか、私はアリで実行できるコマンドはありますか?

+0

+1本当に良い質問。 'ant'と' makefile'の組み合わせを使って自分の 'compile-> install'プロセス全体を自動化しましたが、唯一欠けているのはエミュレータ内のappです。 –

答えて

10

実行するには、あなたのapp.ofcourseを起動する必要がありますあなたは、アプリケーションを起動しようとするアプリケーションを構築し、インストールする必要があります...あなたは、アプリケーションをインストールするために "adbのインストール"を構築​​して使用するためにアンドロイドのビルドXMLを使用することができます.. 。

32

私はこの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 
+2

誰もが私のように苦労しています: '{活動}'が '.'(ドット!)で始まらなければならないことを忘れないでください。サンプル:また、最初からアプリを再起動するには、「 adbのシェル午前力ストップ」コマンドを使用することができます:-) 'org.package.name/.MyCustomActivity' – WarrenFaith

+2

ナイスアイデアzode64、多分あなたはそれを追加する必要がありますアリターゲット? –

+0

複数のデバイスが接続されていると、これは失敗します。インストールするデバイスを確認するための方法はありますか?あなたは 'アリ-Dadb.device.arg =試みることができるのantを実行 – karl

13

だろう。 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> 
+0

この回答は、アンドロイドプロジェクトフォーマットと最も緊密に統合されているため、zode64が提供するものより優れています。 – smaudet

0
<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)。

関連する問題