1. 程式人生 > >再談如何將android studio專案轉換成eclipse

再談如何將android studio專案轉換成eclipse

更新:雖然本人堅守eclipse很久,但是現在我也不再推薦繼續用eclispe了,自己的專案用還沒什麼問題,但是你如果想用github上的專案,用eclispe會越來越難。如果你仍然感興趣,繼續看下面的內容也沒關係。

首先,不要因為編譯原因而放棄。studio專案是完全可以轉換成eclipse的

本站的開原始碼板塊有很多專案都是android studio開發的,很多同學以為必須要先學會studio,才能編譯這些原始碼,於是花了很長時間學studio,結果發現還是不會。其實任何studio專案都是可以轉換成eclipse的,eclipse目前的編譯能力比studio只會多不會少。只要你熟練了,一箇中等複雜的studio專案轉成eclipse也只是分分鐘的事情。 在這裡我要強調的是開原始碼板塊的studio專案95%以上都是我親自編譯成功並且運行了的,而剩下我沒有驗證的極少部分往往是因為該專案在github上已經得到非常多的star,而編譯起來又異常複雜,但這是極少數的情況。

轉換方法

下面來談談studio到eclipse的轉換問題。在studio專案轉換成eclipse專案的過程中,對於studio的知識點只需記住條:studio專案中src/main目錄下才是真正的專案程式碼,main下java目錄裡面的程式碼對應的是eclispe專案中的src目錄中的程式碼。至於其他什麼亂七八糟的Gradle 程式碼,完全不要去理會。

比如在twoway-view 專案中在使用方法裡面就有如下程式碼

1 2 3 4 5 6 7 repositories { } dependencies { compile 'org.lucasr.twowayview:core:
[email protected]
'
compile 'org.lucasr.twowayview:layouts:[email protected]'}

看不懂?沒關係,我也看不懂。你只要看懂上面紅色文字部分的意思就行了。

但是那篇文章沒有結合具體的例子來說明,因此對於新手來講,還是很難開頭。其實除了專案的結構之外,專案的依賴關係其實也是一個難點:對於一個studio專案我們如何知道他依賴了哪些東西呢?

一個比較典型的例項

一般來講一個專案如果沒有什麼新系統的特徵,直接轉換成eclipse的目錄結構然後eclipse import進去就ok了,但是現在很多專案往往使用了Material Design中的一些東西,比如ToolBar,RecyclerView以及appcompat的主題等,這種依賴關係就比較複雜。

更改專案結構

首先下載然後解壓:

QQ圖片20150110173851.png

這麼複雜!嚇到了是吧,沒關係很多檔案和目錄我可以直接刪掉,從檔案的名稱來看example下面應該是demo程式碼,library下面是庫程式碼。其他的直接刪掉,當然為了保險起見,你還是點選去看下如果裡面有src目錄基本上就可以確認這是跟專案程式碼相關的了。刪掉其他檔案和目錄之後我們就只剩下:

QQ圖片20150110174358.png

心情頓時就好了。

我們先來解決library目錄中的問題。開啟library

QQ圖片20150110174530.png

回想上面說的studio專案中src/main目錄下才是真正的專案程式碼。因此我們將src/main中的檔案全部copy出來,其他的都可以直接刪掉了,至於copy出來放在哪裡那是你的事,一般我自己的做法是直接放在library目錄下,然後刪除掉copy檔案之外的所有東西。如果你按照我描述的做,那麼到這一步library下面應該是這樣的:

QQ圖片20150110175203.png

再回想上面說的main下java目錄裡面的程式碼對應的是eclispe專案中的src目錄中的程式碼。因此我們將java目錄改名src目錄:

QQ圖片20150110175559.png

這不就是熟悉的eclipse專案麼,其實非常簡單,本來我是不想寫那麼多的,但是有些人就是不會。至此library目錄中的專案結構我們就改造完成了。

按照完全一致的方法我們去改造example目錄。

匯入eclipse

將修正過的專案(此處為SuperSLiM-master目錄)下的所有內容匯入到eclipse中:

QQ圖片20150110180018.jpg

匯入之後生成了library和MainActivity兩個project:

QQ圖片20150110235355.jpg

library是庫,而MainActivity中是demo,通常我喜歡將他們的專案名稱改成github上的名稱,這裡我分別更改為:SuperSLiMLibrary和SuperSLiMDemo

解決錯誤

從上圖中可以看到匯入的兩個project有錯誤,其實這些錯誤基本上是依賴關係導致的。因為SuperSLiMDemo是依賴於SuperSLiMLibrary的,所以我們先從SuperSLiMLibrary中的錯誤入手。

在這個時候我並不知道這些錯誤具體產生的原因,所以我需要檢視具體的錯誤檔案,開啟專案的包,發現以下java檔案有紅叉:

QQ圖片20150111000222.png

隨便選擇一個檔案進去看看,這裡我就選擇第一個好了找到了第一個錯誤:

QQ圖片20150111000437.png

LayoutState的recyclerState方法找不到,LayoutState不就是上圖中的第三個檔案麼,進去很多錯誤,隨便截個圖

QQ圖片20150111000638.png

顯然是需要匯入RecyclerView包了。期望匯入RecyclerView之後就不會有任何問題了。

匯入後發現大部分錯誤不見了,只有LayoutState還有錯誤,原來是因為LayoutState中有這樣的程式碼

1 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

這要求編譯環境是5.0才行。將sdk換成5.0的,ok了,SuperSLiMLibrary已經沒有任何錯誤了。

看到這裡你可能會想,是不是麻煩了點,確實,事實上我並不是上面的每一步都按部就班,我一般先在每個錯誤檔案中掃描以便錯誤的地方,很快就可以定位到RecyclerView,然後新增依賴,甚至我都不想去掃描錯誤直接新增RecyclerView的依賴,因為github中已經說了這個專案是RecyclerView實現的。

SuperSLiMLibrary到這裡還有最後一步,將它設定成library,不然SuperSLiMDemo在新增lib的時候是找不到他的。

QQ圖片20150111001359.png


再來看看SuperSLiMDemo中的錯誤。

在這之前我首先將剛剛的SuperSLiMLibrary新增到依賴中。然後還是有這些錯誤:

QQ圖片20150111001956.png

style中的錯誤是因為沒有依賴appcompat,於是先添加了再說,一定要新增最新版本的appcompat(相容5.0的appcompat),為什麼呢,因為在主題程式碼中有下面這些屬性:

1 2 3 4 5 6 7 <style name="AppTheme.Base" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> </style>

當你看到colorPrimary屬性的時候肯定需要在appcompat中編譯的。

同時因為SuperSLiMLibrary都是在5.0上編譯的,因此SuperSLiMDemo我也同樣在5.0上編譯。

然後你會發現我都沒去看src中的java程式碼,就完全沒有錯誤了。

至此SuperSLiM這個專案就完全轉換成eclipse版本的專案了。

SuperSLiM不是最好轉換的專案,也不是最難轉換的專案,這篇文章只是告訴你,studio轉eclipse是可行的,遇到問題該怎麼解決。文中所描述的步驟完全沒必要一一照搬,因為根本就沒有什麼固定的步驟。

另外我看到有網友對使用了appcompat的專案比較排斥,看到使用了appcompat就不研究了,這是完全錯誤的思想,現在絕大多數開源專案都用了appcompat,而且因為5.0的出現appcompat還將被越來越多的專案使用,你可以看到在android官方文件上面,5.0的很多新特性更多的是介紹如何用appcompat去實現,而不是標準的sdk中的類。


相關推薦

如何android studio專案轉換eclipse

更新:雖然本人堅守eclipse很久,但是現在我也不再推薦繼續用eclispe了,自己的專案用還沒什麼問題,但是你如果想用github上的專案,用eclispe會越來越難。如果你仍然感興趣,繼續看下面的內容也沒關係。 首先,不要因為編譯原因而放棄。studi

myclipse專案轉換eclipse專案詳細步驟如下

第一步:先匯入myclipse專案,會報一系列錯 第二部:點選專案,然後按住鍵盤alt+/,會發現有個project faces ,然後點選convert form,,然後選擇dynamic web module(注意選2.5版本的,選擇3.0,tomcat6.0部署不上去),選擇java環

如何把Android Studio項目轉換Eclipse的項目

ani bsp 問題 再看 文件夾 version targe ins app 1. 找到這個目錄:項目名稱\app\src\main,並把它導入到Eclipse裏 2. 把項目名稱\app\libs文件夾拷貝到新生成的項目下,並刪除掉.DS_Store文件 3. 這時

Android 本地資源圖片轉換Drawable,進行設定大小

前言: 因為專案中顯示圖片是用Picasso,設定placeholder和error圖片的時候發現,本地圖片的大小無法滿足我的需求,需要先對圖片大小改變再顯示。 Picasso的placeholder和error的引數也只有int resId和Drawable drawable 於是打算將改

eclipsejava專案轉換maven專案

       前幾天做了一個事情,就是將一個普通的java web的工程轉換成maven專案,現在分享一下做法,以及一些過程中我遇到的一些問題和注意點。 注意點:轉成maven專案的有幾點需要注意的。 (1)找不到convert to maven pr

Android字串型日期轉換日期

將字串型日期轉換成日期 /** * 將字串型日期轉換成日期 * * @param dateStr 字串型日期 * @param dateFormat 日期格式 * @return */ p

groovy 直接給定的文字轉換Java中的Class物件從而不需要手動去寫.java檔案

package com.xxl.job.core.glue; import groovy.lang.GroovyClassLoader; import java.lang.reflect.Meth

如何jdk1.8版本寫下的專案轉換jdk1.7

將jdk1.8版本寫下的專案轉換成jdk1.7: 右鍵專案名-->properties-->project facets-->java選擇右邊的1.7 就 OK了 將jdk1.7設為預設: Window-->Preferences-->Ja

vs2010專案轉換vs2008專案的方法

1、開啟 .sln檔案將"Microsoft Visual Studio Solution File, Format Version 11.00"中的11.00改為10.00 2、開啟 .csproj和.csproj.user檔案將ToolsVersion="4.0" 中的

Android系統emoji表情轉換十進位制字串

public static String getIngeger(String s) { int a = 0; String aa = ""; String sss = ""; int

android開發 在JNI函式中引用Java類,cxx複雜資料轉換jobjectArray,實現從JNI到Java的資料傳輸

引言: JNI是Java可以呼叫高效的c++程式碼,但是在JNI函式中傳遞複雜資料型別十分的繁瑣,一般情況下需要jobject作為中轉,一維陣列int[],float[]以及二維陣列String[]可以實現方便的引數傳入/傳出。其他複雜的二、三維陣列理論上可以

Maven專案轉換普通的web專案

目前有很多專案是maven專案,但是個人不太喜歡這樣,感覺換成普通的web專案要好一些 廢話不多說,來看看怎麼將maven專案轉換成普通的web專案吧,以Myeclipse為例 新建一個web專案

普通Maven Spring專案轉換Web專案的方法

注意 轉換成web專案,Dynamic Web Module 這裡選2.5版本,3.0不知道好不好使 1、建立普通的maven project; 1 2 2、轉換成web專案,這裡選2.5版本,注意有的WEB專案的webcontent目錄會有所不

分享pdf文件轉換圖片的圖文教程

PDF文件是辦公中常用的一種文件格式,通常也需要進行各種文件格式之間的轉換。既然是轉換文件肯定是需要專業的轉換軟件才能實現,但是在這裏給大家分享不使用任何軟件將pdf文件轉換成圖片的教程。 一、要將pdf文件轉換成圖片不利用軟件當然是可以實現操作的。首先在瀏覽器上搜索“pdf轉圖片在線”關鍵

gson和fastjsonjson對象轉換javaBean 簡單對照

true blog eth lena ssa file obj return 今天 同事離職,項目後端部分的叠代和重構後面由我接手. 今天看項目代碼時,發現項目使用了Gson,用於將json字符串轉換成javaBean. 以前沒使用過Gson,隨即,簡單入了個們, 想起fa

如何caj文件轉換pdf格式文檔

CAJ格式文件不算是常見的格式類型,通常是在查找論文資料時會在中國論文知網上碰到。由於caj文檔具有一些不方便性,需要使用的時候會想要將caj格式文件轉換成其他的文件類型,比如說pdf文檔。那如果要想將caj文件轉換成pdf應該怎樣操作呢?下面就讓小編來給大家詳細介紹一下吧。 一、將caj文

delphi字符串轉換stringlist

str 轉換成 reat length list begin lis add phi function StrToList(const sString, Token: string): TStringList;var sTmp: string; iPos: Intege

JSON數據轉換Java的實體類

return ace arc 出錯 earch 方法 cit from 實體類 思路:首先將JSON格式的數據轉換成JSONObject,然後將JSONObject轉換成Java的實體類(其中類屬性包括List等類型) Java實體類: SearchFilter

譚浩強 c程序設計 8.17用遞歸法一個整數n轉換字符串。例如,輸入486,應輸出字符串"486"。n的位數不確定,可以是任意位數的整數。

tco xsl bof hcl mku owb kit gym code 8.17用遞歸法將一個整數n轉換成字符串。例如,輸入486,應輸出字符串"486"。n的位數不確定,可以是任意位數的整數。 #include <stdio.h>char str1[20]

如何Android Studio的項目上傳到Github上

githubVCS-->Import into version control-->Share Projection on Github在彈出的對話框中輸入相關信息如果彈出一下錯誤:Please tell me who you are. Run git config --global user.e