AppCode简介

AppCode是JetBrains公司出品的用于开发Mac OS X以及iOS应用程序的集成开发环境,能够支持Xcode项目的运行和调试功能,并为Swift和Objective-C提供广泛的技术支持。目前,AppCode只能运行在Mac OS X操作系统环境下,作为XCode的高级替代品,AppCode继承了IDEA的诸多优良特性,是Mac OS X和iOS应用程序开发的又一利器。
Kotlin Native是一种能够将Kotlin源代码编译成不需要任何虚拟机支持的二进制技术,编译后的二进制数据可以直接运行在目标平台上。Kotlin Native在0.4版本引入了对Objective-C API的调用支持,并引入了对WebAssembly的实验性支持。要想使用Kotlin来开发iOS应用,需要先下载最新版的AppCode(即AppCode 2018.1.1及以上版本),然后安装【Kotlin Native for AppCode】插件。
安装的步骤为,依次选择【AppCode】→【Preferences】→【Plugins】打开JetBrains的插件页面,然后搜索【Kotlin Native for AppCode】并安装,如图16-6所示。

创建Kotlin Native项目

Kotlin Native使用Gradle作为默认构建工具,想要在Xcode中编译Kotlin Native项目,需要在项目中添加相关的运行脚本,该脚本调用Gradle来构建Kotlin Native工程。当然,也可以借助一些第三方的IDE,如AppCode,使用AppCode之前需要先安装【Kotlin Native for AppCode】插件。
启动AppCode,依次选择【Kotlin/Native】→【Single View APP with a Kotlin/Native Framwork】即可创建iOS应用程序,使用Kotlin/Native方式创建的iOS项目支持使用Kotlin语言来编写iOS应用程序,如图16-7所示。

等待项目构建完成,可以看到,使用Kotlin/Native方式创建的iOS项目的目录结构如图16-8所示。

相比使用Xcode创建的原生iOS项目而言,使用Kotlin/Native方式创建的iOS项目显然多一些配置文件(如Frameworks和KotlinNativeFramework)。文件的具体含义如下:

  • Projects:主要用于存放Mac软件开发的可执行文件等,iOS应用开发很少用到这个文件;
  • Frameworks:主要用于存放项目依赖的一些系统库和第三方库;
  • Project:此目录用于存放与项目相关的源码,也是iOS应用开发的核心组成部分;
  • KotlinNativeFramework:用于存放和KotlinNative相关的库。

此时,只需要点击【Run】按钮即可在iPhone模拟器或者真机中启动应用程序。不过,此时的程序还没有实现任何的功能,为了在项目中使用Kotlin来编写iOS应用程序,可以在Kotlin Native项目的Project文件中创建一个Kotlin的文件目录(如src/main/kotlin),然后添加一个ViewController类,如图16-9所示。

需要注意的是,使用AppCode创建的Kotlin Native项目默认是没有引入iOS的UIKit.framework系统库的,所以在使用iOS的相关库之前需要先导入相应的库。
ViewController类的源码如下:

import kotlinx.cinterop.ExportObjCClass
import kotlinx.cinterop.ObjCAction
import kotlinx.cinterop.ObjCOutlet
import platform.Foundation.NSCoder
import platform.UIKit.*
import kotlinx.cinterop.initBy@ExportObjCClass
class ViewController: UIViewController {constructor(aDecode:NSCoder): super(aDecode)override fun initWithCoder(aDecode:NSCoder) =initBy(ViewController(aDecode))@ObjCOutletlateinit var label: UILabel@ObjCOutletlateinit var textField: UITextField@ObjCOutletlateinit var button:UIButton@ObjCActionfun click(){label.text="Hello,${textFiled.text}"}
}

由于开发者自己定义的文件目录未被标记为源根目录,是不会被编译系统识别的,所以需要将“src/main/kotlin”目录标记为项目源码目录才能够被系统识别。

Kotlin Native测试

众所周知,AppCode本身就是基于IntelliJ IDEA的Kotlin插件,所以很多支持Kotlin的功能对于Kotlin/Native也是同样支持的(如代码检查、重构等操作)。

同时,AppCode插件也支持使用kotlin.test框架来编写测试代码。在项目名上右键,依次选中【Project Settings…】→【项目名】,然后点击左下角的添加按钮,如图16-11所示。

等待项目构建完成,然后选中【edit configurations…】打开项目配置面板并添加“Kotlin/Native test”选项来添加测试用例,如图16-12所示。

