Deploy to OSX - aktualizováno o postup pro VMWare

vložil Radek Červinka 23. září 2011 22:29

Pokud vytvoříte FireMonkey aplikaci a chcete ji přenést na cizí Mac, tak to není tak jednoduché jako na Windows. Můžete použít platform assistant (PA) od Embarcadera nebo free nástroj bundler (přečtete si readme), který vytvoří zip, který OSX umí rozeznat. Platform assistant, který je součástí instalace XE2 slouží primárně k ladění a není určen k distribuci na zákazníkův počítač.

Ale pozor, je zde pár záludností a jednou z nich je deploy dialog - bez něj se nepohnete.

OSX

Spustíte ho Project - Deployment. Z mně neznámého důvodu v současné verzi jsem potřeboval kliknout na ikonu Revert to default ať se tam všechny soubory přidají (je to ta zeleno červená ikona vedle comboboxu) a dejte uložit projekt, ať je dostupný pro bundler. Nezapomeňte překládat Release verzi. Kromě programu se tam nejméně přidá i libcgunwind.1.0.dylib, což je knihovna která pomáhá zpracování výjimek, resp. odvíjení zásobníku při výjimce - aspoň si to myslím - protože jak Linux, tak BSD (tj. OSX) nemá přímo podporu výjimek jako MS Windows - Mac OS X Exception Handling od Eli Boling, který má na starosti přímo Delphi pro Mac (resp. jeden z nich) a mimochodem jeden ze zakládajících členů Kylix teamu.

Ale zpět.

Následně pokud používáte uvedený nástroj ho zavoláte z menu nástroje (kde byl předtím podle readme přidán) a on vám vytvoří zip se soubory co potřebuje OSX. Ten zip funguje jako by virtual folder, tj. jeho obsah je následně OSX přidán do systému jako "disk".

Po poklikání na něj OSX Váš program zpřístupní. A pokud máte reálný Mac tak by to mělo fungovat. Ve VmWare fungují bez problémů pouze console aplikace. Pokud má někdo tip jak na VmWare (novou verzi 8 jsem nezkoušel) tak sem s tím. Ono to podle všeho ve VmWare opravdu nefunguje - ale třeba někdo můj návod upřesní.

Update: Postup pro VMWare - pro původní XE2 bez update

Pro VMWare (emulace HW grafiky ve VMWare není úplně dokonalá) je nutné upravit kód v FMX.Filter.pas a upravenou jednotku dát do projektu - díky Leoši za tip:

function FilterByName(const AName: string): TFilter;
var
  i: Integer;
begin
  Result := nil;
  if Filters = nil then
    Exit;
  if GlobalUseHWEffects  then
  begin
    for i := 0 to Filters.Count - 1 do
      if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
      then
      begin
        Result := TFilterClass(Filters.Objects[i]).Create;
        Exit;
      end;
  end;
end;

function FilterClassByName(const AName: string): TFilterClass;
var
  i: Integer;
begin
  Result := nil;
  if Filters = nil then
    Exit;
  if GlobalUseHWEffects  then
  begin
    for i := 0 to Filters.Count - 1 do
      if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
      then
      begin
        Result := TFilterClass(Filters.Objects[i]);
        Exit;
      end;
  end;
end;

Navíc v dpr nastavte GlobalUseHWEffects := False; To platí jen ale pro VmWare.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy: ,

FireMonkey | Návody

Komentáře

24.9.2011 7:51:00 #

Leoš

Pokud koncis na Runtime Error 231 tak jsme na tom stejne. Hledal jsem to vsude mozne a dospel jsem jenom k tomu, ze EMBT proste VMWARE podporovat nebude, protoze neodpovida licence OSX.
Aspon mne uklidnuje to, ze bych stejne potreboval databazove pripojeni na vzdaleny MS SQL SERVER, ktere tam u Pro verze asi nebude mozne - jinak by se mi to moc libilo.

Leoš

24.9.2011 8:02:30 #

Leoš

Ještě něco, koukni na níže uvedený odkaz na konec. Tam je postup od uživatele Andre Musche, jak vypnout 3D akceleraci a pak by to mělo pod VMWARE fungovat. Já to budu moci vyzkoušet teprve až mi přijde plné Delphi.

Leoš

24.9.2011 8:03:07 #

Leoš

