2016-04-29 10 views
0

Ich versuche, eine TFS Build agent einzurichten, um mein Xamarin.Android Projekt automatisch bei jedem Check-in zu bauen.Fehlende Android NDK Werkzeugketten Verzeichnis ‚ Toolchains‘, wenn Server Xamarin.Android mit gehosteten tfs bauen Bau

Ich habe die Schritte folgen hier beschrieben: https://msdn.microsoft.com/library/vs/alm/build/apps/xamarin zum Einrichten eines Hosted Build-Agenten.

TFS Build-Vorlagen haben auch eine Xamarin.Android Vorlage, die Sie erwarten, dass sie bereit sind zu gehen. Dies wird auch aus den obigen Link gesichert, die besagt, Sie

eine Xamarin.Android Lösung auf einem Hosted Pool bauen Aber ich halte die folgende Fehlermeldung erhalten, das Projekt auf den Aufbau:

Fehlende Android NDK Werkzeugketten Verzeichnis ‚\ Werkzeugketten '. Bitte installieren Sie das Android NDK

fand ich einen Link auf Xamarin https://developer.xamarin.com/guides/cross-platform/ci/configuring_tfs/tfs-and-xa/ die sagt, ich brauche auf die Build-Computer anmelden und kopieren und das Android NDK auf meine Remote-Computer einfügen.

Aber offensichtlich mit einem gehosteten Pool kann ich nicht in Maschine anmelden.

Fehle ich etwas in meinem Setup?

+0

A s extra info, wenn ich dies zu 'debug 'anstelle von' Release 'baue es funktioniert – user1

+0

Auch zu beachten, kann ich eine' Release' Build mit der gleichen Quelle auf meinem lokalen Rechner – user1

+0

können Sie die gesamten Protokolle für die fehlgeschlagen teilen bauen? –

Antwort

1

Schritt für Schritt Anleitung, um dieses Problem zu lösen.

Wenn Sie können, würde ich empfehlen, einen eigenen Build-Host mit Visual Studio 2015 Update 2 mit Xamarin und this link einzurichten. Danach können Sie this Xamarin link verwenden, um sicherzustellen, dass. 1. Ihr Java-SDK und NDK sind in einem lokalen (nicht benutzerspezifischen Bereich, die, wenn Sie Visual Studio installiert verwenden sie sein sollten) und die Umgebungsvariablen hinzugefügt wurden (von dem Xamarin Link):

Einstellen Umwelt Variablen Während des automatisierten Buildprozesses benötigt Xamarin.Android Zugriff auf das Android SDK und NDK unter den Pfade, die oben eingestellt wurden.Dies geschieht am besten durch Setzen von Anpassung mehrerer serverweiter Umgebungsvariablen:

Wenn noch nicht, loggen Sie sich als Administrator auf dem TFS-Rechner ein. Öffnen Systemsteuerung Typ Umwelt in das Suchfeld ein, wählen Sie Bearbeiten, um die Systemumgebungsvariablen, und klicken Sie dann auf die Umwelt Variablen ... Taste, um den folgenden Dialog zu öffnen:

unter Systemvariablen wählen ANDROID_HOME und klicken Sie auf Bearbeiten ... oder wenn ANDROID_HOME nicht vorhanden ist, klicken Sie auf Neu ... um es zu schaffen:

den Wert auf c: \ android-sdk (oder wo auch immer Sie das SDK bewegt) und klicken Sie auf OK. Unter Systemvariablen wählen ANDROID_NDK_PATH und klicken Sie auf Bearbeiten ... (oder Neu ... falls erforderlich):

der Wert auf C: \ android-NDK \ android-NDK-R8d (oder wo auch immer Sie bewegt das NDK) und klicken Sie auf OK . Beachten Sie, dass Sie den zweiten Ordnernamen in diesen Wert benötigen. Wählen Sie die Pfadvariable, klicken Sie auf Bearbeiten ... und hängen Sie ; c: \ android-sdk (oder den von Ihnen verwendeten Ordner) an das Ende des Pfades an und klicken Sie auf OK. Vergessen Sie nicht, das Semikolon (;) Trennzeichen zwischen diesem und vorherigen Einträgen einzufügen.

Überprüfen Sie die Änderungen, indem Sie eine Eingabeaufforderung öffnen, Set eingeben und die Variablen untersuchen. Der Team Foundation Server sollte nun in der Lage sein, Android-Apps in einem Teamprojekt zu erstellen ( ).

