從eclipse到Android studio/遷移eclipse的Android項目到Android studio平台的注意事項


整體要注意的地方

先說明一下整體需要注意的地方

1在Android studio建立項目的時候,要注意包名和原來的完全一致,不然會有很多需要改動.

2依賴的jar一定一定要找齊,不然新建項目引用不到,要么重新找包,嚴重的話,那部分代碼要重寫,影響很惡劣...

3Android studio的編譯器有點蠢.引用了多余的包編譯會通過,但是debug會報錯.此事要重點排查android.support:appcompat-v7和com.android.support:support-v4包.這2個包很有可能是多余的,lib那里記得刪了.

 

然后,我建議的遷移順序是

資源的引用(res)

values下string,id,等XML

res下其他目錄的XML.

  對於圖片文件,文件夾名從drawable-XX改為mipmap-XX

  除了目錄變更之外.
  引用資源的方式也有所改變.
//以前的寫法
<item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item>
//現在的寫法
<item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>

  不照做的話預覽視圖那里就會提示

Couldn't resolve resource @drawable/actionsheet_bottom_pressed  Failed to convert @drawable/actionsheet_bottom_pressed into a drawable  <item> tag requires a 'drawable' attribute or child tag defining a drawable

  另外.奇葩文件的命名要改

  比如我之前發現有這樣的圖片actionsheet_bottom_pressed.9.png.在Android studio引用@mipmap/actionsheet_bottom_pressed"的話引用不到...

  為了圖快速解決問題我就只能改文件名,然后批量替換(replace )了.

 

color也是

@color/white  → @android:color/white

代碼的遷移

文件的編碼

萬惡的傻逼eclipse用的ansi(window-1252)編碼.要改成無bom 的UTF-8(我用notepad++轉的,命令行批量處理,我不會...).不然Android studio無法識別其中的中文,我再說幾遍,無bom 的UTF-8,無bom 的UTF-8,無bom 的UTF-8,無bom 的UTF-8......

強調無bom是因為不照做會有這個錯誤

非法字符: '\ufeff'

  

Android studio是基於文件目錄的管理.在外部打開對文件CRUD,過一段時間之后,IDE那邊會自動同步

java代碼中資源的引用

drawable→_→mipmap

 

2015-11-20更新:

依賴項的遷移

關於依賴項的引入,第三個參考鏈接里面就寫的相當好,但是不全面.要結合他的例子去看.這里我除了復述他的觀點,我會再補充一些更具體的內容.

 jar的遷移

jar比較簡單.

以最新版的Android studio(1.5)為例.把eclipse里libs里的jar包拖到Android studio模塊里面的libs文件夾.待Android studio同步過來后,全選這些*,jar.然后點擊add as library.

正常情況下.在該模塊的build.gradle文件中,dependencies下面會有剛剛添加過的包的編譯文件指令.

比如

 compile files('libs/baidumapapi_v3_5_0.jar')
    compile files('libs/com.umeng.fb.5.4.0.jar')
    compile files('libs/gson-2.3.1.jar')
    compile files('libs/locSDK_5.2.jar')
    compile files('libs/nineoldandroids-2.2.0.jar')
    compile files('libs/umeng-analytics-v5.5.3.jar')

 代碼引用的包沒有出錯,即說明引入成功. 

 

二進制文件(so)的遷移

我也是拖入libs里面.然后在模塊的build.gradle中android里面插入

 sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

 

project/modules的遷移

原本在eclipse中,可以直接新建一個Android工程,然后別的項目以library的方式引用它.但到了Android studio,這種工程換了一種更精確的說法,叫module/模塊.

於是原本在eclipse中A項目引用B項目的場景,在Android studio中會被描述為A模塊依賴B模塊.

我再描述一下整個過程

 

處理被依賴項目B

項目B的build.gradle里面,要改3個地方

1.apply plugin: 'com.android.application'改為apply plugin: 'com.android.library'

代表B是一個類庫

2.去掉applicationId

直接注釋(//  applicationId "com.XXXXXX")即可

否則會出現這個錯誤

Error:Library projects cannot set applicationId. applicationId is set to 'com.XXXXXX' in default config.

3.(可選項)排除一些文件

 packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/ASL2.0'
    }

 

import moudule

在我的場景中為A項目里面import B module.

(見第四個鏈接,這里直接復制他寫的過程)

    1. Goto File -> New -> Import Module.
    2. Android Studio Add Library
    3. Source Directory -> Browse the project path.
    4. Specify the Module Name – it is used for internal project reference.
    5. Android Studio Add Library - 2
    6. Let Android Studio build the project.
    7. Open build.gradle (Module:app) file.
    8. Add the following line with your module name in place of “Volley” in the dependencies block:
    9. It should look something like this:
    10. Android Studio Add Library 3

 

 這個過程完成之后,

1.在A module里的build.gradle里面會多出 compile project('moduleB')

2.setting.gradle里面會自動include模塊B

3.項目里面多出一個我們新建的模塊的目錄,把導入的模塊的內容都導入過來

 

處理沖突的節點

由於A和B項目里面都有AndroidManifest.xml文件.
並且在application里面的android:name節點內容不一致,導致合並的時候產生了沖突,這個時候.我們需要對A項目里的節點進行沖突處理.它同步的時候有個提示的.
<application
        android:name="com.xxxx"        tools:replace="android:name"
        >

在A項目的AndroidManifest.xml文件里面對節點進行替換即可.也就是上面的tools:place=''android:name'.

關於遷移,可以參照官方的指導(第8個鏈接)


 
        

 

 

 
        

 

體會:暫時遇到這些問題,我想,既然遷移這么蛋疼,那么這破事我以后能不做就不做,必須做,就等我整理強迫症發作后再做好了.......

 

 

 

參考鏈接:

  1. Android Studio drawable下的XML文件如何調用mipmap圖片資源?
  2. Android studio R文件找不到
  3. Android Studio Jar、so、library項目依賴
  4. Android Studio | How To Add A Library Project?
  5. How to import android project as library and NOT compile it as apk (Android studio 1.0)
  6. Error:Library projects cannot set applicationId. applicationId is set to 'com.gdtel.eshore.anroidframework' in default config.
  7. Android studio Gradle icon error, Manifest Merger
  8. Manifest Merger

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM