將eclipse中的Android項目導入到Android Studio

摘要:最先嚐試的方法是從eclipse導出項目時選擇Generate Gradle build files,然後在Android Studio導入,需要更新gradle的版本,保留了原始的目錄結構,後來在更新gradle時遇到了很多問題,也記不清了,後來使用的是直接將項目導入到Android Studio,由Android Studio來重新構造目錄結構.1

導入

Import

  • 選擇工程在的路徑,然後finish,等待Android Studio構造項目
    導入工程

簡單介紹一下import summary

在導入工程後,會在第一時間出現import summary

Ignored Files(最重要的部分)


Android Studio會在這一步忽略掉不屬於Android標準目錄的文件,比如用戶自定義文件夾,混淆文件,所以必須要檢查一下是否有重要文件在這一步被Android Studio忽略掉

Replaced Jars with Dependencies


在Android Studio中你可以添加在線的jar或者庫,所以常見的android-support-v4.jar兼容包都會轉化com.android.support:support-v4:19.1.0,當然由於兼容包多樣化,在這一步轉換可能會遇到一些問題,以後會提到

Moved Files


  • 將so文件移動到app/src/main/jniLibs目錄下,Android Studio默認會識別這個目錄
  • 將lib目錄下的jar移動到app/libs/下
  • 將項目中引用的其他資源例如html都移動到app/src/main/resources/

Next Steps和Bugs略過

常見問題

9-patch

在Android Studio對9-patch的檢查非常嚴格,不允許存在bad patches,也不允許不是9-patch的圖片命名爲9.png


錯誤日誌

9-patch image /Users/liuende/Documents/test/app/src/main/res/drawable-mdpi/btn_style_zero_presse.9.png malformed.
AAPT:        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT:        Found at pixel #6 along top edge.

解決方案

  • 關閉Android Studio對png圖片合法性的檢查,在app/build.gradle中的android後的大括號中添加下述代碼,然後sync now,rebuild
    aaptOptions{
        cruncherEnabled=false
        useNewCruncher=false
    }
  • 如果仍然存在報錯,對報錯的圖片重命名,例如test.9.png重命名爲test.png

文件含有BOM

錯誤日誌

Error:(1, 1) 錯誤: 非法字符: '\ufeff'

錯誤原因

類似WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符,即BOM,但是在很多代碼中不會忽略,導致錯誤

簡單介紹一下BOM

注:Java在讀取Unicode文件的時候,會統一把BOM變成“\uFEFF”.2

  BOM —— Byte Order Mark,中文名譯作“字節順序標記”。
  UTF-8 不需要 BOM 來表明字節順序,但可以用 BOM 來表明編碼方式,其中字符 “Zero Width No-Break Space” 的 UTF-8 編碼是 EF BB BF。所以如果接收者收到以 EF BB BF 開頭的字節流,就知道這是 UTF-8編碼了。
  對於UTF-16或者更高,字符U+FEFF如果出現在字節流的開頭,則用來標識該字節流的字節序,是高位在前還是低位在前。

解決方案

* Eclipse可以自動把UTF-8+BOM文件轉爲普通的UTF-8文件,但AndroidStudio需要手動修改*

方法一

利用Android Studio將文件編碼改爲GBK,再轉爲UTF-8即可以解決,操作位置在Android Studio右下角

  • 選擇編碼
  • 點擊convert
    這裏寫圖片描述
  • 再重複執行1和2,轉化爲UTF-8

方法二

利用Android Studio自帶的終端打開問題文件,然後使用vim打開文件,在命令模式下set nobomb

文件編碼不正確

錯誤日誌

Error:(6, 4) 錯誤: 編碼UTF-8的不可映射字符

錯誤原因

文件原先是使用GBK或者其他非UTF-8的編碼格式,在導入Android Studio時以UTF-8編碼格式加載所以產生亂碼

解決方案

先將文件以GBK的格式加載,再轉化爲utf-8

  • 選擇文件原先的編碼

  • 點擊Reload
    這裏寫圖片描述

  • 在通過第一步選擇utf-8,點擊convert,轉化文件編碼格式爲utf-8

包引用出現問題

jre中的rt.jar沒有被引用到項目中國

錯誤日誌

Error:(44, 28) 錯誤: 程序包javax.imageio.stream不存在

錯誤說明

目錄jre下的jar包並不會默認引用到項目中

解決方法

注:compile 意味着你需要編譯和運行應用程序的JAR。對於一個web應用程序,例如,JAR將被放置在web - inf / lib目錄中。provided意味着你需要爲編譯JAR提供,但在運行時環境已經提供,對於一個web應用程序,這意味着JAR文件將不會被放置到web - inf / lib目錄中

  • 在app/gradle.build下dependencies中添加下述配置
 provided files('/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/rt.jar')

打包apk時報錯

錯誤日誌

注:Android Lint是SDK Tools 16 (ADT 16)之後才引入的工具,通過它對Android工程源代碼進行掃描和檢查,可發現潛在的問題,以便程序員及早修正這個問題

Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

錯誤說明

Android Studio在打包成release版時,默認會對代碼進行掃描和檢查,發現潛在的代碼,而由於eclipse和Android Studio的代碼檢查不同,導致很多在eclipse警告的代碼,在打包時直接報錯

解決方案

  • 在app/gradle.build中添加下述配置
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }

build時內存不夠

永久解決辦法

  • 新建文件~/.gradle/gradle.properties
org.gradle.jvmargs=-Xmx1536M
org.gradle.daemon=true
org.gradle.parallel=true                    
發佈了59 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章