Tak ještě ten odkaz :
https://forums.embarcadero.com/message.jspa?messageID=393962
:)

Leoš

24.9.2011 9:57:21 #

Radekc

Díky funguje to.

Radekc

24.9.2011 10:38:44 #

Leoš

Já díky za informaci. Jdu googlit, jak je na tom OSX s OLEDB.

Leoš

24.9.2011 12:00:47 #

<z>

to je ale ptakovina, ze je to potreba zvlast upravovat pro VMWare :D

<z>

24.9.2011 12:52:10 #

Radekc

Je to problém virtuálního grafického adaptéru ve VMWare, který podporuje jen část HW příkazů. Navíc Apple výslovně zakazuje běh OSX na HW který není Apple!

Radekc

24.9.2011 13:06:41 #

Radekc

>OSX s OLEDB
asi přes ODBC to půjde ne?

Radekc

24.9.2011 13:41:01 #

Leoš

Ano, to by mělo. Nicméně jsem vznesl dotaz na DevArt, co znamená slibovaná "podpora OSX".
U serverů jako je Oracle, Mysql a Postgresql, kde mají snad vlastní implementaci protokolu, by neměl být problém. U těch ostatních používají buď OLEDB nebo nativní klienty.
Uvidíme, co odpoví, dám sem pak výsledek.

Leoš

24.9.2011 17:07:19 #

<z>

nemuzu si odpustit komentar, ze ti jablecnaci sou stejni svinaci a delaji jen problemy ... nebyt jich, tak snad udelaj cross-platform VCL :)

<z>

25.9.2011 9:32:26 #

Leoš

Z: nemyslím, že Apple má nějaký zájem na FM nebo VCL - pro ně jsou obě platformy nežádoucí. Podle mně je podpora FM v OSX pouze snahou EMBT přilákat větší zájem vývojářů k FM. Ostatně ta paralela k WinForms/WPF je zřejmá a obávám se, že to i podobně dopadne.

Leoš

25.9.2011 22:10:32 #

Radekc

>WinForms/WPF
Já tam tu paralelu nevidím. WinForms je cca už asi 5 let ve stadiu ukončení vývoje. VCL je slibováno podporování a další rozvoj.

Radekc

26.9.2011 8:46:46 #

Leoš

Uvidíme - doufejme, že máš pravdu.

Leoš

27.9.2011 13:11:27 #

Leoš

Takže:
1) Pod VMWARE 8 to bez úpravy nefunguje taky (ale s úpravou ano).
2) DevArt SDAC, jak se dalo čekat, pod OSX nepůjde. Ještě jsem rozšířil dotaz na další.

Leoš

28.9.2011 13:59:39 #

Leoš

DevArt bude pod OSX podporovat MyDAC a PgDAC (Mysql a Postgresql), které mají tzv direct přístup (protokol v Delphi) a IBDAC (Interbase), které sice má přístup před knihovny ale ty jsou pro OSX jsou k dispozici.

Leoš

28.9.2011 21:48:17 #

tz

K tomu OLE DB, už jsem to tu jednou psal: dejte si pozor při plánování nových vývojů a případných investic do OLE DB providerů:

SQL Server 2011 (codename Denali) bude poslední verze, která bude podporovat přístup přes OLE DB provider - viz:

Microsoft is Aligning with ODBC for Native Relational Data Access
http://blogs.msdn.com/b/sqlnativeclient/archive/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access.aspx

tz

29.9.2011 7:09:19 #

Leoš

Děkuji za info, nicméně to je tak daleká budoucnost, že mně to nechává zcela chladným.
Co mně už moc chladným nenechává je trend, kdy používání produktů Microsoftu se stává poměrně riskantní volbou.

Leoš

3.10.2011 16:56:52 #

Leoš

Ještě doplním dvě pozitivní zprávy:
- komponenty DevArt, u kterých je možná podpora OSX (např MySQL), budou během dvou až tří měsíců upraveny, aby to fungovalo i na OSX.
- jejich SDAC (SQL Server konektivita) může fungovat přes OLEDB i nativního klienta paralelně. Pokud MS zařízne OLEDB v SQL SERVER 14(?), stále bude fungovat ten nativní klient (maximálně se bude muset manuálně vynutit v TMSConnection komponentě). Týká se kromě SDAC i UniDAC providera pro SQL Server.

Leoš

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS