Chuyển đến nội dung chính

Is Kotlin Multiplatform Mobile Ready for Production?

 



Điều tôi sẽ nói trong video này

Kotlin multi-platform hoặc kotlin multi-platform mobile đã sẵn sàng để sản xuất. Đó là câu hỏi mà tôi sẽ thử và trả lời trong video này. Đây có lẽ sẽ là một video dài hơn. Đây sẽ giống như một video kiểu bản trình bày hơn. Nếu bạn có thể tưởng tượng ngồi tại một hội nghị ở đâu đó, đó là tôi đứng trước một sân khấu với một điểm mạnh phía sau tôi. Đó là kiểu mà tôi sẽ hướng tới hoặc kiểu thuyết trình mà bạn có thể mong đợi từ video này.


Vì vậy, như nhiều người trong số các bạn biết nếu bạn theo dõi tôi trên twitter instagram youtube, internet ở đâu đó tôi đã làm việc trên cột đa nền tảng gần đây hoặc cụ thể hơn là kotlin di động đa nền tảng và trong video này.

Những gì tôi sẽ làm là tôi sẽ tóm tắt kinh nghiệm của mình khi sử dụng kotlin đa nền tảng bởi vì bây giờ tôi đã có một ứng dụng thực sự trong sản xuất, tôi có một ứng dụng ios và tôi đã có một ứng dụng android trong sản xuất cả hai. trong số đó được xây dựng bằng kotlin di động đa nền tảng.


Vì video này sẽ dài hơn một chút so với các video mà tôi thường làm, nên đó là video tóm tắt toàn bộ mà bạn biết. Tôi sẽ thực sự đặt các dấu thời gian, tôi sẽ cho bạn biết chính xác những gì tôi sẽ nói trong video này và tôi sẽ đặt các dấu thời gian xuống bên dưới để bạn có thể dễ dàng chuyển đến bất cứ điều gì phần bạn muốn hoặc nếu bạn có đồng nghiệp hoặc bạn bè hoặc đồng nghiệp hoặc một cái gì đó và có một chủ đề cụ thể mà tôi đã nói đến và bạn muốn giới thiệu đến họ, dấu thời gian sẽ ở bên dưới.

Vì vậy, trước tiên chúng ta hãy xem xét các chủ đề mà tôi sẽ nói về điều gì tôi sẽ nói về những gì bạn có thể thấy từ tiêu đề trên đó.



  • Đầu tiên, tôi sẽ demo ứng dụng android và ios mà tôi có trong quá trình sản xuất mà tôi đã xây dựng bằng kmm.

  • Tiếp theo, tôi sẽ nói về các thư viện hoặc các công cụ mà tôi đã sử dụng cho android, điều này giống như các phụ thuộc mà tôi đã sử dụng. Tôi đã chia sẻ mã thư viện nào giữa hai thư viện.

  • Tiếp theo chúng ta sẽ nói về kiến trúc nên tôi sẽ làm sơ đồ kiến trúc một chút. Tôi sẽ nói về những gì tôi nghĩ là kiến trúc lý tưởng cho một dự án kmm.

  • Tiếp theo chúng ta sẽ nói về các vấn đề. Đây sẽ là tôi chủ yếu chỉ phàn nàn về những điều mà tôi đã gặp phải khi cố gắng xây dựng những dự án kmm này.

  • Sau đó, chúng ta sẽ nói về việc tôi mất bao lâu để xây dựng các ứng dụng này.

Bây giờ đối với những người bạn biết tôi biết rằng tôi không có bất kỳ kinh nghiệm nào về

phát triển iOS.

Tôi thực sự vừa mua một máy tính ios hoặc mac đặc biệt cho dự án kmm này.

Vì vậy, tôi sẽ nói về cơ bản tôi đã mất bao lâu để không chỉ học kmm và cách đưa ứng dụng này vào sản xuất mà còn mất bao lâu để tôi bắt đầu.

Tôi đoán với bạn là bạn biết sự phát triển của ios và sự nhanh chóng của bạn, vì vậy tổng thời gian đó của tôi mất bao lâu và điều này không phải để khoe khoang hay nói hoặc nói về việc tôi học chậm như thế nào hoặc bất cứ điều gì tương tự mà chỉ để cung cấp cho bạn một số quan điểm về thời gian tôi đã phải làm điều gì đó mà tôi chưa có kinh nghiệm và bây giờ tôi có hai việc trong quá trình sản xuất.




    • Sau đó, chúng ta sẽ nói về những gì tôi nghĩ kmm có thể cải thiện sau khi dành thời gian này và đưa ứng dụng vào sản xuất. Vì vậy, những điều mà tôi nghĩ muốn đưa nó lên cấp độ tiếp theo là gì?

    • Tiếp theo là kmm cho các nhóm lớn, vì vậy tôi có nghĩ rằng kmm là thứ mà bạn biết hàng trăm nhà phát triển có thể làm việc trong một dự án cùng nhau. Đó có phải là một ý tưởng tốt, loại quan điểm của tôi về điều đó.

    • Sau đó, chúng ta sẽ nói về độ rung hoặc kmm, một trong những câu hỏi mà nhiều người muốn có câu trả lời. 

    • Và cuối cùng là kmm đã sẵn sàng để sản xuất.



Đây là câu hỏi mà mọi người đều muốn biết câu trả lời và thậm chí là tiêu đề của video này.

Bây giờ, hãy nhớ rằng tất cả những gì tôi nói trong video này là ý kiến cá nhân của tôi về một anh chàng cô đơn đang ngồi trên máy tính chơi với đồ đạc. Đây chỉ là những ý kiến của tôi. Đừng tức giận nếu tôi nói điều gì đó mà bạn không thích. Đừng quá phấn khích nếu tôi nói điều gì đó mà bạn thực sự thích. Đó chỉ là ý kiến cá nhân của tôi. Tôi sẽ thành thật với các bạn nhất có thể. Trên thực tế, tôi sẽ hoàn toàn trung thực. Tôi sẽ cho bạn biết chính xác những gì tôi nghĩ về mọi thứ mà tôi đã làm.

Vì vậy, một lần nữa ý kiến của tôi, tôi là một người đàn ông không tức giận và không làm cho bạn biết quá phấn khích.


1. Demo Android App

Được rồi, chúng ta hãy đi vào bản trình diễn này. Vì vậy, ở phía bên tay phải ở đây tôi có điện thoại Android cá nhân của tôi mà tôi đã cài đặt ứng dụng và bên trái là điện thoại iOS mà tôi đã phải mua để thử nghiệm ứng dụng này.




Vâng, tôi đã phải bỏ ra rất nhiều tiền để bắt đầu với thứ IOS này, tôi đã phải mua một chiếc máy tính xách tay. Dù sao tôi cũng phải mua một chiếc điện thoại.

Có lẽ điều này sẽ nằm trong phần phàn nàn, chúng ta hãy đi vào bản demo ứng dụng.

Vì vậy, trước tiên, hãy khởi chạy ứng dụng khách Android, vì vậy tôi sẽ nhấp vào biểu tượng bạn sẽ có màn hình giật gân đẹp mắt và sau đó bùng nổ nó sẽ đưa bạn đến một bản đồ nơi bạn thấy tất cả tình trạng mất điện từ tỉnh mà tôi sống ở Canada.

Vì vậy, đối với những bạn chưa biết gì về ứng dụng này có lẽ hầu hết các bạn đây là một ứng dụng mà tôi đã xây dựng cách đây vài tháng, nó là một ứng dụng hiển thị tất cả các trường hợp mất điện ở tỉnh của tôi. công ty trong toàn bộ tỉnh của tôi, nơi tôi sống ở Canada Columbia của Anh.

