AqBankingSDK für MacOSX

 
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 13
Dabei seit: 02 / 2010
Betreff:

AqBankingSDK für MacOSX

 · 
Gepostet: 26.07.2010 - 18:31 Uhr  ·  #1
Hallo Martin,

Du hast ja netterweise mit dem AqBankingSDK für MacOSX für die Xcode Entwickler ein Framework zur Verfügung gestellt. Es scheint mir jedoch, dass dieses nicht ganz richtig erstellt wurde oder es gibt Tricks, die nicht in der Readme stehen.

Mein Problem ist, dass man es so m.E. so nicht in eigenen Projekten verwenden kann. Ich hatte ein ganz neues nacktes Projekt erstellt und wollte das Framework hinzufügen (gem. folgender universeller Anleitung). Sollte ja eigentlich eine recht einfache Routineübung sein.
    [highlight=#FAFAFA]Linked Frameworks[/highlight][/color] gezogen. Harken bei "copy items into the destination group’s folders (if needed)" war natürlich gesetzt.
    [*]Neu Build-Phase mit Destination "Frameworks" erstellt und anschließend dort das AqBanking.framework von [highlight=#FAFAFA]Linked Frameworks[/highlight] ins neue [highlight=#FAFAFA]Copy Files[/highlight] reingezogen. [/list]
    So weit so gut funktioniert das normalerweise mit allen möglichen Frameworks von Dritten wie z.B. Sparkle.framework. Wenn man das mit dem AqBanking Framework macht, funktioniert dies leider nicht. Man erhält, sobald man Build drückt, immer die Fehlermeldung [highlight=#FAFAFA]"Framework not found AqBanking"[/highlight]. Erst dachte ich, man müsste vielleicht nur noch in den Target-Eigenschaften den Framework Search Path um "$(SRCROOT)/AqBanking.framework" ergänzen. Aber daran lag es nicht. Ungewöhnlich fand ich den zweiten Ordner [highlight=#FAFAFA]Frameworks/AqBanking[/highlight] in Deinem dmg-Image. Laut Readme sollte dieser mit in das Application Bundle kopiert werden. Hab ich auch gemacht (auch so dass der Ordner hinterher in Frameworks/AqBanking im Projek.app landet), leider ohne besseres Ergebnis. Der Fehler blieb bestehen. War die Vorgehensweise so angedacht?

    Um bei der Fehlersuche etwas zu unterstützen, sind im Folgenden ein paar Dinge gelistet, die mir bei weiteren Untersuchungen noch aufgefallen sind. Ich habe im Ordner [highlight=#FAFAFA]AqBanking.framework/libs[/highlight] den Befehl [highlight=#FAFAFA]otool -D *.lib[/highlight] über den Terminal eingegeben.
    Das folgende Ergebnis ist zeigt die Pfade, auf die Libs installiert sein sollen:
    Code

    libFOX-1.6.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libFOX-1.6.dylib
    libFOX-1.6.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libFOX-1.6.dylib
    libaqbanking.32.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqbanking.32.dylib
    libaqbanking.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqbanking.32.dylib
    libaqhbci.18.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqhbci.18.dylib
    libaqhbci.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqhbci.18.dylib
    libaqofxconnect.6.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqofxconnect.6.dylib
    libaqofxconnect.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqofxconnect.6.dylib
    libaqpaypal.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqpaypal.0.dylib
    libaqpaypal.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libaqpaypal.0.dylib
    libcharset.1.dylib:
    /Users/martin/install/darwin/lib/libcharset.1.dylib
    libcharset.dylib:
    /Users/martin/install/darwin/lib/libcharset.1.dylib
    libchipcard.5.dylib:
    /Users/martin/install/darwin/lib/libchipcard.5.dylib
    libchipcard.dylib:
    /Users/martin/install/darwin/lib/libchipcard.5.dylib
    libexslt.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libexslt.0.dylib
    libexslt.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libexslt.0.dylib
    libgcrypt.11.5.3.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgcrypt.11.dylib
    libgcrypt.11.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgcrypt.11.dylib
    libgcrypt.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgcrypt.11.dylib
    libgmp.10.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgmp.10.dylib
    libgmp.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgmp.10.dylib
    libgnutls-extra.26.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutls-extra.26.dylib
    libgnutls-extra.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutls-extra.26.dylib
    libgnutls.26.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutls.26.dylib
    libgnutls.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutls.26.dylib
    libgnutlsxx.26.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutlsxx.26.dylib
    libgnutlsxx.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgnutlsxx.26.dylib
    libgpg-error.0.5.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgpg-error.0.dylib
    libgpg-error.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgpg-error.0.dylib
    libgpg-error.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgpg-error.0.dylib
    libgwengui-fox16.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgwengui-fox16.0.dylib
    libgwengui-fox16.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgwengui-fox16.0.dylib
    libgwenhywfar.59.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgwenhywfar.59.dylib
    libgwenhywfar.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libgwenhywfar.59.dylib
    libiconv.2.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libiconv.2.dylib
    libiconv.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libiconv.2.dylib
    libintl.3.4.3.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libintl.3.dylib
    libintl.3.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libintl.3.dylib
    libintl.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libintl.3.dylib
    libjpeg.7.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libjpeg.7.dylib
    libjpeg.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libjpeg.7.dylib
    libktoblzcheck.1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libktoblzcheck.1.dylib
    libktoblzcheck.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libktoblzcheck.1.dylib
    libpng.3.24.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng.3.dylib
    libpng.3.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng.3.dylib
    libpng.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng12.0.dylib
    libpng12.0.24.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng12.0.dylib
    libpng12.0.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng12.0.dylib
    libpng12.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libpng12.0.dylib
    libtasn1.3.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libtasn1.3.dylib
    libtasn1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libtasn1.3.dylib
    libxml2.2.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxml2.2.dylib
    libxml2.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxml2.2.dylib
    libxmlsec1-gnutls.1.2.13.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1-gnutls.1.dylib
    libxmlsec1-gnutls.1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1-gnutls.1.dylib
    libxmlsec1-gnutls.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1-gnutls.1.dylib
    libxmlsec1.1.2.13.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1.1.dylib
    libxmlsec1.1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1.1.dylib
    libxmlsec1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxmlsec1.1.dylib
    libxslt.1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxslt.1.dylib
    libxslt.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libxslt.1.dylib
    libz.1.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libz.1.dylib
    libz.dylib:
    @executable_path/../Frameworks/AqBanking/lib/libz.1.dylib


    Sollte es jeweils für die Lib XYZ statt [highlight=#FAFAFA]@executable_path/../Frameworks/AqBanking/lib/libXYZ.dylib[/highlight] nicht eigentlich [highlight=#FAFAFA]@executable_path/../Frameworks/AqBanking.framework/lib/libXYZ.dylib[/highlight] heißen? Die Libs liegen ja in dem Ordner. Deswegen der ungewöhliche Frameworks/AqBanking-Ordner?
    Hinzukommt, dass beispielsweise die Libs libcharset.1, libcharset, libchipcard.5 und libchipcard Verweise auf Dateien im Ordner [highlight=#FAFAFA]"/Users/martin/install/darwin/lib/"[/highlight] enthalten. Dieser existiert aber wohl nur auf Deinem Rechner. ;)

    Noch als Randnotiz: In Deiner Readme war zudem das Paket GwenTools angekündigt. Im dmg-Image ist es jedoch nicht enthalten.
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Hamburg
Homepage: aqbanking.de/
Beiträge: 642
Dabei seit: 03 / 2005
Betreff:

Re: AqBankingSDK für MacOSX

 · 
Gepostet: 02.08.2010 - 14:07 Uhr  ·  #2
Moin,

das koennte daran liegen, dass es noch kein *richtiges* Framework ist.
Ich bin noch am Anfang mit dem ganzen Framework-Gebastele auf dem Mac, daher kann man die Libs derzeit nicht mit "-framework" einbinden, sondern gibt halt die Libs selbst an, gegen die man linken will, also bei AqBanking z.B.:
Linkerflags: "-L/PFAD/ZUM/FRAMEWORK/UND/LIBS/DARIN -laqbanking"


Gruss
Martin
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Hamburg
Homepage: aqbanking.de/
Beiträge: 642
Dabei seit: 03 / 2005
Betreff:

Re: AqBankingSDK für MacOSX

 · 
Gepostet: 02.08.2010 - 14:14 Uhr  ·  #3
Achso, noch eines: Das SDK enthaelt mehrere Anteile: um einen ein Framework-Verzeichnis, das man einfach in sein eigenes Bundle kopieren kann. Dies enthaelt die Pfade (otool -L) so, dass die Anwendung sie auch findet, wenn sie dagegen gelinkt ist (das ist das mit "@executable....").
Dieser Teil enthaelt die Plugins etc, also alles das, was die Anwendung mitliefern muss, wenn man sie bundled.

Der andere Teil enthaelt die Bibliotheken inclusive der Headerdateien etc. Das ist der Teil, gegen den man beim Bauen der Anwendung verwendet. Er enthaelt z.B. keine Plugins sondern nur die Bibliotheken, gegen die man tatsaechlich linkt (Plugins werden ja nachgeladen, nicht gelinkt).

Hintergrund: Man moechte eventuell nicht mit seiner Anwendung die ganzen Header-Dateien bundlen, denn die sind ja zum Betrieb der Anwendung nicht noetig, vergroessern das Bundle nur unnoetig.

Ich koennte nun natuerlich ein SDK zusammenstellen, wo tatsaechlich alles - inclusive Header - in einem Framework steckt, aber dann muesstest Du wieder auseinanderklabuestern, was davon in das Bundle muss und was nicht.

Deswegen habe ich diese zwei Anteile: Einen gesaeuberten, und einen, den man zum Kompilieren und Linken benoetigt.

Optimal ist das ganze natuerlich noch nicht, aber ich habe gerade erst angefangen, mich mit den Macs zu beschaeftigen, und fuer meine Zwecke funktioniert das so bisher recht gut.


Gruss
Martin
Gewählte Zitate für Mehrfachzitierung:   0