Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   MAC OSX App für den Appstore XE7 SP1 (https://www.delphipraxis.net/182884-mac-osx-app-fuer-den-appstore-xe7-sp1.html)

arnof 24. Nov 2014 07:38

MAC OSX App für den Appstore XE7 SP1
 
Hallo,

ich versuche gerade mal wieder eine App für den MAC OSX Appstore hochzuladen :cry:

Hier sagt mir itunesconnect "Ungültige Binärdatei"

und per Mail wird man nun aufgeklärt das eine mitgelieferte CSV Datei nicht signiert ist :?::!:

code object is not signed at all
In subcomponent: ..../Contents/MacOS/wasauchimmer.csv

Frage, weis jemand in welches Verzeichnis man zusätzlich Dateien auslagern muss, damit das nicht mehr angemeckert wird ?

arnof 25. Nov 2014 00:20

AW: MAC OSX App für den Appstore XE7 SP1
 
Falls es jemand interessiert:

ich habe nun alles zusätzliche (styles, txt und csv) in das Verzeichnis Contents/Resources gelegt.

Die akzeptiert Apple nun :thumb:

Daniel 25. Nov 2014 07:07

AW: MAC OSX App für den Appstore XE7 SP1
 
Danke für die Information. :-)

CHackbart 4. Dez 2014 09:16

AW: MAC OSX App für den Appstore XE7 SP1
 
Gerade wollte ich in einem früheren Post das selbe schreiben. Wenn man mit XE5 eine Anwendung in den Store stellen will muss folgendes beachtet werden:

Libraries gehören aus dem MacOS in den Frameworks Pfad. Für die Erkennung des Verzeichnisses nutze ich u.a. folgenden Code:

Delphi-Quellcode:
  AutoReleasePool := TNSAutoreleasePool.Create();
  try
    AutoReleasePool.init;
    bundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
    result := string(UTF8String(bundle.executablePath.UTF8String));
    result := TDirectory.GetParent(TDirectory.GetParent(result)) +
      '/Frameworks/';
  finally
    AutoReleasePool.release;
  end;
Außerdem muss die Entitlements.plist aus der "Contents\"-Root in das "Contents\Resources\" Verzeichnis.

Christian

arnof 4. Dez 2014 19:27

AW: MAC OSX App für den Appstore XE7 SP1
 
So nun ist der Review abgelehnt worden:

ich benutzte FireDac und greife damit auf sqlite zu, liefere die libsqlite3.dylib nicht mit aus, da die auf den macs vorhanden ist.

Keine Ahnung wie man das mit dem Path macht mit Delphi:?::

2.2: Apps that exhibit bugs will be rejected
2.2

The app references frameworks in a fragile manner, which might result in bugs.

The app references the following frameworks using a relative path:

'@rpath/libsqlite3.dylib'

Best Mac OS X development practices suggest using (in order)

@executable_path/
@loader_path/
@rpath/

For more information about linking frameworks, please see the following documents:

* Run-Path Dependent Libraries section of Dynamic Library Programming Topics

* dyld(1) man page

If you are unable to reproduce this issue, ensure you are testing the exact version of the app that you submitted for review, and that you're doing so in a minimally privileged environment. See Technical Q&A QA1778: How to reproduce bugs reported against Mac App Store submissions.

For information on how to symbolicate and read a crash log, please see Technical Note TN2123 - CrashReporter.

CHackbart 4. Dez 2014 20:02

AW: MAC OSX App für den Appstore XE7 SP1
 
Das liest sich so, als ob der die bemängeln das die sqlite Bibliothek global aufgerufen wird. Pack die einfach mal mit in dein Release.

arnof 11. Dez 2014 07:54

AW: MAC OSX App für den Appstore XE7 SP1
 
Zitat:

Zitat von arnof (Beitrag 1282271)
So nun ist der Review abgelehnt worden:

ich benutzte FireDac und greife damit auf sqlite zu, liefere die libsqlite3.dylib nicht mit aus, da die auf den macs vorhanden ist.

Keine Ahnung wie man das mit dem Path macht mit Delphi:?::

2.2: Apps that exhibit bugs will be rejected
2.2

The app references frameworks in a fragile manner, which might result in bugs.

