2012-03-31 6 views
1

Ich entwickle ein Android-Subsystem mit mehreren Android-Anwendungen, mit Eclipse. Wenn ich Codeänderungen durchführe, muss ich die Anwendungen oft neu installieren, indem ich auf die einzelnen Laufkonfigurationen klicke. Dies ist zeitaufwendig. Gibt es eine Möglichkeit, die Laufkonfigurationen so zu gruppieren, dass sie automatisch mit einem einzigen Klick ausgeführt werden?Von Eclipse, wie kann ich mehrere Android-Laufbefehle gleichzeitig ausführen?

Antwort

1

Stellt sich heraus, es ist nicht furchtbar schwer, einen einfachen Befehl Plugin Eclipse SDK zu schreiben zu erhalten und eine Liste der Startkonfigurationen auszuführen. Ich konnte dies tun, beginnend mit der "Hallo Welt" plugin tutoria l, die eine Befehlsschaltfläche in der Symbolleiste erstellt, dann Abhängigkeiten zu ResourcesPlugin und DebugPlugin hinzugefügt, und den folgenden Code zu SimplerHandler.java. Wenn die Schaltfläche angeklickt wird, führt dieser Code alle Startkonfigurationen aus und öffnet ein kleines Fenster mit Informationen. Mit ein wenig Verfeinerung könnte das Plugin dazu gebracht werden, einen fest codierten Satz von Konfigurationen auszuführen. Ich schätze, es ist möglich, die Startfavoriten in den Griff zu bekommen und diese einfach auszuführen.

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

ja Sie ein Skript in sh in Unix oder Fledermaus in Windows schreiben können, aber ich ziehe es in einfachen Java schreiben mit Runtime.exec() würden Sie so etwas wie adb install -r path/bin/file.apk

ich dies verwenden, um auszuführen haben Art von Zeug zu automatisieren Code-Generierung & Android Build

+0

Danke. Das Problem mit diesem Ansatz besteht darin, dass die Apk nach einer Code-Änderung erst dann von Eclipse neu erstellt wird, wenn sie die Run-Konfiguration erreicht hat. Auch hier würde ich gerne 3-4 Projekte ändern und dann auf eine Schaltfläche klicken, um die Apk neu zu erstellen und neu zu installieren. –

+0

Habe gerade eine Android-Builder-Option gefunden, die "packen und dexieren bis zum Export oder Start" auslässt, was standardmäßig eingestellt ist. Deshalb wurde meine Apk nicht gebaut, obwohl die Auto-Builds eingeschaltet waren. Beim Einschalten werden die Auto-Builds leider erheblich verlangsamt. Daher suche ich immer noch nach einer Möglichkeit, Codeänderungen in mehreren Apps vorzunehmen und dann die Apk zu generieren und sie auf einen Schlag zu installieren. Wird in ant schauen, um zu sehen, ob es eine Möglichkeit gibt, einfach mit den Auto-Build-Klassen zu packen und zu dexieren. Irgendwelche Vorschläge willkommen. –

+0

Okay, ich war nicht vollständig. Ich benutze diese Methode, um apks von Quelle neu zu erstellen und zu installieren. Ich habe ein Java-Programm, das android.bat, ant und adb, die 3 in einer Reihe ausführt und alles automatisiert. Natürlich habe ich 2 Tage damit verbracht es zu schreiben und es ist nicht trivial. Vielleicht kann ein bestehendes Tool das machen. Oder vielleicht müssen Sie es selbst schreiben, wie ich es tat. – Joel

0

monkeyrunner kann Ihnen die meisten Plattform-unabhängige Lösung geben. Um APKs zu installieren und starten Aktivitäten können Sie so etwas wie folgt verwenden:

#! /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

Wie beim vorherigen Vorschlag , das geht davon aus, dass die apk bereits gebaut ist. –

+0

Wenn Sie Eclipse verwenden und Automatisch erstellen ist festgelegt, dass Ihr APK erstellt wird. Andernfalls können Sie 'ant' im Skript aufrufen. –

+0

Nein, ich habe automatische Builds getestet und die APK wird nicht bei jeder Änderung des Quellcodes neu erstellt. Sie müssen die Run-Konfiguration treffen, bevor die Apk erstellt wird. Running ant ist eine Möglichkeit, aber es ist wesentlich langsamer als die Wiederherstellung der Apk mit Eclipse. –

Verwandte Themen