PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Objective-C] iPhone dev in Winchain



phlippi
17.09.2009, 16:28
Hallo auch. Ich hoffe jetzt einfach mal, dass ich damit in der richtigen Kategorie bin, ansonsten sorry ;)
Hoffe auch, dass sich damit überhaupt jemand auskennt.
Also nun mein Problem:

Habe mir vor kurzem mal winchain runtergeladen um mit cygwin auf Windows iPhone cydia/homebrews apps zu machen ;)
Wollte natürlich erstmal ausprobieren, also hab ich erstmal ein UIKit Fenster Objekt erstellt um zu sehen, ob das ganze überhaupt funktioniert.
Theoretisch dürfte ich nun auf den iPod ein total leeres Fenster haben. Aber aus irgendeinem Grund, schließt sich das app einen bruchteil einer Sekunde nach dem starten. Mein Code sieht folgendermaßen aus:

makefile:


INFOPLIST_FILE=Info.plist
SOURCES=\
main.m \
MyExample.m

CC=/usr/local/bin/arm-apple-darwin-gcc
CFLAGS=-g -O2 -Wall
LD=$(CC)
LDFLAGS=-lobjc -framework CoreFoundation -framework Foundation -framework UIKit
PRODUCT_NAME=MyExample
SRCROOT=/iphone-apps/MyExample

WRAPPER_NAME=$(PRODUCT_NAME).app
EXECUTABLE_NAME=$(PRODUCT_NAME)
SOURCES_ABS=$(addprefix $(SRCROOT)/,$(SOURCES))
INFOPLIST_ABS=$(addprefix $(SRCROOT)/,$(INFOPLIST_FILE))
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)))
OBJECTS_ABS=$(addprefix $(CONFIGURATION_TEMP_DIR)/,$(OBJECTS))
APP_ABS=$(BUILT_PRODUCTS_DIR)/$(WRAPPER_NAME)
PRODUCT_ABS=$(APP_ABS)/$(EXECUTABLE_NAME)

all: $(PRODUCT_ABS)

$(PRODUCT_ABS): $(APP_ABS) $(OBJECTS_ABS)
$(LD) $(LDFLAGS) -o $(PRODUCT_ABS) $(OBJECTS_ABS)

$(APP_ABS): $(INFOPLIST_ABS)
mkdir -p $(APP_ABS)
cp $(INFOPLIST_ABS) $(APP_ABS)/

$(CONFIGURATION_TEMP_DIR)/%.o: $(SRCROOT)/%.m
mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

clean:
echo rm -f $(OBJECTS_ABS)
echo rm -rf $(APP_ABS)


main.m:


#import "MyExample.h"

int main(int argc, char **argv)
{
NSAutoreleasePool *autoreleasePool = [
[ NSAutoreleasePool alloc ] init
];
int returnCode = UIApplicationMain(argc, argv, [ MyApp class ]);
[ autoreleasePool release ];
return returnCode;
}

@implementation MyApp
- (void)applicationDidFinishLaunching:(NSNotificatio n *)aNotification {
window = [ [ UIWindow alloc ] initWithContentRect:
[ UIHardware fullScreenApplicationContentRect ]
];

CGRect windowRect =
[ UIHardware fullScreenApplicationContentRect ];
windowRect.origin.x = windowRect.origin.y = 0.0f;

mainView = [ [ UIView alloc ] initWithFrame: windowRect ];

[ window setContentView: mainView ];
[ window orderFront: self ];
[ window makeKey: self ];
[ window _setHidden: NO ];
}
@end


myExample.h


#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>


@interface MyApp : UIApplication {
UIWindow *window;
UIView *mainView;
}
@end



myExample.m:


#import "MyExample.h"
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>


MyExample_Prefix:


#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif


Denke nicht, dass das wichtig ist, aber hier die info.plist:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>MyExample</string>
<key>CFBundleIdentifier</key>
<string>com.Phil.MyExample</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>



In der cygwin konsole mache ich den build folgendermaßen:
cd C:/cygwin/iphone-apps/MyExample
make

Crypt
17.02.2010, 06:14
ch kann dir auf jeden fall das become an xcoder tut ans herz legen da ist einiges über objective c erklärt... winchain hab ich jetzt gar kein plan von, apps auf dem mac entwickeln über xcode geht glaub ich einfacher und schneller da du die restriktionen nicht hast von cydia und wenn du nicht im appstore releasen willst kannst du dein app auch selber cracken und über cydia anbieten ;)
das es sich wieder schliesst hat wohl mit dem besagten "crack" zu tun da du versuchst unsignierten code zu verarbeiten blockt das iphone ab... in cydia unter den how to ´s (nicht bei den apps sondern bei über/hilfe oder sowas) findest du einige manuals dazu auch für cydia und winchain denk ich ma aber ich empfehle dir wirklich einen kleinen mac zu kaufen...xcode ist richtig geil! das cocoa framework machts wirklich einfach apps zu entwickeln!
http://www.cocoalab.com/?q=becomeanxcoder

Steehn
08.03.2010, 21:43
Ich hoffe, dass ich keinen zu alten Thread ausgrabe, aber ich würde, bevor ich Geld für nen Mac ausgebe evtl. gucken, ob auf meinem PC nicht sowas wie z.B. Hackintosh läuft. (Hab XCode mal bei nem PC von nem Freund ebenfalls für die iPhoneentwicklung eingerichtet)

Crypt
09.03.2010, 21:13
stimmt das hab ich ganz vergessen iPC ist schon ganz gut supported hardware mässig! http://www.osx86project.org/

phlippi
12.03.2010, 18:13
Hätte nicht gedacht, dass hier noch jemand antwortet ^^
Hat sich alles schon erledigt, der Mac war sowieso geplant und er steht jetzt auch schon seit gut 3 Monaten hier. (Mit dem normalen SDK läuft sowieso alles glatt)