原文:http://tekeye.uk/android/export-android-studio-project

如果嫌復(fù)制出來的項(xiàng)目太多,可以用文后的批處理刪除一些文件,Android studio再次打開時會重建gradle的。

Google首選的開發(fā)Android應(yīng)用程序的集成開發(fā)環(huán)境(IDE)是Android Studio。有時app需要在PC之間移動,可能有以下幾個原因,包括:

  • 將開發(fā)代碼復(fù)制給新的程序員。

  • 將代碼移動到另一臺計(jì)算機(jī)或開發(fā)環(huán)境。

  • 分發(fā)演示,示例和培訓(xùn)源代碼。

Google以前使用Eclipse IDE。它 支持一個導(dǎo)出選項(xiàng),允許將項(xiàng)目導(dǎo)出為zip存檔。它允許不選某些文件這樣zip存檔中便沒有,然后可以將zip文件導(dǎo)入另一個Eclispe IDE。在Android Studio中有導(dǎo)出項(xiàng)目的功能嗎?本文討論如何導(dǎo)出Android Studio項(xiàng)目。簡而言之,它是使用一個zip工具,但有考慮的因素。如果您著急就跳到Android項(xiàng)目導(dǎo)出文件步驟部分吧,要么就看下去吧。

Android Studio將項(xiàng)目移動到另一臺計(jì)算機(jī)

在Android Studio導(dǎo)出項(xiàng)目到zip涉及使用外部工具,如7-Zip for Windows。在開發(fā)團(tuán)隊(duì)之間共享代碼時,常用的方法是使用版本控制系統(tǒng)(VCS),即源代碼管理(SCM)系統(tǒng),Git系統(tǒng)非常受歡迎。但是,如何在更廣泛的受眾群體或不同的開發(fā)環(huán)境中共享代碼呢?這是一個zip存檔對分發(fā)代碼有用的地方。特別是zip格式得到廣泛的支持。幸運(yùn)的是,很容易將Android Studio項(xiàng)目的重要部分(即代碼和資源)進(jìn)行壓縮。zip中沒有任何設(shè)置和配置文件,而這些是與特定的硬件和軟件組合相關(guān)聯(lián)的。開發(fā)人員對源代碼可能不同的設(shè)置,甚至使用不同的開發(fā)工具。

Tek Eye文章“ Android Project Structure 簡要介紹了Android應(yīng)用程序在Studio項(xiàng)目中生成的默認(rèn)文件。了解各種文件的作用我們就能夠確定哪些文件需要壓縮還是排除。確定要排除什么的一個好的起點(diǎn)是查看.gitignore文件的內(nèi)容。創(chuàng)建項(xiàng)目時,Studio會生成以下默認(rèn) .gitignore 文件。它由Git確定不添加到源代碼控制的文件夾和文件。任何目錄中的這些文件和文件夾都可以從zip文件中排除:

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

要僅將源代碼分發(fā)到另一個Studio,很多項(xiàng)目文件夾中可以刪除其他文件有:

  • .idea - This directory relates to the Studio IDE so can be ignored.

  • .gitignore - The Git ignore file in any of the project directories is not required. They will be generated by Studio during the import.

  • build - Any build directories are not needed. Studio will recompile all the source code.

  • libs - The libs folder (below the app folder) if it is empty.

  • gradle - The gradle wrapper is not required as again it will be generated.

  • gradle.properties - Not required if the default has not been added to.

  • gradlew.* - The Gradle script files are not required (not usually modified).

  • local.properties - Stores the path to the SDK, this may be different on another machine therefore it is not required (it will be generated on import).

默認(rèn)app 文件夾中的src目錄位于項(xiàng)目的源代碼的位置。請注意,其他源代碼文件夾可以存在,并且應(yīng)用程序文件夾可以重命名(重構(gòu))。默認(rèn)情況下,文件中的所有內(nèi)容都將在zip文件中。但是,并不是所有應(yīng)用程序都可能需要:

  • 測試 - 如果應(yīng)用程序沒有寫入單元測試,則可以排除src中的此文件夾。

  • androidTest - 如果應(yīng)用程序沒有檢測測試,則可以排除src中的此文件夾。

  • proguard-rules.pro - 如果沒有規(guī)則添加到默認(rèn)文件,那么它不是必需的。

