Для того, чтобы начать программировать под iPhone, вам понадобятся:
Будем считать, что всё вышеуказанное у вас имеется. Поехали. Пишем стандартный "Hello, World".
Будем считать, что всё вышеуказанное у вас имеется. Поехали. Пишем стандартный "Hello, World".
Пакет приложения для iPhone выглядит следующим образом:
Default.png - фон, который отображается во время загрузки программы (320х460)
Info.plist - файл информации о пакете
PkgInfo - непонятно зачем, но пусть будет
icon.png - иконка программы, которая будет отображаться на рабочем столе (65х65)
В файле Info.plist пишем следующее:
CFBundleDevelopmentRegion - регион разработки
CFBundleExecutable - имя исполняемого файла (принципиально важно!)
CFBundleIdentifier - уникальный идентификатор приложения
CFBundleInfoDictionaryVersion - версия файла описания (не менять!)
CFBundlePackageType - тип пакета (не менять!)
CFBundleSignature - по идее должна быть цифровая подпись, но у нас её нет
CFBundleVersion - версия вашей программы
PkgInfo - внутри лично у меня во всех программах вписана строчка APPL???? (именно так, с четырьмя знаками вопроса). И всё работает. Так что пишем так же и не паримся.
А дальше собственно код приложения по файлам. Разрабатывается всё это дело на языке программирования Objective-C.
main.m
Загрузить тут:
helloworld.zip
Default.png - фон, который отображается во время загрузки программы (320х460)
Info.plist - файл информации о пакете
PkgInfo - непонятно зачем, но пусть будет
icon.png - иконка программы, которая будет отображаться на рабочем столе (65х65)
В файле Info.plist пишем следующее:
<plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>Russian</string> <key>CFBundleExecutable</key> <string>Hello</string> <key>CFBundleIdentifier</key> <string>com.wndev.hello</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>0.1</string> </dict> </plist>
CFBundleDevelopmentRegion - регион разработки
CFBundleExecutable - имя исполняемого файла (принципиально важно!)
CFBundleIdentifier - уникальный идентификатор приложения
CFBundleInfoDictionaryVersion - версия файла описания (не менять!)
CFBundlePackageType - тип пакета (не менять!)
CFBundleSignature - по идее должна быть цифровая подпись, но у нас её нет
CFBundleVersion - версия вашей программы
PkgInfo - внутри лично у меня во всех программах вписана строчка APPL???? (именно так, с четырьмя знаками вопроса). И всё работает. Так что пишем так же и не паримся.
А дальше собственно код приложения по файлам. Разрабатывается всё это дело на языке программирования Objective-C.
main.m
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "HelloApp.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int ret = UIApplicationMain(argc, argv, [HelloApp class]);
[pool release];
return ret;
}
HelloApp.h
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <CoreGraphics/CGEventTypes.h>
#import <GraphicsServices/GraphicsServices.h>
#import <UIKit/CDStructures.h>
#import <UIKit/UIKit.h>
#import "MainView.h"
@interface HelloApp : UIApplication
{
UIWindow *mainWindow;
MainView *mainView;
}
@end
HelloApp.m
#import "HelloApp.h"
@implementation HelloApp
- (void)applicationDidFinishLaunching:(GSEventRef)event;
{
struct CGRect frame = [UIHardware fullScreenApplicationContentRect];
frame.origin.x = frame.origin.y = 0.0;
mainWindow = [[UIWindow alloc] initWithContentRect:frame];
mainView = [[MainView alloc] initWithFrame:frame];
[mainWindow setContentView:mainView];
[mainWindow orderFront:self];
[mainWindow makeKey:self];
}
- (void)applicationWillTerminate;
{
[mainView release];
[mainWindow release];
}
@end
MainView.h
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <CoreGraphics/CGEventTypes.h>
#import <GraphicsServices/GraphicsServices.h>
#import <UIKit/CDStructures.h>
#import <UIKit/UIKit.h>
@interface MainView : UIView
{
}
- (id)initWithFrame:(struct CGRect)frame;
@end
MainView.m
#import "MainView.h"
@implementation MainView
- (id)initWithFrame:(struct CGRect)frame
{
if ((self == [super initWithFrame:frame]) != nil)
{
frame.origin.x = frame.origin.y = 0.0f;
UITextLabel *text = [[UITextLabel alloc] initWithFrame:frame];
[text setText:@"Hello, world!"];
float white[4] = {1.0f, 1.0f, 1.0f, 1.0f};
float black[4] = {0.0f, 0.0f, 0.0f, 1.0f};
[text setBackgroundColor:CGColorCreate(CGColorSpaceCreateDeviceRGB(),white)];
[text setColor:CGColorCreate(CGColorSpaceCreateDeviceRGB(),black)];
[text setCentersHorizontally:YES];
[self addSubview:text];
}
return self;
}
@end
Makefile
PRODUCT_NAME = Hello
BUNDLE_NAME = $(PRODUCT_NAME).app
SOURCES = $(wildcard *.m)
INFOPLIST_FILE = Info.plist
PNGS = $(wildcard *.png)
CC = arm-apple-darwin-gcc
CXX = arm-apple-darwin-g++
CFLAGS = -Wall -pipe -O3
LD = ${CC}
LDFLAGS = -Wl,-syslibroot,/usr/local/share/iphone-filesystem \
-I/usr/local/arm-apple-darwin/include \
-lobjc \
-larmfp \
-framework CoreFoundation \
-framework Foundation \
-framework CoreGraphics \
-framework GraphicsServices \
-framework UIKit
EXECUTABLE_NAME = $(PRODUCT_NAME)
OBJECTS = \
$(patsubst %.c,%.o,$(filter %.c,$(SOURCES))) \
$(patsubst %.cc,%.o,$(filter %.cc,$(SOURCES))) \
$(patsubst %.cpp,%.o,$(filter %.cpp,$(SOURCES))) \
$(patsubst %.m,%.o,$(filter %.m,$(SOURCES))) \
$(patsubst %.mm,%.o,$(filter %.mm,$(SOURCES)))
all: $(PRODUCT_NAME) bundle
$(PRODUCT_NAME): $(OBJECTS)
$(LD) $(LDFLAGS) -o $(PRODUCT_NAME) $(OBJECTS)
%.o: %.m
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
clean:
rm -f *.o $(EXECUTABLE_NAME)
rm -rf $(BUNDLE_NAME)
rm -f *~
bundle:
mkdir -p $(BUNDLE_NAME)
cp $(INFOPLIST_FILE) $(BUNDLE_NAME)/
cp $(PNGS) $(BUNDLE_NAME)/
cp $(EXECUTABLE_NAME) $(BUNDLE_NAME)/
cp PkgInfo $(BUNDLE_NAME)/Загрузить тут:
helloworld.zip

Комментировать