Naúrar 2 / 11

Ƙirƙirar Lambar Wayar hannu tare da Hankali na Artificial: Kotlin, Swift da Ci gaban Platform

Riba:

  • Samun sauƙi mai sauƙi don kiyayewa da lambar iya gwadawa ta hanyar sanya tsarin gine-gine kamar MVVM da neman Layer ta Layer a cikin ƙananan ɓangarorin kafin samun bayanan wucin gadi ya samar da lambar.
  • Ƙarfin gane takamaiman tarko na harshe kamar aminci mara kyau da coroutine a cikin Kotlin, madaukai na zaɓi da ƙwaƙwalwar ajiya a cikin Swift, da duba lambar da aka ƙirƙira akan su.
  • Ikon tabbatar da izini da daidaitawa daban don kowane dandamali a cikin ayyukan giciye (Flutter, React Native)

Zuciyar ci gaban wayar hannu shine lamba, kuma anan ne mafi kyawun ribar da AI ke bayyana. Amma jumlar "Bari AI ta rubuta min lamba" ba dabara ce da kanta ba. Kyakkyawan tsara code; Yana buƙatar haɗa harshen da ya dace, daidaitaccen gine-gine, iyakokin da suka dace, da ingantaccen ingantaccen aiki. A cikin wannan rukunin, za mu koyi yadda ake amfani da AI cikin inganci da aminci don Swift, yaren iOS, Kotlin, yaren Android, da kayan aikin giciye waɗanda ke gudana akan dandamali biyu tare da tushe guda ɗaya. Manufar ita ce sanya AI ba a matsayin "lambar automaton" ba amma a matsayin mai haɓaka wanda ka ƙayyade gine-gine.

Architecture na farko, lamba na biyu

Kuskuren da ya fi kowa shine tambayar AI don lambar kai tsaye ba tare da tsarin gine-gine ba. Wannan kamar gina bango ne ba tare da aza harsashi ba. Mafi yawan gine-ginen da aka fi sani da wayar hannu shine MVVM (Model-View-ViewModel - ƙirar ƙira wacce ke raba bayanai, nuni, da dabaru na nuni). Wannan yana nufin cewa ra'ayi ra'ayi ne kawai, dabaru da jihar suna rayuwa a cikin ViewModel, kuma bayanan suna cikin Layer Model. Idan baku sanya wannan rabuwa akan AI daga farkon ba, yana samar da tsarin da ba za a iya gwadawa ba kuma mai wuyar kiyayewa wanda ke tattare da duk dabaru a cikin lambar allo.

Lafiyayyan ƙirƙira code yana gudana mataki-mataki:

  1. Ba da mahallin. Platform, harshe, sigar, gine-gine, dakunan karatu da aka yi amfani da su.
  2. Nemi yadudduka. Da farko samfurin bayanai, sannan Layer / data Layer, sannan ViewModel, na ƙarshe allon.
  3. Nemi kananan guda. allo ɗaya ko aiki ɗaya; Ba babban fayil ɗin layi 500 ba ne.
  4. Tabbatar da kowane yanki. Gina, gwadawa, haɗawa; sa'an nan kuma matsa zuwa waƙa ta gaba.
  5. Nemi mai gyara (inganta lambar). "sanya wannan ya zama abin karantawa kuma mai iya gwadawa" mataki bayan lambar aiki.
Alamomi: Faɗa wa AI "raba lambar bisa ga MVVM: wane ɓangaren ya kamata ya zama View, wanda ya zama ViewModel, wanda ya zama Model, ba su daban". Wannan jimla guda ɗaya ta ƙara haɓaka ingancin ƙirar ƙirar lambar da aka samar.

Kotlin da Swift: ƙayyadaddun la'akari da harshe

