Hallo,
jetzt stolpere ich endlich mal (wieder) über den Exit Code 1. Ich wollte ein XE6 Projekt mit einigen kleineren Änderungen unter XE7 auf einem Android (S5) Gerät testen und siehe da ... Exit Code 1.
DCU's habe ich schon gelöscht, das Gerät läuft unter XE6 einwandfrei, Debug Modus etc. sind also aktiviert. Vorher wird folgender Befehl ausgeführt:
Code:
c:\program files (x86)\embarcadero\studio\15.0\bin\paclient.exe -u8
--aaptpackage="C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\
sdk\build-tools\android-4.4\Aapt.exe,.\Android\Release\xxx\library,.\Android\Release\xxx\classes,.\Android\Release\xxx\res,.\Android\Release\xxx\assets,.\Android\Release\xxx\AndroidManifest.xml,C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\
sdk\platforms\android-19\android.jar,.\Android\Release\xxx\bin\xxx-unsigned.apk"
Es kommt in folge also nicht zu einer Signierung. Führe ich den Befehl in einer CMD aus, so kommt der Fehler
Code:
xxx\res\drawable\splash_image_def.xml:2: error: Error: No resource found that matches the given name (at 'src' with value '@drawable/splash_image').
Die Lösung ist ganz einfach: In den Projekt-Optionen war das "Startbild". Das war aktiviert, aber nicht definiert. Aktiviert habe ich es nie (in XE6 gibt es die Option noch nicht).
===
Als nächstes kam der PA Client 8. Der kam, weil es im Verzeichnis "c:\Users\Public\Documents\Embarcadero\Studio\15.0 \PlatformSDKs\adt-bundle-windows-x86-20131030\
sdk\tools\" keine "ZIPAlign.exe" gab.
===
Zu guter letzt habe ich mindestens 1 Stunde mit ShowMessage und MessageDlg verbracht. Sorry EMBT, aber irgendwie lauft ihr nicht ganz rund. Es mag ja sein, dass die unter Android nicht blockierend sein dürfen, aber es lief gut. Hier ein Workaround für alle Pfuscher:
Code:
procedure TfrmMain.ShowMessage(const Msg: string);
begin
MsgDlgResult := -1;
FMX.Dialogs.MessageDlg(Msg, TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOk], 0,
procedure(const AResult: TModalResult)
begin
MsgDlgResult:= AResult;
end
);
while MsgDlgResult<0 do Delay(10);
end;
function TfrmMain.MessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
MsgDlgResult := -1;
FMX.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx,
procedure(const AResult: TModalResult)
begin
MsgDlgResult:= AResult;
end
);
while MsgDlgResult<0 do Delay(10);
Result := MsgDlgResult;
end;
===
Die gute Nachricht (und allen diesbezüglichen Diskussionen hier zum Trotze) werden Android-App's jetzt nach Aufruf von "SharedActivity.Finish;" korrekt beendet und lassen sich auch wieder problemlos starten.
Falls also noch andere über diese Fehler stolpern ...