Kotlin Multiplatform--03:项目实战

引言

        本章将会带领读者进行项目实战,了解如何从零开始编译一个能同时在Android和iOS运行的App。开发环境一般来说需要使用Macbook,笔者没试过Windows是否能开发。


一、配置开发环境

        按command+空格,搜索钥匙串访问。

        点击左上角的钥匙串访问->证书助理->从证书颁发机构请求证书。邮件地址填账号邮箱,选择存储到磁盘,点击下载。注意,必须填具有开发者权限的邮箱账号
        进苹果开发者中心,用刚刚下载的文件申请Development证书和Distribution证书,过程略。
        双击申请好的证书进行安装,我们再打开钥匙串就能看到刚刚安装的证书了。注意,证书旁边一定要有个右箭头才表示成功。

        打开终端,输入以下命令查看开发者id

kdoctor --team-ids

        再依次申请Identifiers、Devices、Profiles,过程略。唯一需要注意的是,得申请两个Profile,一个选iOS App Development,另一个选App Store Connect。下载申请到的profile文件,即xxx_dev.mobileprovision和xxx_dis.mobileprovision文件。


二、配置项目环境

        点击下载项目模板,我们勾选Android和iOS。

        下载后解压,用Android Studio打开,等待加载完成。如果出现以下警告,代表没有加载成功。根据笔者的经验来看,这种一般是代理设置有问题,建议关闭所有代理软件,并且检查~/.gradle/gradle.properties文件,把所有代理相关的配置删除。

        打开settings.gradle.kts可以看到有些部分有警告,可以不理睬,但如果想消除,可以在pluginManagement和dependencyResolutionManagement的上一行加上以下代码:

@Suppress("UnstableApiUsage")

        同步完成之后,打开iosApp/Configuration/Config.xcconfig,在第一行TEAM_ID后面加上前面通过kdoctor看到的id。


三、运行程序

        前面都搞定之后就可以尝试运行程序了,Android Studio已经帮我们配置好了,在右上角选择要运行的平台,要在Android中运行就选择composeApp,要在iOS中运行就选择iosApp。默认情况下,要在Android中运行需要一台Android物理机,进入调试模式并且连接Macbook,这里笔者推荐使用无线调试模式。而在iOS中运行,可以直接以虚拟机的方式启动。


四、发布程序

        打开build.gradle.kts,按照如下所示配置ios的构建信息:

kotlin {
    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64()
    ).forEach { iosTarget ->
        iosTarget.binaries.framework {
            baseName = "ComposeApp"
            isStatic = true
            optimized = true
             // 要填写完整包名+TEAM_ID
            binaryOptions["bundleId"] = "com.xxx.yyy.zzzid"
        }
    }
}

        这里要改成Release:

        用XCode打开项目里的iosApp,进入设置,找到Signing,取消勾选第一个Automatically manage signing,选择前面步骤得到的xxx_dis.mobileprovision(用于上传,如果仅开发使用xxx_dev.mobileprovision)文件,如下所示:

        找到Build Settings中的Framework Search Paths设置,将其他项都删除,只留下最后一个有composeApp的项,如下所示:

        打开shell,输入export,将里面的CLASSPATH和JAVA_HOME复制出来。回到XCode,进入Build Phrase,找到Compile Kotlin Framework,在cd "$SRCROOT/…"的前面加上刚刚复制的两个环境变量,并且把上面的Shell改成/bin/bash。如下所示:

        上方选择Any iOS Device

        点击XCode上面的Product中的Archive,等待完成。在弹出的窗口里,点击Distribute App,选Custom,选App Store Connect,选Export,取消勾选upload symbols,Next,Distribution certificate选前面安装的那个,Profile选前面xxx_dis.mobileprovision。等待完成并导出。

        进入苹果开发者中心,点击Users and Access

        点击集成,在App Store Connect API的团队密钥里,点击创建密钥。下载保存密钥,并复制Issuer ID和密钥ID:

        安装fastlane:

brew install fastlane

        cd到项目中的iosApp/iosApp.xcodeproj,使用fastlane初始化项目,最后选择4手动管理:

cd iosApp/iosApp.xcodeproj
fastlane init

        修改fastlane目录下的Appfile文件,填上自己的APP_IDENTIFIER和开发者账号邮箱。继续编辑Fastfile文件,填写如下脚本:

default_platform(:ios)
platform :ios do
	lane :upload_to_appstore do
		api_key = app_store_connect_api_key(
			key_id: "D384******",            # p8密钥ID
			issuer_id: "6053b4****",         # 发行者ID
			key_filepath: "/path/to/AuthKey_D384****.p8",  # p8文件路径
    	)
		deliver(
      		api_key: api_key,
	      	ipa: "path/to/your_app.ipa",                       # IPA 文件路径
	      	skip_screenshots: true,                            # 跳过截图上传
	      	skip_metadata: true,                               # 跳过元数据上传
	      	submit_for_review: false,                          # 是否提交审核
	      	force: true,                                       # 即使验证失败也上传
	      	precheck_include_in_app_purchases: false		   # 是否进行应用内购检测
    	)
	end
end

        运行脚本上传至appstore:

fastlane upload_to_appstore
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值