Họ quản lý tất cả nguồn điện để bạn có thể biết nguồn dữ liệu nếu mất điện.

Họ tình cờ xuất bản điều này lên trang web của họ. Hãy tham gia vào bản demo vì tôi chắc chắn rằng các bạn chỉ muốn xem điều đó.

Vì vậy, ứng dụng rất đơn giản, tôi muốn thử và làm cho điều này càng đơn giản càng tốt khi tôi xây dựng nó, về cơ bản, tôi có một màn hình là bản đồ nếu tôi là bạn biết nhấp vào khi cúp điện, tôi có một trang dưới cùng ở đây. tôi có thể lấy thông tin về điều đó.




Nó nói rằng bạn biết điều gì đã xảy ra khi nguồn điện sẽ được khôi phục nếu có một đội đã được cử đi bao nhiêu khách hàng bị ảnh hưởng và sau đó khu vực chung mà tôi có thể phóng to khi mất điện để xem như khu vực cụ thể mà nó đang ảnh hưởng và sau đó có một số tùy chọn lọc nếu bạn muốn xem xét tất cả các trường hợp mất điện khác.

Vì vậy, nếu tôi nhấp vào biểu tượng đó ở trên cùng bên phải, nó sẽ mở ra một ngăn kéo và tôi có thể lọc các vùng khác nhau trong tỉnh.



Vì vậy, chúng ta hãy nhấp vào phần đất liền thấp hơn, nơi tôi đang sống. Bạn có thể xem các bản cập nhật bản đồ trong nền khi tôi chọn phần đất liền thấp hơn và điều đó có nghĩa là nó thay đổi bản đồ để chỉ hiển thị tình trạng ngừng hoạt động cho khu vực cụ thể đó và tôi có thể lọc thêm nữa mà tôi có thể lọc các thành phố tự trị.




Vì vậy, tôi sống ở Abbotsford nên tôi sẽ nhấp vào Abbotsford ở dưới đó.

Sau đó, bạn có thể thấy nó phóng to vào Abbotsford và nó hiển thị sự cố mất điện và tôi có thể bạn biết hãy nhấp vào chúng và nhận thông tin về chúng.

Nó khá là nhiều. Đó là hầu hết tất cả những gì ứng dụng làm lại rất đơn giản nhưng nó giải quyết được một vấn đề ở đó. Hiện tại không có ứng dụng nào từ bc hydro cho bạn biết thông tin cúp điện này.


2. Demo IOS app

Vì vậy, đó là ứng dụng khách Android. Bây giờ chúng ta hãy xem xét ứng dụng khách IOS.

Tôi sẽ nhấp vào biểu tượng ngay lập tức và nó sẽ mở ra bản đồ giống hệt như ứng dụng android. Nếu tôi nhấp lại vào một lần cúp điện cụ thể với cùng một loại tùy chọn, tôi sẽ nhận được trang dưới cùng này có sẵn cho tôi, tôi có thể phóng to cảnh cúp điện đó giống hệt như ở đây.




Sau đó, tôi có các tùy chọn lọc ở đây. Hãy nhấp vào đại lục thấp hơn một lần nữa. Một lần nữa bản đồ cập nhật trong nền. Bạn đã thấy điều đó ngay khi tôi nhấp vào phần đất liền thấp hơn. Hãy nhấp vào chúng tôi sẽ nhấp vào một khu vực khác lần này, chúng tôi sẽ nhấp vào vancouver và sau đó bùng nổ nó phóng to bạn biết vancouver và tôi có thể nhấp vào sự cố mất điện.

Một điều tôi thực sự đã không cho bạn thấy trong ứng dụng khách android là cách tôi có thể cập nhật các bộ lọc này để bạn có thể thấy có một nút chỉnh sửa nhỏ ở đây.

Vì vậy, nếu tôi nhấp vào chỉnh sửa trên đô thị mà tôi nhấp vào nó sẽ thu nhỏ lại và sau đó cung cấp cho tôi các tùy chọn đối với các thành phố tự trị khác nhau.

Nếu tôi nhấp vào nút chỉnh sửa cho khu vực mà tôi đã nhấp.

Vì vậy, hãy nhấp vào đó một lần nữa, sau đó bạn biết thu phóng ngay trở lại và sau đó hiển thị cho tôi những vùng mà tôi có thể chọn.

Vì vậy, đó là khá nhiều và bạn có thể thấy rằng chúng gần như giống hệt nhau cả ứng dụng khách ios và ứng dụng khách android.


3. Libraries/ Tool I used 


Bây giờ chúng ta hãy nói về các phụ thuộc mà tôi sử dụng các thư viện công cụ khác nhau mà bạn biết, bất cứ điều gì bạn muốn gọi chúng là những thứ khác nhau mà tôi đã sử dụng trong các dự án này và cái nào trong số đó được chia sẻ giữa cả IOS Android và những thứ bạn biết Android cụ thể hoặc IOS cụ thể.



Vì vậy, đối với loại thư viện được chia sẻ, tôi rất thích SQL cho máy khách bộ nhớ đệm, ứng dụng sẽ tải xuống dữ liệu mạng và sau đó nó sẽ lưu vào bộ nhớ Cache và sau đó cứ sau 15 phút nó sẽ cập nhật mạng đó mà bạn nhận được dữ liệu mạng mới sau đó cập nhật bộ nhớ cache để Sqlite là một ứng dụng khách bộ nhớ đệm phổ biến thực sự tuyệt vời. Tôi đã gặp một chút khó khăn khi thiết lập nó nhưng tôi đang nói về điều đó trong phần phàn nàn nhưng dù sao thì đó cũng là những gì chúng tôi đang sử dụng cho bộ nhớ đệm Ktor cho máy khách mạng.



Nhân tiện, Ktour là một thư viện mạng tuyệt vời. Tôi ngạc nhiên là tôi đã không sử dụng nó trước đây.

Tôi đoán lý do mà tôi chưa bao giờ xem xét nó trước đây là vì tôi luôn sử dụng trang bị

thêm trên Android và không có gì sai khi trang bị thêm như trang bị bổ sung tuyệt vời.

Nó chỉ giải quyết tất cả các vấn đề của tôi nên tôi chưa bao giờ thực sự đi xem xét bất cứ thứ

gì khác nhưng ktor thật tuyệt vời như ktor là một thư viện mạng cấp cao nhất.



Tôi có thể sẽ sử dụng ktor từ bây giờ và tôi sẽ không sử dụng trang bị thêm nữa.

Sau đó, chúng tôi có ngày giờ Collinex, vì vậy nếu bạn sử dụng Android, bạn có thể sử dụng

như các lớp ngày sử dụng java rõ ràng là tôi muốn chia sẻ càng nhiều mã càng tốt vì vậy

trong mô hình miền của tôi, bạn biết tôi có thể sử dụng cấu trúc dữ liệu chia sẻ cho các ngày

giờ ngày giờ Collinex là tuyệt vời cho điều đó.

Tôi đã gọi tuần tự hóa tiếp theo để giải mã hóa và tuần tự hóa dữ liệu.



Chúng tôi có sự cố firebase, tôi nghĩ rằng firebase crashlytics nên được bao gồm trong mọi

dự án sản xuất duy nhất ngoài đó trừ khi bạn có một số công cụ ghi nhật ký sự cố khác mà

bạn biết, nhưng firebase crashlytics thật tuyệt vời, đó là thông tin mà bạn nhận được trong

