Разработка мобильного кроссплатформенного...
DESCRIPTION
Доклад Романа Янковского на конференции Application Developer Days-4. г.Минск 13 декабря 2013TRANSCRIPT
![Page 1: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/1.jpg)
Кроссплатформенность в Delphi XE5
Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого
кода в Delphi
![Page 2: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/2.jpg)
Desktop vs Mobile
![Page 3: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/3.jpg)
Единый код на всех платформах
• Дешевле разрабатывать
• Дешевле тестировать
• Проще управлять
![Page 4: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/4.jpg)
Прогресс
Embarcaderoприобрела Codegearу Borland
2008 2009 2010 2011
Начата разработка64битного компилятора
v2009Unicode
v2010Win7TouchDataSnap
XEDev Process CloudDataSnap+
XE2FireMonkeyMobile Connectivity
2012
XE3FM2 (2.0)Windows 8
2013
XE4FM3 (3.0)True iOS
2013
ARM-компилятор
XE5FMAndroid
![Page 5: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/5.jpg)
Два компилятора
Классический
Win32
Win64
OSX
NEXTGEN
iOS
Android
![Page 6: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/6.jpg)
NEXTGEN: что нового?
Automatic Reference Counting (ARC)
Строки индексируются с нуля
Один тип строкstring (он же UnicodeString)AnsiStringWideStringRawByteStringShortStringPCharPAnsiCharPWideChar
![Page 7: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/7.jpg)
Работа со строками
Директива {$ZEROBASEDSTRINGS}
TStringHelper, TStringBuilder
Result := 'ABC'.IndexOf('B')); // 1
Copy, Pos, Delete… (deprecated)
Result := Pos('B', 'ABC')); // 2
![Page 8: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/8.jpg)
Automatic Reference Counting (ARC)
Классический компилятор
var
MyObj: TMyClass;
begin
MyObj := TMyClass.Create;
try
MyObj.SomeMethod;
finally
MyObj.Free;
end;
end;
NEXTGEN-компилятор
var
MyObj: TMyClass;
begin
MyObj := TMyClass.Create;
MyObj.SomeMethod;
end;
![Page 9: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/9.jpg)
Automatic Reference Counting (ARC)
private
[Weak] FOwner: TComponent;
constructor TMyClass.Create(AOwner: TComponent);
begin
FOwner := AOwner;
end;
![Page 10: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/10.jpg)
Automatic Reference Counting (ARC)
var
MyObj: TMyClass;
S: string;
begin
MyObj := TMyClass.Create;
try
MyObj.MyMethod;
finally
MyObj.DisposeOf;
end;
if MyObj.Disposed then
S := ‘Zombie object’;
end;
![Page 11: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/11.jpg)
В перспективе...
deprecated:
with
object
указатели
ассемблер
S[3] := ‘X’;
[Warning]: W1068 Modifying strings in place may not be supported in the future
![Page 12: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/12.jpg)
Пара слов о компиляции
App Sources
FM Framework
Cocoa SDK Native Developer Kit
.app in IPA .so in APK
![Page 13: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/13.jpg)
Стили FireMonkey
![Page 14: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/14.jpg)
Семейства форм
Form := GetDeviceForm(‘FamName');
Можно, но не обязательно!
![Page 15: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/15.jpg)
Multi-Resolution Image
![Page 16: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/16.jpg)
Базы данных
• Interbase
– IB ToGo (платный)
– IBLite (бесплатный)
• SQLite
![Page 17: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/17.jpg)
Версии Android
• Gingerbread (2.3.3 – 2.3.7)
• Ice Cream Sandwich (4.0.3 – 4.0.4)
• Jelly Bean (4.1.x – 4.3.x)
~ 97,2% устройств (по данным на 12 декабря 2013)
![Page 18: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/18.jpg)
Живое демо
Настало время удивительных историй
![Page 19: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/19.jpg)
Еще пример
![Page 20: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/20.jpg)
Еще пример
![Page 21: Разработка мобильного кроссплатформенного приложения под iOS и Android на основе единого кода в Delphi](https://reader036.vdocuments.mx/reader036/viewer/2022081720/55987e711a28ab0c7e8b46db/html5/thumbnails/21.jpg)
Спасибо за внимание!
Вопросы?
Роман Янковскийhttp://roman.yankovsky.me/