Kotlin (Android) da Swift (iOS) harsuna ne na zamani, amintattu, amma suna da matsaloli daban-daban. A cikin Kotlin, aminci mara kyau (duba ko mai canzawa zai iya zama "rauni" ta hanyar nau'in tsarin) wani lokaci AI yana buga shi a hankali; ba dole ba!! ma'aikaci (alamar da ke tilasta yin karo idan ba ta da tushe) na iya lalata aikace-aikacen. A cikin Swift, gudanar da zaɓi na zaɓi da hawan keke suna da mahimmanci; AI na iya mantawa don ƙara [rauni mai rauni] a cikin ƙulli kuma wannan zai haifar da ƙwanƙwasa ƙwaƙwalwar ajiya.

Don haka lokacin da kuka zaɓi yare, toshe da sauri daidai: kamar "Kiyaye rashin tsaro a cikin Kotlin, kar a yi amfani da !!" ko "Hana madaidaicin madaidaicin ma'amala a cikin rufewa a cikin Swift".

Tsanaki: code asynchronous wanda AI ya samar yana buƙatar kulawa ta musamman. Zaɓin da ba daidai ba a cikin Kotlin coroutines ko toshe babban zaren a cikin async/jira a cikin Swift zai daskare aikace-aikacen. AI yana yin waɗannan kurakurai akai-akai; Kada ku amince da shi ba tare da gwada shi ba.

Ci gaban dandamali: Flutter da React Native

Ga waɗanda suke son zuwa duka iOS da Android tare da tushe guda ɗaya, Flutter (Google's Dart-based Toolkit) da React Native (Maganin tushen JavaScript na Meta) sun fice. AI yana da ƙarfi a cikin waɗannan mahalli kuma, amma wani lokacin yana ƙetare bambance-bambancen dandamali (izini, ƙa'idodin ajiya, ƙayyadaddun halaye na na'ura). Misali, a cikin Flutter, ana bayyana izinin kyamara a cikin fayiloli daban-daban akan iOS da Android; AI na iya rubuta ɗaya kawai. A cikin lambar dandamali, yana da mahimmanci a faɗi "ba da izini da daidaitawa don duka dandamali daban".

Takaitaccen zaɓe:

kusanci

yaushe

hankali da AI

Dan Asalin (Kotlin/Swift)

Mafi girman aiki, haɗin kai-zurfin na'urar

Kowane dandali yana da lambar daban; tabbatar sau biyu

Flutter

Ƙungiya ɗaya, mai sauri, daidaitaccen UI

Duba takamaiman izini/saituna na dandamali da hannu

Amsa Dan Asalin

Tawagar Yanar Gizo/JS akwai

Gwada sassan gada (gadar ƙasa) a hankali

uku mini lokuta

Case 1 - Coroutine tarkon. Ƙungiyar Android ta sami aikin da ke cire jerin samfuran daga AI. Lambar tana yin buƙatar hanyar sadarwa a cikin babban zaren; Matsalar ba ta bayyana akan na'urar gwajin ba, amma akan hanyar sadarwa mara ƙarfi, aikace-aikacen ya daskare na daƙiƙa 4 kuma ya ba da gargaɗin ANR (Aikace-aikacen Baya Amsa). An gyara lokacin da aka gaya wa AI don "yi aikin cibiyar sadarwa a cikin mai aikawa na IO". Darasi: A koyaushe ana sarrafa ma'amala.

Case 2 - Ƙwaƙwalwar ƙwaƙwalwa. Wani mawallafin iOS ya gano cewa bayan buɗewa da rufe allon da AI ke samarwa sau 20, ƙwaƙwalwar ajiyar app ta ƙaru daga 40 MB zuwa 180 MB. Dalilin shi ne cewa ba za a iya share ViewController daga ƙwaƙwalwar ajiya ba saboda bacewar [rauni] a cikin rufewa. Hoton ƙwaƙwalwar ajiyar Xcode ya bayyana tarkon. Darasi: bayanin martabar ƙwaƙwalwar ajiya wajibi ne a cikin ci gaban ɗan ƙasa.

Case 3 - Bambancin dandamali. Ƙungiyar Flutter ta sami lambar shiga gallery daga AI, tana aiki akan Android amma ta faɗo akan iOS. Dalilin shi ne cewa ba a ƙara bayanin izinin ɗakin karatu na hoto (NSPhotoLibraryUsageDescription) cikin fayil ɗin Info.plist; AI kawai ya rubuta gefen Android. Gyaran mintuna 15 ne, amma da ya zama kin amincewa da kantin idan ba a kama shi ba.

Rauni mai ƙarfi / Ƙarfi mai ƙarfi

Rarraunar faɗakarwa: "Rubuta lambar Kotlin wacce ke jan samfura daga API."

Ƙarfafawa mai ƙarfi: "Ƙirƙirar lambar don Android/Kotlin wanda ke cire jerin samfuran daga REST API.- Layer Network tare da sake dawowa, dakatar da aikin- Aiki na cibiyar sadarwa a Dispatchers.IO; toshe babban zaren- MVVM: Repository -> ViewModel -> Jihar UI tare da StateFlow- Kuskuren jihohi: babu hanyar sadarwa, raba yanayin aji don 4xx, tsaro na 5x ta hanyar amfani da tsaro na 4xx Jumla 1 kowanne yayi bayani."

Ƙarfi mai ƙarfi yana hana lambar da aka ƙirƙira faɗawa cikin tarkon abubuwan da suka gabata.

Samfura masu kwafi

Samfurin samar da Layered: "Haɓaka [fasali] don [dandamali / harshe]. Samar da tsari: 1) Samfurin bayanai (class / tsarin) 2) Cibiyar sadarwa ko tushen bayanan Layer3) Repository4) ViewModel (Gudanar da Jiha) 5) Allon (UI) Fitar da kowane Layer daban, ƙara bayanin haɗin kai tsakanin su."

Samfurin tsaro na musamman na harshe (Kotlin):"Bita wannan lambar Kotlin: - Share amfani da !! da nau'in dandamali- Tabbatar da ikon Coroutine da zaɓin mai aikawa- Shin akwai kiraye-kirayen da ke toshe babban zaren?[code]"

Samfurin tsaro na musamman na harshe (Swift): "Bita wannan lambar Swift: - Haɗarin riƙewa a cikin rufewa (raunana / rashin mallakar kai) - Amfani da zaɓin ƙarfi-unwrap (!) - Babban aiki wanda ke buƙatar cire shi daga babban zaren [lambar]"

Samfuran sarrafa dandamali: "Jerin duk izini, daidaitawa, da takamaiman lambar da ake buƙata don wannan fasalin [Flutter/React Native] akan duka iOS da Android. Samar da keɓancewar Info.plist da shigarwar AndroidManifest.xml."

Kuskuren gama gari

  • Neman lambar ba tare da sanya gine-gine ba. Sakamakon: tsarin da ba a iya gwadawa wanda ke cushe komai akan allon.
  • Amintacce ba tare da gwada lambar guda ɗaya ba. Babban tubalan zaren da rashin daidaituwa shine mafi yawan abubuwan da ke haifar da hadarurruka.
  • Kulawa da sarrafa ƙwaƙwalwar ajiya. Musamman leaks a cikin rufewar iOS; Ba a san shi ba tare da ɗaukar bayanan martaba ba.
  • Ketare bambance-bambancen dandamali. A cikin kayan aikin giciye, izini da daidaitawa ana rubuta su daban akan dandamali guda biyu.
  • Ba tabbatar da sigar ɗakin karatu ba. AI na iya ba da shawarar API ɗin Retrofit/Alamofire mara amfani; Duba da daftarin aiki.
  • Samar da babban fayil guda ɗaya. Ba zai yiwu a kula da tabbatarwa ba; tambaya yadudduka.

a takaice

Ƙirƙirar lamba tare da AI yana da ƙarfi lokacin da ka ƙayyade gine-gine. Da farko sanya tsari kamar MVVM, sannan nemi Layer ta Layer kuma a cikin ƙananan guda, haɗa kuma gwada kowane yanki. Amintaccen rashin lafiya da corutine a cikin Kotlin, madaukai na zaɓi da ƙwaƙwalwar ajiya a cikin Swift suna buƙatar kulawa ta musamman. A cikin kayan aikin giciye, ana rubuta izini da daidaitawa daban don kowane dandamali. Ƙarfin faɗakarwa yana gaya wa harshe, sigar, gine-gine, da ƙayyadaddun ƙa'idodin tsaro na harshe a gaba; Wannan yana hana mafi yawan haɗari da kurakurai masu yabo a samarwa.

Aikin aikace-aikace

Don allon jeri (misali "jerin tuntuɓar sadarwa"), nemi lamba daga AI ta amfani da "Ƙara samfurin masana'anta" a cikin dandalin zaɓinku (Kotlin ko Swift). Ƙara lambar da aka ƙirƙira zuwa aikin, haɗa ta, sannan ku bincika waɗannan biyun: (1) hanyar sadarwa/tsari mai tsawo yana gudana akan babban zaren, (2) aminci mara kyau/na zaɓi daidai ne? Ka sa AI ta gyara matsalar da ka samu tare da ƙayyadadden samfurin tsaro na harshe.

jerin abubuwan dubawa

  • [ ] Na ƙayyade gine-gine (MVVM da dai sauransu) kafin neman lamba
  • [ ] Ina son shi Layer by Layer, a cikin ƙananan guda
  • [ ] Na gwada cewa rikodi na lokaci guda baya toshe babban zaren
  • [ ] Na duba rashin lafiya/nau'in tsaro da sarrafa ƙwaƙwalwar ajiya
  • [ ] Na tabbatar da izini/saitunan dandamali biyu daban-daban a cikin aikin dandamali
  • [ ] Na tabbatar da sigar ɗakin karatu da sa hannun API daga takaddun hukuma