bảng điều khiển firebase với sự cố xảy ra trong quá trình sản xuất thật tuyệt vời.



Bạn biết đấy, tôi không biết bạn sẽ giải quyết mọi vấn đề như thế nào nếu bạn không có sự

cố trong quá trình sản xuất.

Vì vậy, Crashlytics thật tuyệt vời. Nó miễn phí, tại sao không sử dụng nó?

Sau đó, chúng tôi đã chuyển sang Android bây giờ vì vậy chúng tôi có Jetpack Compose rõ

ràng và điều này đang sử dụng một hoạt động duy nhất không có phân đoạn nên hệ thống

điều hướng chỉ soạn thư là những gì tôi đã sử dụng.



Chúng tôi có một thành phần điều hướng giúp xây dựng hệ thống điều hướng chỉ soạn đó.

Chúng tôi có hậu quả cho việc tiêm phụ thuộc.



Bây giờ tôi có thể đã thực sự chắc chắn có thể đã sử dụng một giải pháp tiêm phụ thuộc

phổ biến mà tôi có thể đã sử dụng.

Một đồng tiền mà tôi biết sẽ có tác dụng. Tôi nghĩ rằng codeine cũng sẽ ổn nhưng đồng xu

mà tôi biết chắc chắn sẽ hoạt động.

Vì vậy, trong tương lai, giống như khi tôi thực hiện một khóa học về Kmm, tôi có thể sẽ sử

dụng tiền xu để tiêm phụ thuộc và tôi sẽ không bận tâm đến việc sử dụng chuôi kiếm.



Lý do tôi sử dụng chuôi là tôi nghĩ rằng chúng ta phải sử dụng chuôi để có thể thực hiện

chèn hàm tạo vào các mô hình khung nhìn và duy trì phiên bản của mô hình khung nhìn ở

dạng có thể ghép được nhưng chúng tôi không làm như vậy.

Về cơ bản chúng ta có thể loại bỏ hoàn toàn các mô hình chế độ xem bây giờ nhưng tôi sẽ

nói nhiều hơn về điều đó trong khóa học mà tôi thực hiện.

Vì vậy chuôi kiếm là không cần thiết. Dù sao thì tôi cũng có thể sử dụng một đồng xu hoặc

bất cứ thứ gì tương tự.

Tiếp theo, chúng tôi có một người quản lý công việc như tôi đã nói, dữ liệu mạng được làm

mới sau mỗi 15 phút.

Vì vậy, tôi sa thải hoặc tôi tạo một công việc quản lý công việc để làm điều đó. Tôi lên lịch

cứ sau 15 phút để lấy dữ liệu mạng mới đó, sau đó cập nhật bộ nhớ đệm và sau đó chúng tôi

có một cuộn dây đi kèm để hiển thị hình ảnh.

Tôi nghĩ đó là tất nhiên, không có bản đồ google nào cuối cùng.

Bây giờ chúng ta sẽ chuyển sang IOS. Vì vậy, chúng tôi có ui nhanh chóng cho các công cụ

xây dựng UI. Đây là bạn biết một bộ công cụ UI khai báo khác giống như Jetpack Compose

giống như các cách sử dụng Flagship.



Chúng tôi có Cocoapod để quản lý phụ thuộc cho những bạn chưa quen với việc phát triển IOS.

IOS không có bất kỳ thứ gì giống như tệp build.gradle trên Android nên bạn cần.

Tôi đoán giống như một giải pháp quản lý sự phụ thuộc và đó là những gì Cocoapods sau

đó chúng tôi có bản đồ google. và có những thứ khác bạn có thể sử dụng nhưng tôi đã

chọn bản đồ google vì tôi đã quen với bản đồ google nên tôi nghĩ nó sẽ dễ dàng hơn.

Hóa ra đó có lẽ không phải là sự lựa chọn đúng đắn nhưng tôi sẽ nói về điều đó sau.



Và cuối cùng nhưng không kém phần quan trọng là loại tiêm phụ thuộc tôi đã sử dụng tốt.

Tôi đã sử dụng tiêm phụ thuộc thủ công kiểu cũ tốt.


4. Architecture


Vì vậy, bây giờ chúng ta hãy nói một chút về kiến trúc. Tôi đã sử dụng kiến trúc gì và kiến

trúc làm gì? Tôi nghĩ rằng nó là lý tưởng cho một dự án Kmm. Bạn biết rằng các bạn đã xem

các ứng dụng, bạn đã thấy chúng trông như thế nào, chúng khá đơn giản nhưng tôi sẽ tiếp

cận điều này từ quan điểm của các bạn biết bất kỳ ứng dụng kích thước nào. Kiến trúc nào là

lý tưởng cho một ứng dụng nhỏ? Điều gì là tốt cho một ứng dụng lớn? Tôi nghĩ câu trả lời là

tất cả cùng một kiến trúc sạch sẽ.



Vậy kiến ​​trúc sạch trông như thế nào trong một dự án Kmm? Nó trông giống như sau: Bạn

có miền của mình, nơi các mô hình kinh doanh cốt lõi của bạn tồn tại. Nguồn dữ liệu của

bạn nơi bạn có ứng dụng khách bộ nhớ đệm, ứng dụng khách mạng của bạn.

Sau đó, bạn có những người tương tác của mình hay nói cách khác là các trường hợp sử

dụng của bạn và sau đó phân tách những gì bạn biết về logic nghiệp vụ, lớp nghiệp vụ với

lớp khuôn khổ, hai lớp đó là loại ranh giới phân tách chính. Kinh doanh lên hàng đầu, nơi đó

là Kotlin tinh khiết. Không liên quan gì đến IOS, không liên quan gì đến Android.



Và sau đó xuống bên dưới, chúng tôi có một khuôn khổ. Nơi bạn sẽ về cơ bản giống như

trong một kịch bản lý tưởng. Điều duy nhất bạn có dưới đó là mã giao diện người dùng

nhanh chóng và mã Jetpack Compose của bạn hoặc bất kỳ loại khung cụ thể nào khác như

các dịch vụ và những thứ tương tự.

Vì vậy, lý do tôi nghĩ rằng kiến ​​trúc sạch là kiến ​​trúc lý tưởng cho một dự án Kmm là vì nó tối

đa hóa sự tách biệt các mối quan tâm và nó tối đa hóa sự tách biệt giữa mã Kotlin thuần túy

và mã khung cụ thể của bạn.

Vì vậy, giống như tôi đã nói miền của bạn mô hình hóa ứng dụng khách bộ đệm mạng của

bạn các trường hợp sử dụng của bạn.

Tất cả đó là rất nhiều mã giống như đó có thể là phần lớn mã trong dự án của bạn. Đó là tất

cả Kotlin vì vậy tất cả được chia sẻ và sau đó bạn chỉ phải thích trong một thế giới hoàn

hảo, bạn sẽ chỉ xây dựng uis cho IOS và UI cho Android.

Bây giờ khi tôi xây dựng dự án Kmm của mình, tôi thực sự đã xây dựng một mô hình chế

độ xem. Đó là khuôn khổ cụ thể, vì vậy tôi đã xây dựng một mô hình chế độ xem Android và

tôi đã xây dựng một mô hình chế độ xem IOS và chúng có cấu trúc dữ liệu tương đối có thể

quan sát được trong đó.

Và sau đó những thứ đó sẽ được trình bày với giao diện người dùng, giao diện người

dùng nhanh chóng hoặc giao diện người dùng Jetpack Compose.

Tôi sẽ nói thêm một chút về vấn đề này sau nhưng tôi nghĩ có một cách mà bạn có thể

