2012-03-31 21 views
1

私はEclipseを使用して、複数のアンドロイドアプリケーションでアンドロイドサブシステムを開発しています。コードを変更すると、個々の実行構成をクリックしてアプリケーションを再インストールする必要があることがよくあります。これは時間がかかります。実行コンフィギュレーションをグループ化して、ワンクリックで自動的に実行する方法はありますか?Eclipseから複数のアンドロイド実行コマンドを同時に実行する方法は?

答えて

1

がひどく難しいことではありません取得し、起動構成のリストを実行するためのEclipse SDKを使用して単純なコマンドプラグインを作成することが判明します。 "Hello World" plugin tutoria lから始めて、ツールバーにコマンドボタンを作成し、ResourcesPluginとDebugPluginに依存関係を追加し、SimplerHandler.javaに次のコードを追加しました。ボタンがクリックされると、このコードはすべての起動設定を実行し、情報を含む小さなウィンドウを表示します。ちょっと洗練されたプラグインは、ハードコードされた設定を実行するようにできます。私は起動のお気に入りにハンドルを取得し、それらを実行する可能性を推測しています。

public Object execute(ExecutionEvent event) throws ExecutionException 
{ 
    StringBuffer sb = new StringBuffer(); 

    // Get root of workspace 
    IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot(); 

    // Get projects 
    IProject[] projects = wsRoot.getProjects(); 
    sb.append("projects: " + projects.length); 

    // Get launch manager and launch configurations 
    ILaunchManager launchMgr = DebugPlugin.getDefault().getLaunchManager(); 
    ILaunchConfiguration launchConfigs[] = null; 
    try 
    { 
     launchConfigs = launchMgr.getLaunchConfigurations(); 
    } 
    catch (CoreException e) 
    { 
     e.printStackTrace(); 
    } 
    sb.append(" launch configs:" + launchConfigs.length); 

    for (int i = 0; i < launchConfigs.length; i++) 
    { 
     ILaunchConfiguration config = launchConfigs[i]; 
     String name = config.getName(); 
     sb.append("\nlaunching " + name + "..."); 
     try 
     { 
      config.launch("debug", null, false); 
     } 
     catch (CoreException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    // Print out the info... 
    IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); 
    MessageDialog.openInformation(
      window.getShell(), 
      "Ag-eclipse-runner", 
      sb.toString()); 

    return null; 
} 
0

いやあなたは窓 にUNIXまたはバットでSHでスクリプトを書くことができますが、私はのRuntime.execを(使用して単純なJavaでそれを書くことを好む) あなたは、私がこれを使用

adb install -r path/bin/file.apkようなものを実行しなければならないでしょうコード生成を自動化するための種類のもの&アンドロイドビルド

+0

ありがとうございます。このアプローチの問題点は、コードの変更後にapkが実行コンフィギュレーションを実行するまでEclipseによって再構築されないことです。繰り返しますが、3〜4つのプロジェクトを変更してから、apkを再構築して再インストールするボタンを1つクリックします。 –

+0

デフォルトで設定されているアンドロイドビルダーのオプション「パッケージをスキップし、エクスポートまたは起動するまでデクシングする」が見つかりました。だからこそ私のAPKはオートビルドが有効になっていてもビルドされていなかった。残念ながら、これをオンにすると、自動構築が大幅に遅くなります。だから私はいくつかのアプリでコードを変更し、apkを生成して1回のインストールでコードを変更する方法を探しています。自動ビルドクラスを使ってパッキングやデクシングを行う方法があるかどうかを知るために、蟻を調べます。どんな提案も大歓迎です。 –

+0

いいえ、私は完全ではありませんでした。私はソースからapksを再構築し、インストールするためにこのメソッドを使います。私はandroid.bat、antとadb、3行を実行し、すべてを自動化するJavaプログラムを持っています。もちろん、私はそれを書いて2日を費やしました、そして、それは自明ではありません。おそらく、既存のツールがそれを行うことができます。あるいは、私がしたように、あなた自身で書く必要があります。 – Joel

0

monkeyrunnerは、ほとんどのプラットフォームに依存しないソリューションを提供します。活動のAPKをインストールして起動するには、このようなものを使用することができます。

#! /usr/bin/env monkeyrunner 
# Imports the monkeyrunner modules used by this program 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

# Connects to the current device, returning a MonkeyDevice object 
device = MonkeyRunner.waitForConnection() 

# Installs the Android package. Notice that this method returns a boolean, so you can test 
# to see if the installation worked. 
device.installPackage('myproject/bin/MyApplication.apk') 

# sets a variable with the package's internal name 
package = 'com.example.android.myapplication' 

# sets a variable with the name of an Activity in the package 
activity = 'com.example.android.myapplication.MainActivity' 

# sets the name of the component to start 
runComponent = package + '/' + activity 

# Runs the component 
device.startActivity(component=runComponent) 
+0

以前の提案と同様にこれはapkがすでに構築されていることを前提としています。 –

+0

Eclipseを使用していてBuild Automaticallyが設定されている場合、APKが構築されています。それ以外の場合は、スクリプト内で 'ant'を呼び出すことができます。 –

+0

いいえ、自動ビルドをテストしましたが、apkはソースコードの変更ごとに再構築されません。あなたはAPKが構築される前に実行設定をヒットする必要があります。 antを実行することは可能ですが、Eclipseでapkを再構築するよりもかなり遅いです。 –

関連する問題