The app references the following frameworks using a relative path:

'@rpath/libsqlite3.dylib'

Best Mac OS X development practices suggest using (in order)

@executable_path/
@loader_path/
@rpath/

For more information about linking frameworks, please see the following documents:

* Run-Path Dependent Libraries section of Dynamic Library Programming Topics

* dyld(1) man page

If you are unable to reproduce this issue, ensure you are testing the exact version of the app that you submitted for review, and that you're doing so in a minimally privileged environment. See Technical Q&A QA1778: How to reproduce bugs reported against Mac App Store submissions.

For information on how to symbolicate and read a crash log, please see Technical Note TN2123 - CrashReporter.

Ja wieder mit der gleichen Begründung abgelehnt, packe ich die libSQLite3.dylib ins Paket, so geht die Signierung wieder nicht :kotz:

Mal eine Frage, hat irgend jemand eine Datenbank basierte App in den Appstore bekommen (seit August) :?: Hier meine ich nicht nur XE5/6/7 sondern auch xcode, da die Signierung ja alle betrifft!

CHackbart 11. Dez 2014 09:38

AW: MAC OSX App für den Appstore XE7 SP1
 
Ich nutze auch dynamische Bibliotheken, allerdings konnte ich seit geraumer Zeit nicht mehr mit XE5 meine Apps signieren. XE7 hab ich nicht getestet, aber was geht ist die Bibliothek in einen Frameworks Unterpfad zu packen und via Konsole zu signieren.
Also sowas:

sudo codesign -f -v -s "3rd Party Mac Developer Application" "appname.app" --deep --entitlements "appname.app/Contents/Resources/Entitlements.plist"
sudo productbuild --component "appname.app" /Applications --sign "3rd Party Mac Developer Installer" --product "appname.app/Contents/info.plist" appname.pkg

Natürlich kann es auch sein, dass ich Reis erzähle, da mein aktuelles Update noch nicht reviewed wurde und es eventuell noch abgelehnt werden kann. Alles in allem nervige Stolperfallen bei denen man sich fragt ob sich der Aufwand eine App für deren "doofen" Store zu erstellen überhaupt lohnt.

arnof 12. Dez 2014 17:47

AW: MAC OSX App für den Appstore XE7 SP1
 
Zitat:

Zitat von CHackbart (Beitrag 1282203)
Gerade wollte ich in einem früheren Post das selbe schreiben. Wenn man mit XE5 eine Anwendung in den Store stellen will muss folgendes beachtet werden:

Libraries gehören aus dem MacOS in den Frameworks Pfad. Für die Erkennung des Verzeichnisses nutze ich u.a. folgenden Code:

Delphi-Quellcode:
  AutoReleasePool := TNSAutoreleasePool.Create();
  try
    AutoReleasePool.init;
    bundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
    result := string(UTF8String(bundle.executablePath.UTF8String));
    result := TDirectory.GetParent(TDirectory.GetParent(result)) +
      '/Frameworks/';
  finally
    AutoReleasePool.release;
  end;
Außerdem muss die Entitlements.plist aus der "Contents\"-Root in das "Contents\Resources\" Verzeichnis.

Christian

Hi, wie machts Du das mit dem dylib path? Du suchts hier das Verzeichnis heraus ? und dann ? wo setzt Du den Suchpath für die dylib ?

arnof 12. Dez 2014 22:40

AW: MAC OSX App für den Appstore XE7 SP1
 
weiss jemand woher man eine libsqlite3.dylib herbekommen kann. Ich habe nur was in Uralten SDK's gefunden, was der Apploader ablehnt.

CHackbart 13. Dez 2014 18:27

AW: MAC OSX App für den Appstore XE7 SP1
 
Also mein neues JustRadio Update wurde heute Nacht quasi innerhalb von ner halben Stunde reviewed und durchgewunken.

Ich lade meine Bibliotheken normal via handle := loadlibrary(PChar(Libfolder()+'libname.dylib')); Wobei die Funktion Libfolder in dem Fall wie in meinem letzten Post ausschaut.
Theoretisch könnte man so etwas machen: result := TDirectory.GetParent(TDirectory.GetParent(Paramstr (0)))+'/Frameworks/'. Das fand ich persönlich allerdings zu unsauber.