di chuyển ViewModel vào lớp nghiệp vụ, giống như một cách lưu mã khổng lồ khác như

nếu bạn có thể chia sẻ mô hình xem thì theo nghĩa đen, toàn bộ dự án khác ngoài giao

diện người dùng sẽ được chia sẻ. Cái nào là tuyệt vời?

Và một điều khác về chủ đề đó như bạn biết um bao nhiêu mã nên được chia sẻ.

Tôi đoán đó là một câu hỏi thường xuất hiện. Tôi gần như nghĩ rằng đó là điều bạn muốn

chia sẻ nhất. giống như tất cả các cách từ mô hình xem trường hợp sử dụng nguồn dữ

liệu miền của bạn. Tôi nghĩ bạn muốn dừng lại ở đó. Tôi không nghĩ rằng bạn sẽ muốn chia

sẻ nhiều mã hơn thế. Bởi vì bạn muốn tận dụng các công cụ gốc sẵn có. Vì vậy, giống như

Swift UI Jetpack Compose, bạn có thể viết nó theo cách được chia sẻ. Tôi nghĩ rằng điều

đó mang lại cho bạn ứng dụng tốt nhất có thể. Nơi bạn đang chia sẻ mã cần được chia sẻ

và bạn không chia sẻ mã không nên chia sẻ. Bạn đang tận dụng những thứ hoặc đặc sản

dành riêng cho khuôn khổ có sẵn và bạn đang chia sẻ những điều không quan trọng mà

bạn biết. Tôi nghĩ rằng trong một kịch bản hoàn hảo, đó có thể là tất cả mã mà bạn muốn

chia sẻ.


5. Problems I encountered


Và bây giờ là lúc bắt đầu phàn nàn. Những thứ mà tôi đã bị treo lên mà tôi đã dành nhiều

thời gian hơn tôi lẽ ra phải có là gì? Những điều khiến tôi đau đầu là gì? Khó khăn lớn nhất

mà tôi gặp phải khi thiết lập Kmm và bắt đầu tất cả những điều này là cấu hình Gradle.

Tôi không biết gì về Gradle giống như tôi hầu như không biết gì về Gradle. Tôi không biết

cách viết các tập lệnh Gradle, chỉ biết những tập lệnh rất đơn giản. Tôi thực sự không biết

nhiều về Gradle nên bất kỳ loại vấn đề hoặc cấu hình Gradle nào xảy ra, tôi đều gặp rất

nhiều khó khăn trong việc giải quyết thời gian.


Và tài liệu Kmm đã giải quyết một số điều này có thể gây ra sự cố do dự án của tôi không

thể xây dựng hoặc bất cứ điều gì. Nhưng rất nhiều trong số đó không được ghi lại.

Và tôi đã phải đi xem xét các dự án mẫu khác. Hãy hét lên với John O'Reilly. Tôi đã xem xét

tất cả các dự án mẫu của bạn và rất nhiều trong số đó là lý do tại sao tôi sẽ giải quyết

những vấn đề này.




Vì vậy, cấu hình Gradle là lỗi lớn nhất của tôi. Và tôi chắc rằng điều đó có liên quan đến bạn

khi biết rằng bạn phải sử dụng Android Studio canary. Nếu đây là phiên bản Android Studio

thực hoặc được xuất bản đầy đủ. Tôi chắc chắn rằng rất nhiều thứ sẽ được hoàn thiện và sẽ

có một cấu hình Gradle cụ thể mà bạn có thể sử dụng bất cứ khi nào nó sẽ được ghi lại đầy

đủ. Vì vậy, vấn đề đau đầu nhất mà tôi gặp phải là cấu hình grail, tôi đã bị mắc kẹt rất nhiều

lần khi dự án của tôi không thể xây dựng và nó chỉ kết thúc là do một số lỗi nhỏ ngu ngốc

như một kẻ lót đường trong Gradle đó. Tôi đã phải thêm một cái gì đó và sau đó nó sẽ hoạt động và nó sẽ xây dựng. Ngoài ra, SQL thỏa thích yêu cầu một số cấu hình Gradle và tôi

đang gặp một số vấn đề với điều đó. Tôi đã không viết ra chi tiết cụ thể nên tôi không thể cho bạn biết cụ thể nó là gì nhưng cũng giống như cấu hình nôi chung đã gây ra cho tôi rất nhiều vấn đề.

Tiếp theo thực sự là Cocoapods. Vì vậy, đây là một điều dành riêng cho IOS nếu bạn nhớ

từ biểu đồ của chúng tôi ở đây.



Chúng tôi có Cocoapods là một trong những phụ thuộc dành riêng cho IOS.

Vì vậy, một lần nữa tôi không có kinh nghiệm về phát triển IOS trước khi bắt đầu xây dựng

dự án Kmm này.

Tôi không biết Cocoapods là gì. Tôi không biết làm thế nào để sử dụng nó. Nhưng tôi đã có

một số. Tôi đã gặp rất nhiều vấn đề với Cocoapods. Cuối cùng tôi đã cố gắng xây dựng một

dự án chỉ là một dự án IOS độc lập với Cocoapods và tôi không gặp vấn đề gì cả. Mọi thứ

hoạt động chính xác như dự kiến nhưng ngay sau khi tôi cố gắng đưa nó vào dự án Kmm, nó

đã khiến tôi đau đầu đủ thứ.

Lý do là nó là một thứ cấu hình Gradle khác. Tôi không biết rằng Android studio có

plugin Cocoapods mà tôi phải thêm cấu hình Gradle cho Cocoapods.



Có dấu chấm Podspec này hoặc tệp cocoapods.podspec hoặc thứ gì đó tương tự. Điều đó

sẽ được tạo dựa trên cấu hình Cocoapods của bạn trong Android Studio. Vì vậy, tôi sẽ đi

xem xét các dự án mẫu và cố gắng tìm ra vì những thứ này không được ghi lại. Và tôi đang

cố gắng tìm ra cái quái gì xảy ra với Cocoapods và tôi đi xem xét và tôi thấy rằng họ có

tệp cocoapods.podspec này và tôi đã xem xét nó và tôi nói ồ có lẽ tôi cần thêm điều này và

tôi muốn thêm nó vào dự án của mình và bạn biết là phải viết vào tất cả các thuộc tính

nhưng thực ra đó là một tệp đã được tạo. Vì vậy, tôi không phải thêm nó, tôi phải thêm cấu

hình và sau đó nó được tạo. Dù sao thì, tôi đã có một loạt vấn đề với điều đó nhưng phải tìm

ra rõ ràng từ tôi nghĩ John O'Reilly cũng vậy, tôi khá chắc chắn rằng tôi đã yêu cầu anh ấy

hét lên với John O'Reilly một lần nữa.


Ngoài ra, nó khá đơn giản ngoài việc google map SDK IOS. Tôi nhớ tôi đã nói với bạn rằng

hóa ra đó không phải là một ý tưởng tuyệt vời. Tôi có lẽ nên sử dụng một bộ bản đồ.

Tôi không thực sự. Tôi thậm chí không biết nó cũng có thể có vấn đề nhưng tôi đoán bộ bản

đồ sẽ tốt hơn. Sự lựa chọn tốt hơn là vì nó hơi trễ một chút giống như cái chân rất nhỏ, bạn

có thể thành thật sẽ không nhận thấy nó nếu bạn đang tự sử dụng ứng dụng nhưng tôi

nhận thấy nó vì tôi chỉ thực sự cố gắng xem điều này có hoạt động hay không.