Danach müssen Sie die folgenden Eigenschaften auf False in Ihrer Datei project.Android.csproj setzen.

öffnen Sie die Datei in Notepad, in die Release-Konfiguration Abschnitt gehen und stellen Sie folgendes falsch:

<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime> 
<EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk> 
<BundleAssemblies>False</BundleAssemblies> 

Ihr Projekt jetzt auf einem gehosteten Pool bauen!

Obwohl ich denke, dies verbirgt das eigentliche Problem als setzen diese auf True baut auf Ihrem lokalen Build-Agent.

Ich denke, die Microsoft gehosteten Pool die Android NDK Umgebungsvariable fehlt, wie es

in den Fähigkeiten in TFS zeigen tut
1

Es gibt ein gleiches Problem auf Xamarin Foren und finden Sie die Lösung darin:

Korrigiert: Als Update, wenn jemand dieses Problem hat, wenn Freigabe Gebäude (das die NDK \ Werkzeugketten fehlt) Es scheint, dass mkbundle kaputt ist.

Die Grundursache ist, dass "MakeBundleNativeCodeExternal" für Freigabe und falsch für Debug erfüllt ist. Obwohl dies als Lizenzierung Problem angezeigt wird, hat mein Build-Agent eine Enterprise-Lizenz installiert.

Deaktivieren "MakeBundleNativeCodeExternal" in Release baut von das Android-Projekt in Notepad Bearbeitung, die Suche nach 'BundleAssemblies' - und dem 'True' unter Release-Konfiguration Abschnitt auf 'False' ändert speichern, baut Mitteilung, funktioniert.

Siehe diesen Link für Details: Missing Android NDK toolchains directory

+0

Zunächst sah das gut aus, als könnte es das Problem lösen. Aber das Ändern dieser Eigenschaft ergab leider immer noch den gleichen Fehler – user1

+0

@ user1 Da es keine Konfiguration von Hosted Build Agent gibt, kann der Build auf Ihrem lokalen Computer erfolgreich abgeschlossen werden. Bevor Sie die Ursache ermitteln, können Sie einen eigenen Build-Agent bereitstellen, um den Build auszuführen, indem Sie der folgenden Anleitung folgen: https://msdn.microsoft.com/en-us/library/vs/alm/build/agents/windows –

+0

Ich habe meinen eigenen Build-Agent konfiguriert und VisualStudio 2015 Update 2 mit Xamarin installiert. Dies kam mit dem NDK und JDK. Ich habe dann die Umgebungsvariablen gemäß [https://developer.xamarin.com/guides/cross-platform/ci/configuring_tfs/tfs-and-xa/](https://developer.xamarin.com/guides/cross) hinzugefügt -platform/ci/configuring_tfs/tfs-and-xa /) aber immer noch den gleichen Fehler. Ich kann das Verzeichnis jetzt in den VisualStudio Agent Pool-Funktionen und sogar dem Toolchains-Verzeichnis sehen, aber immer noch kein Glück. – user1

1

Das ursprüngliche Problem über den Aufbau einer Xamarin Android App auf einem VSTS war Agent gehostet und mit einem Fehler weil das Android NDK nicht gefunden werden kann.

Ja, der Build funktioniert, wenn Sie Optionen wie EmbedAssembliesIntoApk oder BundleAssemblies deaktivieren, aber dies ist keine echte Lösung, besonders wenn Sie diese Optionen aktivieren müssen.

Da der Android NDK-Pfad beim Erstellen auf einem gehosteten Agenten nicht gefunden wird, besteht die Lösung darin, den Android NDK-Pfad manuell festzulegen. In der Build-Task in den MSBuild Optionen bieten die folgenden zusätzlichen Argument:

  • VS2015 Hosted agent: /p:AndroidNdkDirectory="C:\java\androidsdk\android-ndk-r13b"
  • VS2017 Hosted agent: /p:AndroidNdkDirectory="C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b"

Wenn Sie mehr darüber wissen wollen Ausgabe schrieb ich einen Artikel, der Ihnen mehr Details geben:

Building a Xamarin Android App with Bundle assemblies into native code option enabled on an Azure Visual Studio Team Services (VSTS) hosted agent (And getting the following error: "Error : Could not find a part of the path 'd:\platforms'."?)

+0

Das Problem für mich für einen OnPremise-Agent gelöst –