日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

KMM 搭建环境,并运行安卓和ios

發(fā)布時(shí)間:2025/3/21 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KMM 搭建环境,并运行安卓和ios 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

kmm是Kotlin Multiplatform Mobile(kt移動(dòng)跨平臺(tái))的縮寫,雖然目前還不是正式版本,但也是可以用了

kmm的跨平臺(tái)實(shí)現(xiàn)方式是將代碼分成三塊:

安卓原生代碼

ios原生代碼

kotlin共享代碼,其中在安卓部分會(huì)將kotlin共享代碼編譯為jvm文件并當(dāng)做lib加入到安卓原生代碼中,而ios則是將kotlin共享代碼編譯成native(oc?)代碼,然后當(dāng)做framework引入

(圖引自kt官網(wǎng))

這樣既可以跨平臺(tái),又保證了平臺(tái)靈活性,并且性能相對(duì)于flutter會(huì)更好

缺點(diǎn)就是目前未release,并且用的人少資料少,可能雙端的原生代碼寫的會(huì)多一些,目前跨平臺(tái)ui(compose-multiplatform)還沒有ios版,所以目前可以先試試,等出了跨平臺(tái)ui后應(yīng)該就真正實(shí)現(xiàn)跨平臺(tái)了

前置環(huán)境

一個(gè)macos系統(tǒng)(蘋果電腦),因?yàn)榫幾gios需要用macos和xcode

android studio 北極狐版本(2020.3.1)以上

jdk環(huán)境,可以直接下載一個(gè)jdk-mac安裝包,就可以直接將環(huán)境變量配置上去了

正文

首先在as上裝一個(gè)kmm插件(用于創(chuàng)建kmm demo)

然后new project,使用kmm插件創(chuàng)建

創(chuàng)建成功后并sync完成后,選中androidApp并點(diǎn)運(yùn)行,就可以直接運(yùn)行起安卓app

好了,kmm完事了!

emmm,怎么可能,下面在運(yùn)行一下ios

?選擇iosApp

發(fā)現(xiàn)出現(xiàn)一個(gè)x

這里可以修改一下iosApp規(guī)則

?將這里的iosApp.xcworkspace改成iosApp.xcodeproj,iosApp中會(huì)同時(shí)生成xcworkspace和xcodeproj可以看做是as中project和model的區(qū)別,相當(dāng)于我們選擇一個(gè)具體的model來執(zhí)行

我們?cè)邳c(diǎn)擊運(yùn)行,發(fā)現(xiàn)報(bào)錯(cuò)了(后來發(fā)現(xiàn)好像不報(bào)這個(gè)錯(cuò)了?但還是保留吧)

?因?yàn)槲业谝淮谓佑|ios開發(fā),所以我也不太清楚是什么具體問題,但直覺來看應(yīng)該是編譯環(huán)境問題,我用的是m1的macos,所以可能是默認(rèn)kotlin編譯為native用的x86,而我看到kotlin共享模塊的gradle配置處有配置ios,所以我們稍微改一下并測(cè)試一下就好了

原配置如下:

?可能是走到else里了,由于我們不是專門搞ios的,并且目前只有一個(gè)m1蘋果電腦,所以就簡(jiǎn)單的改為如下配置:

?再次點(diǎn)擊運(yùn)行,然后提示沒有導(dǎo)入共享的模塊

?這里查了一下,是沒有將framework引入到xcode項(xiàng)目中,所以我們用xcode打開iosApp項(xiàng)目并將framework導(dǎo)入

我們先用xcode打開項(xiàng)目,點(diǎn)open a project,然后選擇這個(gè)文件

這時(shí)候xcode里空的什么都沒???弄得我一臉懵,然后才知道得將model導(dǎo)入進(jìn)去,如下

?選擇目錄中的iosApp.xcodeproj文件并確定,然后可以發(fā)現(xiàn)左邊欄有文件夾了

然后我們?nèi)s中生成一下framework

雙擊這個(gè)命令生成ios所使用的共享framework?

先點(diǎn)擊藍(lán)色的iosApp文件打開配置文件,并點(diǎn)擊這個(gè)加號(hào)?

?

?點(diǎn)擊add other再點(diǎn)add files,將我們生成的framework引入進(jìn)去,目錄如下

讓后將上面的目錄配置到framework path中

?內(nèi)容:?${SRCROOT}/../shared/build/bin/ios/podReleaseFramework/

配置成功后我們?cè)俅卧赼s中點(diǎn)擊運(yùn)行,發(fā)現(xiàn)ios模擬器啟動(dòng)起來了,程序也運(yùn)行上去了,但是as不知道為什么崩了(已提交反饋),正常到這里應(yīng)該就可以了,但是現(xiàn)在as崩了,但也可以從xcode中運(yùn)行,不過需要簡(jiǎn)單配置一下

我們由于xcode執(zhí)行只能走xcode的東西,不能直接調(diào)用gradle去讓共享kt代碼編譯,這時(shí)我們可以使用xcode的腳本功能

?

將這個(gè)腳本拖到最上面先于xcode編譯,內(nèi)容如下:

# 防止找不到 JAVA_HOME 環(huán)境變量(如果使用 zsh) if [ -f ~/.zshrc ]; thenecho "zsh"source ~/.zshrc fi # 防止找不到 JAVA_HOME 環(huán)境變量(如果使用 bash) if [ -f ~/.bashrc ]; thenecho "bash"source ~/.bashrc ficd "$SRCROOT" cd ../ # 這里為 Android 工程的目錄名 # kmmsharedmodule 為 KMM 模塊,Gradle project 名https://img.coderyuan.com/1622193265424.png ./gradlew :shared:clean :shared:linkPodReleaseFrameworkIos -PXCODE_CONFIGURATION=${CONFIGURATION}

ps:這里會(huì)用到j(luò)dk環(huán)境,需要配置JAVA_HOME,如果之前沒有安裝過,就可以直接在官網(wǎng)下載一個(gè)macos的jdk的安裝版,這樣環(huán)境變量就直接配置好了

pps:如果想要提升速度,可以將:shared:clean去掉,一般不會(huì)有情況,如果有情況可以手動(dòng)調(diào)用

ppps:當(dāng)然這個(gè)腳本只是在xcode運(yùn)行的時(shí)候使用的,如果只在as中運(yùn)行iosApp的話可以將這個(gè)腳本去掉,否則可能會(huì)出現(xiàn)共享代碼編譯兩次導(dǎo)致浪費(fèi)時(shí)間的問題

然后就可以用xcode的運(yùn)行功能了.

完事.

結(jié)語

當(dāng)然,我沒用過xcode開發(fā),所以可能會(huì)有配置或者寫錯(cuò)的地方,如果有請(qǐng)大佬指出

其次,由于kmm可能未來還會(huì)改api,所以文章可能有部分會(huì)過時(shí),但是我盡量及時(shí)修改

文章部分參考該大佬的文章:KMM(Kotlin Multiplatform Mobile)入門(二)在現(xiàn)有工程中集成 KMM | 可愛的程序猿 - CoderYuan.com

最后,EDG牛逼!!!?EDG牛逼!!!?EDG牛逼!!!?

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的KMM 搭建环境,并运行安卓和ios的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。