Nó hơi trễ một chút nếu tôi cuộn xung quanh trong khi trên Android thì không có độ trễ nào

và để đảm bảo rằng nó không giống như cách google maps trên IOS. Tôi đã tải ứng

dụng google maps xuống iPhone của mình và nó không hề bị lag. Vì vậy, tôi không biết liệu

đó có phải là điều mà tôi đã làm hay nó có thể giống như bản đồ google không hoạt động tốt

với giao diện người dùng nhanh. Tôi thực sự không chắc nhưng mọi thứ tôi đang làm

dường như là chính xác. Tôi đã xem xét các mẫu, bạn biết tôi đang làm những điều tương

tự như chúng và bản đồ của tôi hơi trễ một chút nên tôi biết tôi không quá khó chịu về điều

đó nhưng tôi ước nó không bị lag rõ ràng.


6. Tôi đã mất bao lâu để xây dựng hai ứng dụng này?


Bây giờ hãy nói về việc tôi đã mất bao lâu để làm mọi thứ? Tôi đã mất bao lâu để học Swift

UI và hãy nhớ rằng tôi thậm chí còn chưa sở hữu một chiếc máy Mac. Tôi đã phải mua

một chiếc máy Mac nên tôi không biết gì về phát triển IOS, đúng nghĩa là không có gì về

phát triển IOS. Vì vậy, tôi đã mất bao lâu để học điều đó, tôi mất bao lâu để học Kmm, và sau

đó mất bao lâu để tôi thích xây dựng hai ứng dụng này và đưa cả hai vào sản xuất.

Tôi không cố khoe khoang Tôi cũng không cố gắng tôi không biết điều này nhanh hay chậm

nên tôi không cố khoe khoang Tôi không cố tỏ ra như tôi học chậm mà tôi chỉ đang cố

gắng cung cấp cho bạn một ý tưởng trong khoảng thời gian tôi mất bao lâu quan điểm của tôi

và để bạn biết bạn sẽ mất khoảng bao lâu nếu bạn muốn làm điều tương tự nếu bạn muốn

tìm hiểu về phát triển IOS tất cả.


Vì vậy, hãy xem ở đây vào lịch của tôi. Có vẻ như tôi đã có tổng cộng 26 ngày làm việc.

Vì vậy, một lần nữa hãy nhớ rằng tôi không biết gì về phát triển IOS. Tôi đã đặt hàng trực

tuyến máy Mac của mình vào ngày nó đến. Tôi đang xem xét ngày bắt đầu vào ngày nó đến.

Tôi đã dành khoảng hai tuần để học giao diện người dùng nhanh chóng. Tôi đã xem một

khóa học về hacking một cách nhanh chóng và tôi đã xem điều đó và cố gắng xây dựng một

vài thứ của riêng tôi trong hai tuần đó. Và sau đó tôi nhảy vào kmm vì vậy trong 26 ngày

làm việc đó, bạn có thể đã dành 10 ngày học nhanh chóng và sau đó phần còn lại của 16

ngày là tôi xây dựng lại ứng dụng khách Android của mình. Bởi vì trước đây tôi đã có ứng

dụng này trong quá trình sản xuất nhưng nó thậm chí còn không được xây dựng bằng

Jetpack, tôi đã xây dựng nó, tôi không biết cách đây sáu đến tám tháng hoặc điều gì đó

tương tự.


Và vì vậy tôi đã xây dựng lại toàn bộ bằng jetpack và tạo dáng bằng cách sử dụng một dự

án kmm để sql thích thú cho chuyến tham quan bộ nhớ đệm được chia sẻ k cho mạng chia

sẻ. Và sau đó tôi cũng xây dựng ứng dụng khách IOS. Vì vậy, trong vòng 26 ngày, tôi đang

học phát triển IOS, học kmm và đưa một cái gì đó vào sản xuất. Và tôi không dành 12 giờ

mỗi ngày hay bất cứ thứ gì tương tự. Nếu bạn lấy mức trung bình, có lẽ tôi đang dành sáu

giờ để viết mã một ngày vì tôi cũng đang làm những việc khác, bạn biết tôi có một công

việc kinh doanh trực tuyến để điều hành Tôi có một cộng đồng để quản lý Tôi mới có con mới

nhà nên tôi dành nhiều thời gian hơn ở nhà ngay cả khi tôi không phải làm việc hàng giờ

điên cuồng, tôi có thể sẽ mất trung bình sáu giờ mỗi ngày và một khoảng thời gian khá hợp

lý theo quan điểm của tôi để làm tất cả những điều đó, vì vậy bây giờ hy vọng bạn có ý

tưởng về việc bạn có thể mất bao lâu.


7. What could KMM do to be better?


Bây giờ hãy nói về những gì tôi nghĩ kmm có thể cải thiện để đưa nó lên cấp độ tiếp theo.

Vì vậy, theo quan điểm của tôi, điều mà tôi nghĩ sẽ đưa nó lên cấp độ tiếp theo là có thể

đưa các mô hình chế độ xem vào lớp kinh doanh đó. Và để làm được điều đó, theo ý kiến

của tôi, bạn sẽ cần một số loại cấu trúc dữ liệu có thể quan sát được có thể khiến

Jetpack Compose phải biên soạn lại nếu nó thay đổi và cũng khiến Swift UI mà bạn biết.

Tôi không biết nó được gọi là gì, nó không được gọi là sắp xếp lại nó. Tôi chỉ định nói là

xây dựng lại nhưng về cơ bản sẽ là một cái gì đó. Swift UI sẽ phản ứng với và

Jetpack Compose cũng sẽ phản ứng lại.



Vì hiện tại tôi thích các dự án của mình. Những gì tôi đang làm là thêm các đối tượng trạng

thái có thể thay đổi vào mô hình chế độ xem. Tôi quan sát những thứ đó trong các bản tổng

hợp và sau đó khi những thứ đó thay đổi rõ ràng là các bản tổng hợp được biên soạn lại và

cập nhật với Swift UI.


Bạn phải làm gì nếu tạo một đối tượng có thể quan sát, bạn thêm chú thích đã xuất bản

vào trường đã xuất bản cho các đối tượng có thể quan sát đó. Và sau đó khi những thứ đó

thay đổi giống như trạng thái có thể thay đổi trong Swift UI, nó sẽ được cập nhật. Vì vậy,

nếu có một cấu trúc dữ liệu mà bạn có thể sử dụng mà bạn có thể biết cả hai nguyên

nhân khiến Jetpack soạn thảo lại và cũng khiến Swift UI thích cập nhật UI của nó.


Điều đó sẽ thật tuyệt vời vì sau đó các mô hình xem của bạn cũng có thể được chia sẻ.

Và bạn biết đấy tại sao tôi không biết bạn nói rằng bạn đã có thể làm điều này nhưng có vẻ

như bạn đã có thể làm điều này.



Vì vậy, chúng ta hãy xem tweet để Daniel Barcelona ở đây đã trả lời tweet của tôi. Ông cho

biết kiến ​​trúc dkmp cung cấp một mô hình xem kmp được chia sẻ cho Jetpack Compose

và Swift UI bao gồm các phạm vi quy trình dựa trên màn hình. Vì vậy, đó là một cái khác mà

tôi muốn có, giống như một số loại chia sẻ. Tôi đoán là một thói quen vì đôi khi trong mô

hình xem hoặc đôi khi trong Jetpack Compose, bạn yêu cầu khởi chạy một quy trình đăng ký

để thực hiện một việc gì đó.