当然,除了上面介绍的功能外,Kotlin Native还支持调用Objective-C标准 API,而且也为此提供了非常便捷的阅读API文档的方法,可以说Kotlin Native是Kotlin多平台的真正魅力之所在。

使用Kotlin Native技术开发iOS应用相关推荐

  1. Kotlin 一统天下?Kotlin/Native 开始支持 iOS 和 Web 开发

    KotlinConf 大会宣布了 Kotlin 1.2 RC 版,并宣布 Kotlin/Native 已支持用于开发 iOS 应用和 Web 应用开发. 近日,首届官方举办的 Kotlin 专题会议 ...

  2. python kivy ios_Kivy跨平台技术开发iOS

    #kivy Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cyt ...

  3. KMM(Kotlin Multiplatform Mobile)Welcome to Kotlin/Native World

    1. 什么是Kotlin/Native Kotlin/Native是一种将Kotlin源码编译成不需要任何VM支持的目标平台二进制数据的技术,编译后的产物可以直接运行在目标平台上,设计Kotlin/N ...

  4. Web技术是开发iOS和Android App

    如果说以前的微信公众号还是一个媒体化的平台,那么2016年的公众号会有一种新的形态,叫应用号.应用号预示着比公众号更强大的功能.更优质的体验以及更丰富的服务.应用号的出现是微信产品的一次重大升级,无论 ...

  5. 【苹果家庭推iiMessage】React Native举行开发仍是iOS,用原生的代码实现类似webview的页面

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  6. 视频教程-ReactiveCocoa开发技术教程-iOS

    ReactiveCocoa开发技术教程 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加 ...

  7. IOS AR技术开发

    这几天了解了下AR的技术开发,关于AR网上也有一些指导博客,我这里由于也是刚开始接触AR,所以不加以多说,只是总一个个人总结. 关于AR我第一次感觉有意思是QQ在2017年城市内抢红包感受到的.当时觉 ...

  8. Java vs Kotlin,Android开发人员应该选择哪种语言?

    自 Google 于 2017 年宣布 Kotlin 成为 Google IO 的 Android 开发官方语言以来,想要成为Android开发人员的程序员正陷入两难境地. 在讨论这个问题前,我首先要 ...

  9. Kotlin Native新增Objective-C互操作能力以及对WebAssembly的支持

    根据JetBrains技术主管Nikolay Igotti的介绍,Kotlin/Native 0.4已经可用于为iOS和macOS开发原生应用.此外该版本还为WebAssembly平台提供了实验性支持 ...

最新文章

  1. 在Windows平台下使用安装GCC
  2. java写微信小程序答辩问题_微信小程序毕业设计选题和毕业论文怎么写,答辩流程是怎样的?...
  3. hive 的udf 函数使用
  4. 计算机硬件系统设计mooc,计算机硬件系统设计MOOC答案
  5. 解答网友提问 | 使用VS2022快速生成React/Angular/Vue.js + Web API前后端集成项目
  6. javascript学习系列(25):数组中的substr
  7. Mysql 获取年级每个班前十学生的信息
  8. PostgreSQL AS不忽略大小写
  9. 女神被打码了?一笔一划脑补回来,效果超越Adobe | 已开源
  10. Android Studio for Experts(Android Dev Summit2015)
  11. windows上传文件到linux乱码解决
  12. 转载:浅谈程序员的数学修养
  13. jquery $.post 超时_详解如何实现前端jquery中的ajax方法,看这一篇就够了
  14. 使用python来刷csdn下载积分(一)
  15. Java Swing MySQL图书管理系统
  16. # ubuntu 16.04 vivado2017.4版本用JTAG烧写usrpx310的固件
  17. 海洋地震设备与采集的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 使用python完成知乎模拟登陆
  19. 【历史上的今天】6 月 26 日:EDSAC 计算机之父诞生;B 站成立;Skype 创始人出生
  20. Qt WA_TranslucentBackground 导致视频渲染不了的问题

热门文章

  1. 高通MSM8255串口驱动移植
  2. Django-46-request之GET获取数据
  3. 分析国内CRM系统全新排行
  4. 向量检索的搜索引擎实现
  5. mysql数据库只读 改成正常_MySQL数据库设置为只读及测试【转】
  6. 手机QQ测试提供免费WiFi,你试过?
  7. 把chrome变成http服务的实用插件
  8. 配置Opencv出现0x000007b错误的解决方法
  9. Hadoop运行程序的时候在日志里发现的错误
  10. 使用Adobe Acrobat DC完成图像转PDF,PDF拆分,合并,调整尺寸,调整大小