黑科技:使用AI和機器學習將Android專案秒變IOS專案

AWeiLoveAndroid發表於2019-11-12

黑科技:使用AI和機器學習將Android專案秒變IOS專案

最近看Github,發現了一個剛出爐的黑科技:利用人工智慧(AI)和機器學習(ML)技術將現有Android原始碼轉換成iOS程式碼。目前支援Android專案中的資產目錄檔案和UI佈局轉換,以及部分外部庫的轉換。有了這個神器,以後一個人就可以輕鬆搞定兩個平臺了,真是爽歪歪啊。。。。我根本不需要學習iOS了。。。


已支援的功能:

  1. Android的資產目錄 (如:jpgpng.9圖等) => "Assets.xcassets"
  2. mipmap目錄的圖片資源 => “.appiconset
  3. Color形式的xml => “.colorset
  4. Shape形式的xml => asset皮膚中的PDF
  5. Vector形式的xml檔案 => Swift程式碼 (CAShapeLayer)
  6. Animation形式的xml檔案
  7. UI佈局的xml檔案 => StoryBoard檔案
  8. Java的POJO類 => Swift
  9. 外部的庫Glide的轉換

正在開發中的功能:

  1. 資源(Resource)xml檔案
  2. Android SDK的類
  3. 更多的外部的庫,比如:GSON, Retrofit2, ButterKnife等。
  4. 向量圖動畫(Vector Animation)xml資源

未來支援的功能:

  1. Android的Kotlin語言
  2. Android的JetPack
  3. Android的程式碼編寫的佈局 轉成 SwiftUI
  4. Lagacy .storyboard 轉成 SwiftUI
  5. 測試用例的生成

UI的轉換

目前支援CardView,Switch,ImageButton,ToggleButton這些控制元件型別的轉換。

部分效果圖如下:

CardView的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

開關,ImageButton,ToggleButton的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Button的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

TextView的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

使用普通鍵盤的EditText的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

帶電話撥號鍵盤的EditText的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

佈局的轉換

目前支援RelativeLayout,FrameLayout,LinearLayout (Nested),ConstraintLayout,TableLayout和ScrollView這些佈局型別的轉換。另外只有部分佈局屬性做了轉換,如下表所示:

Control Attributes
LinearLayout orientation, gravity, background, textAppearance
RelativeLayout layout_centerHorizontal, layout_centerVertical, layout_toLeftOf, layout_toRightOf, layout_above, layout_below, layout_alignParentTop, layout_alignParentBottom, layout_alignParentRight, layout_alignParentLeft
FrameLayout layout_marginTop, layout_gravity = right, left, right+bottom, left+bottom, center, center_horizontal, center_vertical, right+center_vertical, bottom+center_horizontal
ConstraintLayout Bottom_toBottomOf, Top_toTopOf, Top_toBottomOf, Left_toLeftOf, Start_toEndOf, Right_toRightOf, Baseline_toBaselineOf, Vertical_bias, Horizontal_bias
TableLayout TableLayout, TableRow, background, padding
ScrollView ScrollView, android.support.v4.widget.NestedScrollView, HorizontalScrollView, android:scrollbars

LinearLayout的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

RelativeLayout的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

FrameLayout的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

ConstraintLayout的螢幕截圖(這個也做了移植,確實經驚豔到我了):

黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

TableLayout的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

ScrollView的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

資產目錄檔案的轉換

這一部分內容比較多,簡單的說就是把Android工程的res目錄的檔案轉換成iOS工程的Assets.xcassets目錄的檔案。

  • mipmap目錄的圖片資源:Android工程的mdpi,hdpi,xhdpi和xxhdpi的影像資源被對映到iOS工程的1x,2x和3x影像資源路徑裡面。

  • 針對.9.png圖片檔案:在catalog中為asset新增了切片(slicing )資訊。

  • Vector圖片形式的xml被轉換成Storyboard上能夠使用的.pdf檔案。

  • 向量影像xml也被轉換成Swift程式碼,並在VectorStore.swift中為每個vector檔案新增一個靜態方法。

除此之外還支援.png,color形式的xml,Shape形式的xml,Animation形式的xml的轉換。


以下是使用截圖:

Android和iOS裝置的顯示了各種資產的使用情況的螢幕截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案


Android Studio佈局編輯器:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Xcode Storyboard編輯器:

黑科技:使用AI和機器學習將Android專案秒變IOS專案


Android Studio Asset資源圖片:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Xcode Asset 皮膚:

黑科技:使用AI和機器學習將Android專案秒變IOS專案


Android Studio .9.PNG 圖片資源編輯器:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Xcode Asset面帶有從.9.png檔案中提取的切片資訊:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Vector向量圖的轉換截圖對比:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

Shape xml檔案的對比:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

動畫轉換的對比:

Android iOS
黑科技:使用AI和機器學習將Android專案秒變IOS專案
黑科技:使用AI和機器學習將Android專案秒變IOS專案

事實上效果是同步的,只是錄屏和操作步驟不一致的原因,看起來有些延遲。

外部庫Glide的轉換

支援的功能:

  • 從本地res資料夾載入drawable
  • 從URL載入圖片
  • 將圖片載入到UIImageView
  • 在下載過程中提供佔位符圖片
  • 在圖片之間應用過渡:CrossFade,Flip
  • 支援圖片Transformation (變換)API:circleCrop(),centerCrop(),fitCenter(),centerInside()
  • 清除待處理的請求
  • RequestOptions類可在例項之間重用設定

待支援的API:

  • priority()
  • diskCacheStrategy()
  • asBitmap()
  • error()
  • fallback()
  • clearMemory()

使用截圖:

黑科技:使用AI和機器學習將Android專案秒變IOS專案

計算器App

這是一個移植的計算器專案。

使用截圖如下,還是挺酷選的呢,效果保持一致,操作也很流暢:

黑科技:使用AI和機器學習將Android專案秒變IOS專案


最後附上官網地址,有興趣的可以去看看。

官網地址:www.reflectcode.com/

Github: github.com/ReflectCode…


關於作者:公眾號“Flutter那些事”,獨家放送最新Flutter、Dart和Fuchsia等技術動態,以及眾多原創,有技術深度的技術乾貨文章,還有Flutter實戰乾貨文章,等你來看,喜歡Flutter和跨平臺開發以及原生移動端開發的朋友們,趕緊來看看,歡迎大家關注。

相關文章