Vì vậy, có một bạn rõ ràng không thể chia sẻ một mô hình xem ngay bây giờ. Điều đó có

phạm vi quy trình bởi vì Swift UI không biết đó là cái gì và sau đó cái gì bị hủy hoặc khởi tạo

lại khi ứng dụng chuyển sang nền hoặc nền trước. Vì vậy, điều này trông thực sự tuyệt vời,

điều này trông siêu hứa hẹn một lần nữa. Tôi chưa nhìn vào điều này được nêu ra. Đúng

là sáng nay tôi đã thấy dòng tweet này. Vì vậy, đó sẽ giống như những gì tôi xem xét tiếp

theo bởi vì tôi nghĩ rằng bạn sẽ biết như tôi đã nói rằng điều đó sẽ tối đa hóa lượng mã mà

bạn muốn chia sẻ lượng mã sẽ có trong nguồn dữ liệu miền của lớp nghiệp vụ đó mô hình

xem trường hợp sử dụng nếu tất cả những thứ đó có thể được chia sẻ, đó có thể là tất

cả những gì bạn muốn chia sẻ. Đó giống như một kịch bản hoàn hảo trong đó bạn có thể

tận dụng lợi thế của việc chia sẻ mã có thể được chia sẻ và tận dụng các công cụ dành

riêng cho khung có sẵn trên Swift UI hoặc Android.


8. Flutter or KMM ?


Vì vậy, bây giờ những gì về những gì rung động kmm hoặc rung? Câu hỏi hoặc một

trong những câu hỏi mà mọi người đều muốn biết câu trả lời. Và tôi không muốn nói quá

nhiều về vấn đề này nhưng theo ý kiến cá nhân của tôi rằng tốt nhất là bạn nên bám sát

vào khuôn khổ nhất có thể. Vì vậy, hãy cứ như thể đó là thời gian khả thi nếu bạn đang xem

xét giống như khi bạn có lựa chọn xây dựng một ứng dụng rung hoặc một ứng dụng gốc và

bạn biết rằng ứng dụng gốc sẽ mất cùng một khoảng thời gian. Bạn đang xây dựng ứng

dụng gốc. Rõ ràng là vì bạn đang ở gần framework hơn, bạn biết rằng bất kỳ vấn đề nào

bạn gặp phải có thể sẽ dễ giải quyết hơn trên native framework.


Bây giờ tôi không muốn nói bất cứ điều gì xấu về sự rung động và thực sự tôi không có bất

cứ điều gì xấu để nói về sự rung động. Tôi nghĩ rằng rung là một công cụ tuyệt vời.

Nó thực hiện một công việc nó phục vụ một mục đích nhưng điều đó được cho là nếu tôi

được lựa chọn khá nhiều bất kể kích thước ứng dụng, bất kể dự án nào nếu lựa chọn của tôi

là nếu tôi giống như một trưởng nhóm công nghệ hoặc một người chịu trách nhiệm tập hợp

một nhóm lại với nhau và xây dựng một ứng dụng, tôi sẽ 100 đi theo con đường kmm, tôi

sẽ không xây dựng một ứng dụng lung tung. Nhưng nếu bạn muốn xem thêm về ý kiến của

tôi về sự rung động, tôi thực sự đã dành một tháng cho sự rung động chỉ thẳng mỗi ngày

tôi dành cho sự rung động.


Và sau đó tôi đã làm một video tóm tắt giống như video bạn đang xem ngay bây giờ.

Vì vậy, bạn có thể đi lên uh hy vọng tôi sẽ nhớ đặt một tấm thẻ. trong 30 hoặc 40 phút, nó

giống như tôi nói về tất cả các loại chủ đề nóng trên android so sánh sự rung động là gì và

chia nhỏ nó ra và thực sự như uh tôi thích sự rung động có đáng không blah blah blah blah

blah tất cả những thứ đó. Vì vậy, nếu bạn quan tâm, hãy kiểm tra điều đó sẽ cung cấp cho

bạn nhiều ngữ cảnh hơn.


9. KMM for large teams?


Tiếp theo, chúng ta sẽ nói về kmm cho các đội lớn. Vì vậy, tôi có nghĩ rằng kmm là một lựa

chọn thực tế nếu bạn là người biết về một nhóm gồm hàng trăm nhà phát triển chẳng hạn,

vì vậy chỉ cần rõ ràng như sự lựa chọn, sự phân biệt ở đây sẽ là ừm hoặc hai nhóm như

nhóm IOS và một nhóm Android và xây dựng giống như hai ứng dụng gốc riêng biệt hoặc

xây dựng một ứng dụng kmm.


Đó là sự lựa chọn mà tôi đang nói đến ở đây. Cái nào tốt hơn nếu bạn có một đội lớn. Vì vậy,

tôi nghĩ kmm thực sự sẽ khá khó khăn khi làm việc với một nhóm lớn và đây là lý do tại sao

hãy tưởng tượng bạn là một nhà phát triển IOS, bạn là một chuyên gia phát triển IOS.

Nếu bạn đang xây dựng một dự án kmm, bạn sẽ luôn phải chịu sự hỗ trợ của các nhà phát

triển Android hoặc các nhà phát triển kotlin. Và lý do cho điều đó là tất cả logic kinh doanh cốt

lõi sẽ được viết bằng kotlin, đặc biệt nếu bạn không biết kotlin bởi vì mỗi khi bạn muốn làm

điều gì đó sẽ liên quan đến sự thay đổi trong lớp nghiệp vụ đó có thể là rất nhiều thứ.


Bạn sẽ phải đi đến một số kotlin khác. Bạn phải chuyển sang phía kotlin hoặc phía Android

và giống như này các bạn thích bạn nghĩ gì về điều này tất nhiên bạn có thể tạo như một

yêu cầu kéo hoặc bất kỳ loại quản lý mã nào mà nhóm của bạn đang làm và làm

Về mặt kỹ thuật số, bạn không cần phải đi đến gần ai đó và giống như này, các bạn nghĩ gì

về điều này.


Nhưng tôi hy vọng bạn chỉ cần thấy những gì tôi đang nói ở đây. Bạn sẽ luôn ủng hộ

nhóm Android giống như luôn luôn có sự tương tác như vậy, chúng tôi muốn thực hiện thay

đổi hoặc chúng tôi muốn làm một việc mà chúng tôi phải đến và nói chuyện với nhóm

Android trước tiên bởi vì về cơ bản họ là những người có tất cả quyền lực vì họ là những

người có thể thay đổi mã và đảm bảo rằng mã hoạt động ở phía cột của phía Android hoặc

mã được chia sẻ.


Và thực sự thích phần tồi tệ nhất về điều đó là không phải có sự tương tác đó hoặc bất cứ

điều gì tương tự. Điều đó có lẽ thành thật mà nói, không phải là xấu. Bạn có thể chỉ cần nói

điều gì đó và họ đi và làm điều đó và bạn biết bất cứ điều gì. Nhưng đã đến lúc dường như

sẽ luôn như vậy, đặc biệt nếu bạn đến một công ty lớn. Giống như bạn có thời gian để đưa

ra điều bạn muốn làm, đưa nó cho nhóm và nói rằng đây là điều mà chúng tôi có thể làm sau

đó họ phải liên hệ lại với bạn và nói có hoặc không hoặc đây là những gì bạn cần làm hoặc l

àm thế nào để thay đổi nó.


Luôn luôn có như thế qua lại và tới lui. Vì vậy, bạn phải quay đi quay lại bao nhiêu lần cho

đến khi cuối cùng bạn nói được. Nhóm Kotlin sẽ làm điều này ngay bây giờ nhóm IOS đã