如果兩個測試目錄被刪除,請?jiān)?em>應(yīng)用程序文件夾中編輯build.gradle文件,以刪除junit依賴關(guān)系。同樣,如果proguard-rules.pro文件被刪除,編輯相同的build.gradle來刪除對它的引用。請參閱下一節(jié)中更改build.gradle的詳細(xì)信息。以上所有這些都意味著最小的zip存檔將具有:

  • 該 app 目錄(上面討論的文件和目錄)

  • 的 build.gradle 文件(一個項(xiàng)目和一個主要的app 目錄)

  • 一個 settings.gradle 文件

Android項(xiàng)目導(dǎo)出文件步驟

以下是Windows操作系統(tǒng)下的步驟。對于其他系統(tǒng),其他文件可能需要刪除,例如 Mac 上的 .DS_Store。請記住,以下操作僅用于允許將應(yīng)用的Android源代碼導(dǎo)入到另一臺機(jī)器上的另一個IDE中的Studio中。這些步驟基于默認(rèn)項(xiàng)目結(jié)構(gòu),對于大型復(fù)雜項(xiàng)目可能有些更改。

Android project 存儲在Studio中顯示的文件系統(tǒng)中:

首先使用文件管理器,例如Windows資源管理器,將整個項(xiàng)目復(fù)制到另一個臨時位置。然后從ZIP存檔中不需要的副本中刪除文件和文件夾(也可以參閱最后的基本批處理文件)。對復(fù)制的項(xiàng)目進(jìn)行以下更改:

  • 刪除目錄.gradle

  • 刪除目錄.idea

  • 刪除任何構(gòu)建目錄,包括應(yīng)用程序中的一個

  • 刪除gradle目錄

  • 刪除所有.gitignore文件,包括應(yīng)用程序中的文件

  • 刪除gradle.properties文件(如果尚未添加)

  • 刪除gradlewgradlew.bat腳本文件,如果沒有修改

  • 刪除所有* .iml文件,包括應(yīng)用程序中的一個

  • 刪除local.properties文件

  • 刪除app / libs目錄,如果它是空的

如果libs目錄被刪除,那么build.gradle中的這個生成行不再需要了:

compile fileTree(dir: 'libs', include: ['*.jar'])

它可以刪除。

  • 如果沒有添加任何規(guī)則,請刪除app / proguard-rules.pro

如果proguard-rules.pro被刪除,則編輯build.gradle,使之如下:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

變?yōu)椋?/p>

proguardFiles getDefaultProguardFile('proguard-android.txt')
  • 如果沒有單元測試刪除app / src中測試目錄

  • 如果沒有儀器測試,請刪除app / src中androidTest目錄

如果兩個測試目錄被刪除,請從build.gradle依賴關(guān)系部分刪除以下行:

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

和(其中x.xx是版本號):

testCompile 'junit:junit:x.xx'

通過這些更改,復(fù)制的目錄現(xiàn)在可以壓縮,保留目錄結(jié)構(gòu)。創(chuàng)建的zip文件可以分發(fā)。

在Studio中導(dǎo)入ZIP文件

要在另一臺計(jì)算機(jī)上導(dǎo)入項(xiàng)目,首先提取文件。在Studio中,導(dǎo)入不會移動任何文件夾或文件。因此,確保將項(xiàng)目提取到所需位置。在Studio中,使用“ Welcome "屏幕上的“ Import project 選項(xiàng)(返回到“Welcome” 屏幕,關(guān)閉所有打開的項(xiàng)目)。

從導(dǎo)入對話框中選擇頂級build.gradle文件,并打開項(xiàng)目。顯示一條要求設(shè)置Gradle的消息。選擇確定。

等待Studio配置項(xiàng)目,添加本地文件進(jìn)行設(shè)置和Gradle(在Studio屏幕的底部觀察狀態(tài)欄)。該項(xiàng)目現(xiàn)在可以在Android Studio中進(jìn)行編輯和運(yùn)行。

可能無法更新錯誤

將項(xiàng)目導(dǎo)入Studio時,您可能會看到無法更新錯誤,例如無法更新Gradle:

在這種情況下,“  Unexpected Error”  對話框顯示消息Unable to update wrapper to use Gradle x.y,其中x.y是版本號。它顯示一個文件的路徑,并在方括號中拒絕Access。通常這是因?yàn)槲募菍懕Wo(hù)的,去掉文件的只讀屬性。在Windows上使用項(xiàng)目目錄中的上下文菜單(通常右鍵單擊)。然后選擇屬性并清除只讀復(fù)選框。單擊應(yīng)用并確認(rèn)屬性更改,將更改應(yīng)用于此文件夾,子文件夾和所選文件。

Failed to Sync Gradle 錯誤

導(dǎo)入項(xiàng)目時可以顯示的另一個錯誤消息是當(dāng)項(xiàng)目使用的Gradle版本不可用時,無法同步Gradle。

這需要下載正確的版本。最好點(diǎn)擊藍(lán)色鏈接 Fix Gradle wrapper修復(fù)設(shè)置,并在錯誤消息中重新導(dǎo)入項(xiàng)目Gradle設(shè)置。這將與Studio正在使用的項(xiàng)目Gradle同步??梢苑乐癸@示此錯誤,請參閱下一節(jié)。

當(dāng)顯示Gradle更新對話框時,選擇 Update 以更新項(xiàng)目的Gradle版本。

Gradle中的Version Independent Library Reference

如果Android項(xiàng)目不依賴于使用特定版本的庫,那么build.gradle文件可以設(shè)置使用最新的可用版本。對于用于example project , demo project 很有用。在Gradle文件的依賴項(xiàng)部分中,將庫的具體版本號更改為+。這告訴Gradle使用最新的可用版本。

例如來自應(yīng)用程序目錄中的build.gradle文件的此條目:

compile 'com.android.support:appcompat-v7:23.1.0'

可以更改為:

compile 'com.android.support:appcompat-v7:+'

該+可以用于次要版本,所以行:

compile 'com.android.support:appcompat-v7:23.+'

指定該庫的最新版本23的次要更新。

同樣,在項(xiàng)目的根build.gradle文件中更改:

classpath 'com.android.tools.build:gradle:2.2.3'

至:

classpath 'com.android.tools.build:gradle:+'

將項(xiàng)目使用Gradle從特定版本升級到最新版本(并可能防止同步Gradle錯誤失敗)。但是,這可能會導(dǎo)致 Minimum Supported Gradle Version Error in Studio.。有時只有小通配符在某些版本的工作室不會有這個錯誤:

classpath 'com.android.tools.build:gradle:2.2.+'

開始 Android項(xiàng)目清理的批處理文件

在Windows PC上,以下基本批處理文件可用于執(zhí)行本文中提到的大多數(shù)文件夾和文件刪除。

注意:注意使用批處理文件,從錯誤的使用位置執(zhí)行批處理,可能對項(xiàng)目代碼造成很大的損失。

可以在復(fù)制的Android項(xiàng)目目錄中創(chuàng)建此批處理文件,例如clean.bat。它將清理一個基本的Android項(xiàng)目到它的代碼和Gradle構(gòu)建文件(準(zhǔn)備壓縮和/或?qū)氲絊tudio)。根據(jù)特定項(xiàng)目的需要調(diào)整命令。下面顯示的批處理文件刪除 test 目錄和ProGuard文件。根據(jù)需要刪除這些行,如果不刪除,請記住編輯應(yīng)用程序目錄中的build.gradle文件以刪除文章中詳細(xì)介紹的引用。該  libs 目錄被刪除,如果該項(xiàng)目有額外的庫(jar 文件)把這行也刪除掉。小心使用批處理文件,后果自負(fù)。如有疑問請勿使用。

@echo Clean a Android Studio project ready for importing and zipping pure code
@echo Modify this file to meet project requirements
pause
@echo Remove Gradle code, added back in on importrmdir .gradle /s /q
@echo Remove IDE filesrmdir .idea /s /q
del *.iml /f /s
del local.properties
@echo Remove build folders, will be recreatedrmdir build /s /qrmdir app\build /s /q
@echo Remove Gradle Wrapper, will be added back inrmdir gradle /s /q
@echo Remove Git ignore files
del .gitignore /f /s
@echo Remove other Gradle files
del gradle.properties
del gradle?.*
@echo Remove libs folderrmdir app\libs /s /q
@echo Remove ProGuard rules
del app\proguard-rules.pro /f
@echo Remove test codermdir app\src\androidTest /s /qrmdir app\src\test /s /q
@echo Clear Read-only attributes
attrib -R *.* /s
@echo Do not forget to edit build.gradle in the app directory

也可以看看

作者:Daniel S. Fowler   發(fā)布時間:2016年4月25日  更新:2017年2月5日  

http://www.cnblogs.com/yansc/p/7158803.html