Vorkompilierte Binaries von SQLite gibts u.a. hier: https://www.sqlite.org/download.html. Ich weiß aber nicht ob die sehr aktuell sind. Selber nutze ich eine wesentlich ältere Build.

Christian

arnof 13. Dez 2014 19:35

AW: MAC OSX App für den Appstore XE7 SP1
 
Zitat:

Zitat von CHackbart (Beitrag 1283353)
Also mein neues JustRadio Update wurde heute Nacht quasi innerhalb von ner halben Stunde reviewed und durchgewunken.

Ich lade meine Bibliotheken normal via handle := loadlibrary(PChar(Libfolder()+'libname.dylib')); Wobei die Funktion Libfolder in dem Fall wie in meinem letzten Post ausschaut.
Theoretisch könnte man so etwas machen: result := TDirectory.GetParent(TDirectory.GetParent(Paramstr (0)))+'/Frameworks/'. Das fand ich persönlich allerdings zu unsauber.

Vorkompilierte Binaries von SQLite gibts u.a. hier: https://www.sqlite.org/download.html. Ich weiß aber nicht ob die sehr aktuell sind. Selber nutze ich eine wesentlich ältere Build.

Christian

Ja danke. Eigentlich geht ja bei mir alles, bis auf Apple: ich habe nun die libsql3.dylib von meinen Mac selbst genommen. Signierung geht; alles geht, ABER: der Apploader sagt, das unterstützt mehr als X86 und X64, deshalb geht das nicht :kotz:

Unter www.sqlite.org und sonst wo auf der googlewelt habe ich keine libsqlite3.dylib zum download gefunden, die müsste man quasi wohl selbst aus dem Quellcode erstellt :kotz:

Nun mache ich gerade folgendes, damit die App den Review übersteht :?::roll:

Ich prüfe, ob die libsqlite3.dylib verfügbar ist (via eigenem LoadLibary), falls nicht bleibt die App im "Offlinemodus", wo nicht alle Funktionen verfügbar sind.

Gibt es irgendwo ein Recht was man eintragen kann/muss, um auf /usr/lib zugreifen zu können ? (Dort ist die Maceigene dylib ....

arnof 16. Dez 2014 23:21

AW: MAC OSX App für den Appstore XE7 SP1
 
So letzter Versuch, nun neue Version hochgeladen und dem Reviewer nochmals eindringlich beschrieben, das die libsqlite3.dylib eine System und damit eine SharedFramework ist. Wenn das wieder nicht geht, so ist wohl keine Mac App mit SQLite und Appstore mehr möglich.

PS: Ausgeliefert 3.0 :kotz:

arnof 18. Dez 2014 10:06

AW: MAC OSX App für den Appstore XE7 SP1
 
wieder abgelehnt:

Zitat:

2.2

The app references frameworks which are missing. This may lead to unexpected bugs or undefined behavior. The missing framework is '@rpath/libsqlite3.dylib'.

If you are unable to reproduce this issue, ensure you are testing the exact version of the app that you submitted for review, and that you're doing so in a minimally privileged environment. See Technical Q&A QA1778: How to reproduce bugs reported against Mac App Store submissions.

For information on how to symbolicate and read a crash log, please see Technical Note TN2123 - CrashReporter.
hier teste ich nur, ob die lib ladbar ist, selbst das wird das abgelehnt :kotz:

arnof 18. Dez 2014 21:53

AW: MAC OSX App für den Appstore XE7 SP1
 
Nun habe ich mir eine eigene libsqlite.dylib gemacht und auch das hochladen ging, mal wieder warten...

arnof 12. Jan 2015 18:18

AW: MAC OSX App für den Appstore XE7 SP1
 
Juhu: ich habe es nach nun über 6 Monaten geschafft, eine SQLite benutzende App in den Appstore zu bringen und damit (fast) 2 Delphiversionen verschlissen

CHackbart 12. Jan 2015 18:58

AW: MAC OSX App für den Appstore XE7 SP1
 
Gratuliere,

was genau hast du ändern müssen, damit die App geht und darf ich fragen wo ich diese finde?

Lg
Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz