十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
blockquote
创新互联建站一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以成都网站制作、网站设计、移动互联产品、营销型网站服务为核心业务。十多年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。
一、Xcode-archive(苹果推荐方式) --- (推荐)
二、iTunes拖入
三、全自动编译脚本 --- (推荐)
四、通过已有.app,编译脚本自动生成ipa包
五、通过已有.app,手动压缩改后缀方式
/blockquote
/br
blockquote
** 一、Xcode-archive(苹果推荐方式)(推荐)**
/blockquote
blockquote
** 二、iTunes拖入**
/blockquote
blockquote
三、全自动编译脚本
/blockquote
blockquote
四、通过已有.app,编译脚本自动生成ipa包
/blockquote
5.将要转化的.app文件放到distribute/文件夹下
这时的文件夹目录结构是这样的:(注意,脚本中所有appName请先替换成你的真正app名称)
6: 运行distribute.sh脚本
打开Terminal,cd到distribute文件夹下,把distribute.sh拉到terminal中执行。如果提示permission denied,则用“chmod 777 distribute.sh”命令赋予权限后,再执行一次distribute.sh。
7: 大约若干秒后,会在distribute/文件夹下生成appName/文件夹,里面的appName.ipa就是我们想要的包。
blockquote
** 五、通过已有.app,手动压缩改后缀方式**
/blockquote
br /
参考资料:
——————————— 【 MadeBy 纪宝宝 】 ———————————
使用 file 命令查看ipa文件
其中 Payload 文件夹不可缺少,其中包含 .app 文件夹,简单介绍一下 .app 中最主要的几类文件:
新建一个 Xcode iOS App 项目,按 “command + B” 快捷键编译项目,单击查看编译细节,过程如下
下面是《iOS应用逆向安全》中提供的自动打包脚本:
从上述脚本中可以看到整个过程大致如下:
这种情况一般是文件的目录结构有问题(可能是开发添加的时候,文件的目录结构没上传),导致缺失一些依赖库找不到
关键词 NewEngineCore 目录结构中search 找到文件 再Show in Finder 比较一下看看是不是缺失了依赖库之类的 如下:
这种情况直接将 项目中的黄色EngineCore文件夹删除Reference 然后再从新从 文件中拖过去就好了
可能会用到command + shift + k 清除编译缓存 Finder窗口下 command + shift + g 前往DerivedData目录删除缓存。
第一个iOS程序
首先打开Xcode—Create a new Xcode project—Single View Application--输入项目名称,同时选择使用Objective-C语言,设备选择iPhone--接下来系统默认生成一个IOS项目模板。项目目录结构如下:
firstios
此时什么也不用做,直接运行看一下(注意这里已经切换模拟器为iPhone5),没错我们看到了一个iOS应用程序:
firstIOS-iPhone5
程序的运行过程
在几乎所有的程序开发中程序一般都是从main函数开始运行的,那么IOS程序也不例外,在上图中我们可以看到Xcode为我们生成了一个main.m文件:
//
// main.m
// FirstIOS
//
// Created by Kenshin Cui on 14-2-23.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
#import UIKit/UIKit.h
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
这个默认的iOS程序就是从main函数开始执行的,但是在main函数中我们其实只能看到一个方法,这个方法内部是一个消息循环(相当于一个死循环),因此运行到这个方法UIApplicationMain之后程序不会自动退出,而只有当用户手动关闭程序这个循环才结束。这个方法有四个参数:
第一个参数和第二个参数其实就是main函数的参数,分别代表:参数个数、参数内容;
第三个参数代表UIApplication类(或子类)字符串,这个参数默认为nil则代表默认为UIApplication类,用户可以自定义一个类继承于这个类;如果为nil则等价于NSStringFromClass([UIApplication class]),大家可以自己试验,效果完全一样;UIApplication是单例模式,一个应用程序只有一个UIApplication对象或子对象;
第四个参数是UIApplication的代理类字符串,默认生成的是AppDelegate类,这个类主要用于监听整个应用程序生命周期的各个事件(其实类似于之前我们文章中提到的事件监听代理),当UIApplication运行过程中引发了某个事件之后会调用代理中对应的方法;
小技巧:
其实在Xcode中如果要看一些系统方法的解释或者参数说明,可以直接鼠标放到这个方法上,在Xcode右侧面板中就会给出帮助提示,如下图当我们放到UIApplicationMain上之后:
quickHelp
也就是说当执行UIApplicationMain方法后这个方法会根据第三个参数创建对应的UIApplication对象,这个对象会根据第四个参数AppDelegate创建并指定此对象为UIApplication的代理;同时UIApplication会开启一个消息循环不断监听应用程序的各个活动,当应用程序生命周期发生改变UIApplication就会调用代理对应的方法。
既然应用程序UIApplication是通过代理和外部交互的,那么我们就有必要清楚AppDelegate的操作细节,下面是UIApplication详细的代码:
AppDelegate.h
//
// AppDelegate.h
//
//
// Created by Kenshin Cui on 14-2-23.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
#import UIKit/UIKit.h
@interface AppDelegate : UIResponder UIApplicationDelegate
@property (strong, nonatomic) UIWindow *window;
@end
AppDelegate.m
//
// AppDelegate.m
//
//
// Created by Kenshin Cui on 14-2-23.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
这个类中定义了应用程序生命周期中各个事件的执行方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;程序启动之后执行,只有在第一次程序启动后才执行,以后不再执行;
- (void)applicationWillResignActive:(UIApplication *)application;程序将要被激活时(获得焦点)执行,程序激活用户才能操作;
- (void)applicationDidEnterBackground:(UIApplication *)application;程序进入后台后执行,注意进入后台时会先失去焦点再进入后台;
- (void)applicationWillEnterForeground:(UIApplication *)application;程序将要进入前台时执行;
- (void)applicationDidBecomeActive:(UIApplication *)application;程序被激活(获得焦点)后执行,注意程序被激活时会先进入前台再被激活;
- (void)applicationWillTerminate:(UIApplication *)application;程序在终止时执行,包括正常终止或异常终止,例如说一个应用程序在后太运行(例如音乐播放软件、社交软件等)占用太多内存这时会意外终止调用此方法;
为了演示程序的生命周期,不妨在每个事件中都输出一段内容,简单调整上面的代码:
AppDelegate.m
//
// AppDelegate.m
// FirstIOS
//
// Created by Kenshin Cui on 14-2-23.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
下载安装好xcode5后,我们就可以开始ios开发之旅了。首先打开xcode。选择新建一个xcode项目。
新建一个单窗体的程序。
只需要简单的设置一下项目的名称,开发程序使用的设备,可以看到有ipad iphone等。
创建好项目后,可以看到xcode给我们自动生成了目录结构和简单的配置文件。
先不做什么修改,来运行一下这个项目程序。点击xcode左上角的运行按钮。可以看到现在只是一个空白的程序,编译运行后自动会调出ios模拟器。现在在程序界面当中加一个label标签来显示helloworld。选择项目目录下面Main.stroyboard,鼠标单击后,可以看到屏幕中间出现了一个空白的界面,这就是运行程序时的主界面。现在从xcode右侧的工具栏中拖一个label标签到界面中央。现在就可以修改label的文字,比如改称hello world!在点击运行,看看运行后的效果吧,
用swift开发一个iOS社交app需要做的准备: 1、开发环境搭建:Xcode 6.0 在官网下载Xcode 6.0 beta版,安装。 Xcode 6.0 beta版可以和Xcode 5共存,它不是从AppStore下载而来的(本人使用官网链接用迅雷下载安装),如果下载OSX 10.10的话,将会使用AppStore下载。 也就是说安装Xcode 6.0并不需要 Mac OS X 10.10, 官网上说明要10.8以上。 2、playground Xcode 6.0的第一个选项是创建一个playground文件。可以编写代码,并在右边实时预览。 3、选择第二个选项,建立一个项目。和此前使用OC创建项目过程一样。这里使用了单视图应用。 创建完成后,目录结构如下图: