回头补记(Last edited at 2015.5.24)。

第一步:建立项目

  参见:Xcode5 + phoneGap2.9搭建ios开发环境

  • 下载phonegap2.9.1,解压。
  • 命令行,进入目录:phonegap-2.9.1/lib/ios/bin。执行:./create /Users/[用户名]/Documents/Workspace/[项目位置] [包名] [项目名]

  执行后会自动创建[项目位置]目录,在次目录下生成以[项目名]命名的项目。在Xcode中打开项目:/Users/[用户名]/Documents/Workspace/[项目位置]/[项目名]

  • 注意几个项目需要修改的属性 :Bundle display name(桌面软件显示的名称);默认起始页:config.xml中<content src="index.html" />

第二步:配置项目(for 免证书及真机调试)

  参见:IOS 7 Xcode 5 免IDP证书 真机调试

  1. 伪造签名证书:iPhone Developer
  2. 修改Xcode 的配置文件
    1. 修改/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/SDKsettings.plist,把CODE_SIGNING_REQUIREDENTITLEMENTS_REQUIRED的值改成NO
    2. 修改/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist,右击--Add Row,增加两项:

      PROVISIONING_PROFILE_ALLOWED 值为 NO

      PROVISIONING_PROFILE_REQUIRED 值为 NO

    3. 将上面Info.plist文件中的 "XCiPhoneOSCodeSignContext" 替换成"XCCodeSignContext"(共3处)
  3. 生成gen_entitlements.py脚本(见附件一,该文件存放目录:/Applications/Xcode.app/Contents/Developer/iphoneentitlement,文件属性777)
  4. 修改项目属性(每次新建项目都要执行)
    1. Target->BuildSettings->Code Signing:全部改为Don't Code Sign
    2. Project->BuildSettings->Code Signing:全部改为iPhone Developer
    3. Target->Build Phases下点击菜单Editor->Add Build Phase->Add Run Script Build Phase,增加脚本(见附件二)
  5. 连接设备

第三步:打包ipa文件:没有证书是无法发布ipa的,有个简单的方法可以实现生成ipa:

  先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是:
/Users/%用户名%/Library/Developer/Xcode/DerivedData/%工程名+一串字符%/Build/Products/Release-iphoneos,
这个目录下有个.app的文件,就是生成的程序了。把这个.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),就变成.ipa了。

补充说明:

  新装X230的黑苹果,Yosemite+XCode6.1,发现原来可以真机调试的项目,甚至完全按照上述方法新建一个项目竟然无法进行真机调试了,折腾了很久,甚至用原来的备份恢复系统都不行,最后还是度娘厉害:http://www.cocoachina.com/bbs/read.php?tid-278833.html,我按照10楼的方法搞定:“原来是项目名+“tests”的targets里面也要设置Cdoe Signing也要设置don't code sign ”,至于其他人说的“把我们证书账号中的Identifiers、Certificates和Provisioning Profiles中的内容全部删除了”,没试 。

附件一:gen_entitlements.txt:

#!/usr/bin/env python

import sys
import struct if len(sys.argv) != :
print "Usage: %s appname dest_file.xcent" % sys.argv[]
sys.exit(-) APPNAME = sys.argv[]
DEST = sys.argv[] if not DEST.endswith('.xml') and not DEST.endswith('.xcent'):
print "Dest must be .xml (for ldid) or .xcent (for codesign)"
sys.exit(-) entitlements = """
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>%s</string>
<key>get-task-allow</key>
<true/>
</dict>
</plist>
""" % APPNAME f = open(DEST,'w')
if DEST.endswith('.xcent'):
f.write("\xfa\xde\x71\x71")
f.write(struct.pack('>L', len(entitlements) + ))
f.write(entitlements)
f.close()

附件二:

export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/";
fi

IOS开发-phonegap及免证书及真机调试的更多相关文章

  1. 免费苹果账号(apple id)申请ios证书p12真机调试

    HBuilder可以直接打包越狱版的ipa包,但需要越狱手机才能安装,如果需要安装到没越狱的手机安装,需要自己申请ios证书打包. 一般是需要一个付费了的苹果开发者账号才能申请ios证书打包. 这里介 ...

  2. iOS 证书、真机调试、发布 App Store

    之前对iOS的证书弄的很不清楚,Xcode里面也有各种证书,作为一只有强迫症的巨蟹座,这是不能忍的 趁着准备发布自己的第一个app,梳理一下这块内容 主要参考了这几篇文章: iOS开发:创建真机调试证 ...

  3. app发布证书、真机调试证书、测试证书、推送证书详细过程

    原文网址: http://www.cnblogs.com/cxbblog/p/4028159.html 一:发布证书 遵旨:哪个开发者的哪台电脑要发布哪个app (这句话可以多读几遍) 通过上边的遵旨 ...

  4. 真机iOS SDK升级后xcode不能进行真机调试 怎么办

    今天升级了一下iPod的SDK到iOS8,xcode仅仅能支持到7.1,真机调试遇到问题???以下是解决的方法! 找到xcode,点击右键.打开显示包内容,按路径Contents/Develpoer/ ...

  5. Delphi 10.2.3 + Xcode 9.2 开发 IOS 程序,免证书+免越狱,真机调试

    工具列表: 1,delphi 10.2.3 + PAServer19.0. 2,配置好一些的 PC 一台,建议至少 4 代 intel i5 + 16G + 256GSSD,低于此配置将产生拖延症. ...

  6. 【转】iOS开发者申请发布证书及真机调试图文详解

    原文网址:http://www.tqcto.com/article/mobile/57822.html 打开iOS Dev Center,选择Sign in,登陆(至少99美元账号),登陆之后在网页右 ...

  7. ios高版本SDK在低版本真机调试

    将build settings的ios deployment target改为对应真机系统版本即可

  8. Domain=NSOSStatusErrorDomain Code=1937337955 关于iOS录音AVAudioRecorder与音频播放AVAudioPlayer真机调试录音不能播放的问题

    error:Domain=NSOSStatusErrorDomain Code=1937337955 ,这个错误很常见, 原因是因为我们需要调用另外一个AVAudioPlayer 的初始化方法,来确定 ...

  9. Xcode 6 免证书真机调试

    前景:在 iOS 开发中,如果想进行真机调试,普遍情况是掏钱,掏钱的情况有两种: 第一种就是:直接在 Apple 官网注册为 Developer,每年99美元:当然这种作为个人开发者的话,是很有必要的 ...

随机推荐

  1. JS如何调用隐藏按钮的click事件

    js如何调用隐藏按钮的click事件:1.设定隐藏不要使用Visiable属性,使用style.display=none:2.触发JS事件可以使用fireEvent方法,如:document.getE ...

  2. js键盘事件全面控制详解【转】

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  3. 请使用GameBench.jar 文件启动 GameBench服务

    请使用GameBench.jar 文件启动 GameBench服务 电脑上安装JAVA JRE:http://www.oracle.com/technetwork/java/javase/downlo ...

  4. asp.net mvc 页面传值的方法总结

    转自:http://msprogrammer.serviciipeweb.ro/2012/01/15/usual-methods-to-transfer-data-from-page-to-page- ...

  5. phpinfo详解

    php的很多信息都可以从phpinfo中获取,下面就详细了解下phpinfo的输出内容 1 php版本信息 第一行显示当前php版本 PHP Version 5.5.12 2 php.ini文件的位置 ...

  6. 理解和配置 Linux 下的 OOM Killer

    原文:http://www.vpsee.com/2013/10/how-to-configure-the-linux-oom-killer/ 最近有位 VPS 客户抱怨 MySQL 无缘无故挂掉,还有 ...

  7. 关于uboot中tftp上传内存数据到tftp服务器

    uboot下的tftp下载功能是非常重要和常见的功能.但是偶尔有些特殊需求的人需要使用uboot的tftp具有上传功能.默认的uboot没有tftp上传功能,如果需要修改uboot代码.使用时键入第4 ...

  8. python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...

  9. grep 与正则表达式

    正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 功能:输入文件的每一行中查找字符串. 基本用法: grep [- ...

  10. java连接mongodb的一个奇葩问题及奇葩解决方式

    昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...