nhận được nó và họ có thể thực hiện thay đổi ở phía giao diện người dùng nhưng sau đó

cũng giống như những gì nếu nó không hoạt động ngay lập tức thì họ phải trải qua quá trình

đó một lần nữa. Ồ, chúng tôi đã làm điều này không thành công, chúng tôi cần nó phải

được thay đổi một chút qua lại, bạn hiểu ý tôi là có thể có một lượng lớn thời gian bị lãng

phí cho việc đó qua lại.


Vì vậy, tôi thực sự nghĩ rằng điều tốt nhất là thành phần nhóm có thể có cho một dự án kmm

sẽ giống như mọi người đều biết cả hai. Mọi người đều biết về phát triển IOS. Mọi người

đều biết Kotlin, mọi người đều biết sự phát triển của Android. Sau đó, bạn có một vài

người giống như một số rất nhỏ những người giống như siêu siêu chuyên gia về IOS.

Một số rất nhỏ những người siêu siêu siêu chuyên gia về Android nhưng phần lớn trong số

họ là Kotlin Android và IOS và có một chút kinh nghiệm trong tất cả chúng. Điều đó tôi nghĩ

sẽ đưa ra cách nhanh nhất và tốt nhất để đề xuất thay đổi, thực hiện thay đổi và tiến lên

phía trước.


10. Is KMM ready for production apps?


Tất cả các chàng trai và cô gái phù hợp bây giờ hãy nói về điều mà mọi người muốn biết câu

trả lời là kmm đã sẵn sàng để sản xuất. Bạn biết đấy, tôi đã suy nghĩ một chút khi lập kế

hoạch cho video này và suy nghĩ về câu hỏi này và khi bạn thực sự tự hỏi mình như thể nó

đã sẵn sàng để sản xuất chưa. Đó là một câu hỏi ngớ ngẩn bởi vì bạn biết tôi sẽ chỉ cung

cấp cho bạn một cảnh báo spoiler ở đây, ý kiến của tôi rõ ràng là có. Và đó là những gì tôi

nghĩ ngay lập tức, tôi rõ ràng là có nhưng thực sự khi bạn nghĩ về câu hỏi, nó hơi kỳ lạ

giống như những gì người thực sự hỏi khi họ nói là thư viện khung công cụ điều này đã

sẵn sàng để sản xuất những gì họ thực sự hỏi .


Tôi đã viết ra một vài điểm ở đây bởi vì tôi đã tự hỏi mình câu hỏi đó và tôi nghĩ điều đó thật

thú vị. Họ đang hỏi gì vậy?

Vì vậy, điều đầu tiên mà họ có thể có nghĩa là theo ý kiến của tôi. Tôi có thể tạo ứng dụng

với KMM không? Đó giống như câu hỏi rõ ràng nhất, có lẽ đó chỉ là nói thẳng những gì họ

đang hỏi và câu trả lời cho điều đó rõ ràng là có, vì vậy hãy kiểm tra câu hỏi đó.


Câu hỏi tiếp theo tôi có ở đây. Tôi có thể chuyển đổi ứng dụng IOS hoặc Android hiện tại

của mình sang một dự án kmm không? Một lần nữa kiểm tra có cho cái đó. Nó có làm ứng

dụng của tôi bị lỗi ngẫu nhiên trên một số thiết bị không? Đó sẽ là một câu hỏi hợp lệ.

Câu trả lời cho câu hỏi đó có thể là không có câu trả lời đơn giản cho điều đó nhưng ý tôi

là chúng tôi sẽ làm những điều tương tự như chúng tôi sẽ làm đối với ứng dụng Android IOS

để xác định xem nó có bị lỗi hay không, bạn sẽ chạy thử nghiệm thiết bị của mình. sẽ chạy

thử nghiệm đơn vị của bạn nếu những điều đó vượt qua thì bạn có thể tốt để đi. Vì vậy, nó

sẽ ngẫu nhiên gặp sự cố trên ứng dụng của tôi hoặc và một số thiết bị khác hay ứng dụng

của tôi ngẫu nhiên gặp sự cố trên một số thiết bị có thể chạy thử nghiệm của bạn, bạn có

thể ổn.


Câu hỏi tiếp theo mà tôi nghĩ ra là: Liệu nó có tất cả các chức năng cần thiết mà tôi cần để

xây dựng một ứng dụng giàu tính năng không? Vì vậy, một ứng dụng có rất nhiều tính

năng, chẳng hạn như ứng dụng youtube, chúng tôi có bạn biết rằng video thanh toán, hình

ảnh tài khoản rất nhiều thứ tải xuống nội dung, vì vậy câu hỏi này cũng có thể được diễn đạt

lại như có đủ thư viện hoặc công cụ để xây dựng một ứng dụng giàu tính năng với kmm.

Và một lần nữa tôi sẽ trả lời là có cho bạn biết rằng có những thư viện như Ktor để lưu vào

bộ nhớ đệm sq thỏa thích hoặc xin lỗi ktor vì sự chậm trễ sq mạng cho đồng xu bộ nhớ

đệm được chia sẻ cho phụ thuộc tiêm kotlin ban ngày để tuần tự hóa nội dung ngày.


Có tất cả các loại thư viện tuyệt vời có sẵn cho hầu hết mọi vấn đề mà bạn sẽ gặp phải vì

bạn biết kotlin cũng được sử dụng phía máy chủ nên có các thư viện kotlin cụ thể khác có

sẵn cho bạn. Vì vậy, một lần nữa câu trả lời cho điều này là có, tôi không hiểu tại sao bạn

không thể tạo một ứng dụng giàu tính năng với bất kỳ tính năng nào với kmm.


Vì vậy, nếu bạn có bất kỳ câu hỏi nào khác như vậy, họ có nghĩa là gì khi họ hỏi tại sao kmm

đã sẵn sàng để sản xuất, hãy đặt chúng xuống bên dưới và hỏi họ vì đây chỉ là những câu

hỏi mà tôi đã nghĩ ra. thú vị chỉ để nghĩ về mặc dù vì tôi đã nói rằng tôi chỉ tự hỏi bản thân

rằng tôi giống như kmm đã sẵn sàng để sản xuất. mọi người sẽ trả lời những câu hỏi đó.


Vì vậy, đó là những chàng trai và cô gái là người đi sâu của tôi vào thiết bị di động đa nền

tảng kotlin. Đó là kinh nghiệm của tôi với nó trong khoảng tháng gần đây nhất mà bạn biết và

tôi phải nói rằng đây là cách mà tôi sẽ xây dựng ứng dụng cho tương lai gần. Đây chắc chắn

là điều mà tôi sẽ theo đuổi ráo riết. Cho dù đó là xây dựng các khóa học của tôi, xây dựng

các ứng dụng cá nhân, xây dựng các ứng dụng của riêng tôi, đều sẽ được đưa lên cửa

hàng ứng dụng làm công việc tư vấn. Bất cứ điều gì tôi làm đều sẽ giới thiệu Kmm.

Kmm trông xuất sắc. Nó dường như đang tăng tốc. Có một số người rất tài năng đang

nghiên cứu nó tại phòng thí nghiệm cảm ứng jetbrains và tôi có lẽ không biết nhiều nơi khác.



Vì vậy, những gì tiếp theo cho tôi? Tôi sẽ xây dựng một khóa học. Tôi sẽ xây dựng một

khóa học kmm. Nó có thể sẽ là một khóa học trả phí trên trang web của tôi. Những gì chúng

tôi sẽ làm là chúng tôi sẽ xây dựng lại hoặc chúng tôi sẽ xây dựng lại từ đầu ứng dụng

Jetpack Compose hoặc cốt lõi của ứng dụng mà tôi đã xây dựng trong khóa học

Jetpack Compose, ứng dụng công thức truy cập mạng dữ liệu từ API mà tôi đã xây

dựng foodfork.ca.


Chúng tôi sẽ xây dựng điều đó thành một dự án kmm. Lý do tôi không xây dựng một dự

án hoàn toàn mới như một ý tưởng mới. Lý do tôi đang xây dựng lại một dự án hiện tại là vì

sau đó bạn có thể thấy rõ sự so sánh và tương phản giống như việc xây dựng một dự án

kmm so với một dự án Android trực tiếp, nó sẽ gần như giống hệt nhau và sau đó nó sẽ dễ

dàng tích hợp như thế nào uh bạn biết ios hoặc Swift UI vào dự án km đó và xây dựng nó.


Vì vậy, đó là những gì chúng tôi sẽ làm. Tôi nghĩ nó sẽ cung cấp cho bạn một cái nhìn tuyệt

vời về một ứng dụng kmm đơn giản hoặc khá đơn giản sẽ trông như thế nào.



Và tất nhiên nếu bạn muốn được thông báo khi khóa học này sẵn sàng hoặc bạn muốn

cập nhật theo dõi tôi trên youtube, hãy truy cập kênh youtube của tôi mã hóa bằng Mitch

hoặc cách dễ nhất và tốt nhất có lẽ là. Bạn biết đấy, hãy theo dõi tôi trên twitter, đó chắc chắn

là một điều tốt. Hãy để tôi truy cập hồ sơ twitter của tôi và chuyển đổi tapian gạch dưới khá

đơn giản. Các liên kết sẽ được đưa xuống bên dưới và cũng có thể trở thành đăng ký trên

trang web của tôi, hoàn toàn miễn phí nếu bạn muốn đăng ký tài khoản chỉ cần truy

cập codingwithmitch.com vào trang đăng nhập nhấp vào đăng ký, điền thông tin này vào

vài trường khá đơn giản tại đây và sau đó bạn sẽ nhận được email vì vậy hãy nhấp vào đăng

ký nhận bản tin.



Tôi hầu như không gửi email bằng cách những người mà tôi đã không gửi email trong vòng

một tháng rưỡi. Tôi sẽ không gửi thư rác cho bạn. Họ rất chọn lọc về những email mà tôi gửi

về cơ bản chỉ khi tôi tạo một khóa học hoàn toàn mới hoặc một thứ gì đó thú vị hoặc tôi

đang làm quà tặng. Tôi đã cho đi một điểm ảnh mà tôi không biết. Tôi đã cho đi một bức

ảnh của một trong những pixel xls hoặc thứ gì đó tương tự mà tôi đã cho đi như cách đây

sáu tháng.


Tham gia bản tin và nhận email. Tôi sẽ cho bạn biết khi khóa học sẵn sàng, bạn sẽ không hối tiếc. Bạn sẽ cảm ơn tôi thực sự đó chắc chắn là những gì bạn sẽ làm. Bạn sẽ nói cảm ơn Mitch, cảm ơn bạn đã cho tôi biết đăng ký nhận bản tin của bạn vì bây giờ tôi có thể xây dựng một dự án kmm.


Được rồi, đó là tất cả những gì tôi có được hôm nay mọi người đừng quên nhấn thích đăng

ký nhận xét tất cả hãy đảm bảo làm điều đó cho thuật toán vì nếu không video của tôi không được đề xuất cho người khác nên tôi nghĩ đó là một lượt thích tuyệt vời biến thành một blue thumbs up để lại nhận xét nó thậm chí không cần phải nói về những gì tôi đã nói chỉ cần nói hey nói này anh bạn video tốt này anh bạn tốt khóa học này anh bạn có một mái tóc ngu ngốc, bất cứ điều gì không quan trọng để lại nhận xét cảm ơn vì đã xem và tôi sẽ gặp lại các bạn trong phần tiếp theo.

Nhận xét

Bài đăng phổ biến từ blog này

Jetpack Compose VS SwiftUI !VS Flutter

  Việc phát triển Android đã trở nên dễ dàng hơn khi các bản cập nhật liên tục đến. Sau bản cập nhật 2020.3.1, rất nhiều thứ đã thay đổi. Nhưng thay đổi chính mà tôi nghĩ hầu hết các nhà phát triển phải chờ đợi là Jetpack Compose cho ứng dụng sản xuất. Và Kotlin là lựa chọn duy nhất cho jetpack Compose, cũng là ngôn ngữ được ưu tiên. Để biết thêm chi tiết hoặc các thay đổi trên Jetpack Compose, bạn có thể truy cập vào https://developer.android.com/jetpack/compose Tương tự, IOS Development cũng cung cấp một tùy chọn để phát triển khai báo, SwiftUI. Trong IDE, không có thay đổi nào do điều này. Nhưng khái niệm gần giống với Jetpack Compose. Thay vì bảng phân cảnh, chúng tôi tạo giao diện người dùng bằng Swift. Để biết thêm chi tiết hoặc các thay đổi trên SwiftUI, hãy truy cập https://developer.apple.com/xcode/swiftui/ Hãy xem cách cả hai hoạt động bằng cách sử dụng một dự án demo. Tôi đã lấy một số ví dụ về số lần chạm tương tự của Flutter. 1. Android Jetpack Compose Chúng tôi có thể tạo

Thiết kế giao diện với DotNetBar (Phần 1)

Đây là phiên bản DotNetBar hỗ trợ C# và Visual Basic https://www.dropbox.com/s/wx80jpvgnlrmtux/DotNetBar.rar  , phiên bản này hỗ trợ giao diện Metro cực kỳ “dễ thương” Các bạn load về và cài đặt, khi cài đặt xong sẽ có source code mẫu của tất cả các control. Để sử dụng được các control của DotNetBar các bạn nhớ add item vào controls box. Thiết kế giao diện với DotNetBar, giao diện sẽ rất đẹp. Link các video hướng dẫn chi tiết cách sử dụng và coding: http://www.devcomponents.com/dotnetbar/movies.aspx Hiện tại DotNetBar có rất nhiều công cụ cực mạnh, trong đó có 3 công cụ dưới đây: DotNetBar for Windows Forms Requires with Visual Studio 2003, 2005, 2008, 2010 or 2012.   DotNetBar for WPF Requires with Visual Studio 2010 or 2012 and Windows Presentation Foundation.   DotNetBar for Silverlight Requires with Visual Studio 2010 or 2012 and Silverlight. Dưới đây là một số hình ảnh về các control trong DotnetBar.   Metro User Interface  controls with Metro Tiles, toolbars, slide panels, forms,

Một số bài tập Winform C#

Một số bài tập: 1. Mô phỏng game đoán số. Luật chơi:         o Đúng số và đúng vị trí   +         o Đúng số mà sai vị trí      ?         o Sai số và sai vị trí          -         . . .         - Kết quả được tạo ngẫu nhiên từ các số có 4 chữ số.         - Các chữ số có giá trị từ 0-6.         - Người chơi có 6 lần đoán. Chương trình tham khảo: 2. In số điện tử Yêu cầu: người dùng nhập vào 1 số ( hoặc 1 chuỗi số) yêu cầu in ra số đó dưới dạng số điện tử. Chương trình tham khảo: 3. Mô phỏng game CARO  (update) 4. Mô phỏng game DÒ MÌN (update)