Anders' Yan 阅读(59) 评论(0)

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

如果嫌复制出来的项目太多,可以用文后的批处理删除一些文件,Android studio再次打开时会重建gradle的。

Google首选的开发Android应用程序的集成开发环境(IDE)是Android Studio。有时app需要在PC之间移动,可能有以下几个原因,包括:

  • 将开发代码复制给新的程序员。
  • 将代码移动到另一台计算机或开发环境。
  • 分发演示,示例和培训源代码。

Google以前使用Eclipse IDE。它 支持一个导出选项,允许将项目导出为zip存档。它允许不选某些文件这样zip存档中便没有,然后可以将zip文件导入另一个Eclispe IDE。在Android Studio中有导出项目的功能吗?本文讨论如何导出Android Studio项目。简而言之,它是使用一个zip工具,但有考虑的因素。如果您着急就跳到Android项目导出文件步骤部分吧,要么就看下去吧。

Mike Bugdroid的Android Logo

Android Studio将项目移动到另一台计算机

在Android Studio导出项目到zip涉及使用外部工具,如7-Zip for Windows。在开发团队之间共享代码时,常用的方法是使用版本控制系统(VCS),即源代码管理(SCM)系统,Git系统非常受欢迎。但是,如何在更广泛的受众群体或不同的开发环境中共享代码呢?这是一个zip存档对分发代码有用的地方。特别是zip格式得到广泛的支持。幸运的是,很容易将Android Studio项目的重要部分(即代码和资源)进行压缩。zip中没有任何设置和配置文件,而这些是与特定的硬件和软件组合相关联的。开发人员对源代码可能不同的设置,甚至使用不同的开发工具。

Tek Eye文章“ Android Project Structure 简要介绍了Android应用程序在Studio项目中生成的默认文件。了解各种文件的作用我们就能够确定哪些文件需要压缩还是排除。确定要排除什么的一个好的起点是查看.gitignore文件的内容。创建项目时,Studio会生成以下默认 .gitignore 文件。它由Git确定不添加到源代码控制的文件夹和文件。任何目录中的这些文件和文件夹都可以从zip文件中排除:

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

要仅将源代码分发到另一个Studio,很多项目文件夹中可以删除其他文件有:

  • .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).

默认app 文件夹中的src目录位于项目的源代码的位置。请注意,其他源代码文件夹可以存在,并且应用程序文件夹可以重命名(重构)。默认情况下,文件中的所有内容都将在zip文件中。但是,并不是所有应用程序都可能需要:

  • 测试 - 如果应用程序没有写入单元测试,则可以排除src中的此文件夹。
  • androidTest - 如果应用程序没有检测测试,则可以排除src中的此文件夹。
  • proguard-rules.pro - 如果没有规则添加到默认文件,那么它不是必需的。

如果两个测试目录被删除,请在应用程序文件夹中编辑build.gradle文件,以删除junit依赖关系。同样,如果proguard-rules.pro文件被删除,编辑相同的build.gradle来删除对它的引用。请参阅下一节中更改build.gradle的详细信息。以上所有这些都意味着最小的zip存档将具有:

  • 该 app 目录(上面讨论的文件和目录)
  • 的 build.gradle 文件(一个项目和一个主要的app 目录)
  • 一个 settings.gradle 文件

Android项目导出文件步骤

以下是Windows操作系统下的步骤。对于其他系统,其他文件可能需要删除,例如 Mac 上的 .DS_Store。请记住,以下操作仅用于允许将应用的Android源代码导入到另一台机器上的另一个IDE中的Studio中。这些步骤基于默认项目结构,对于大型复杂项目可能有些更改。

Android project 存储在Studio中显示的文件系统中:

Android应用程序项目结构

首先使用文件管理器,例如Windows资源管理器,将整个项目复制到另一个临时位置。然后从ZIP存档中不需要的副本中删除文件和文件夹(也可以参阅最后的基本批处理文件)。对复制的项目进行以下更改:

  • 删除目录.gradle
  • 删除目录.idea
  • 删除任何构建目录,包括应用程序中的一个
  • 删除gradle目录
  • 删除所有.gitignore文件,包括应用程序中的文件
  • 删除gradle.properties文件(如果尚未添加)
  • 删除gradlewgradlew.bat脚本文件,如果没有修改
  • 删除所有* .iml文件,包括应用程序中的一个
  • 删除local.properties文件
  • 删除app / libs目录,如果它是空的

如果libs目录被删除,那么build.gradle中的这个生成行不再需要了:

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

它可以删除。

  • 如果没有添加任何规则,请删除app / proguard-rules.pro

如果proguard-rules.pro被删除,则编辑build.gradle,使之如下:

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

变为:

proguardFiles getDefaultProguardFile('proguard-android.txt')
  • 如果没有单元测试删除app / src中测试目录
  • 如果没有仪器测试,请删除app / src中androidTest目录

如果两个测试目录被删除,请从build.gradle依赖关系部分删除以下行:

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'

通过这些更改,复制的目录现在可以压缩,保留目录结构。创建的zip文件可以分发。

在Studio中导入ZIP文件

要在另一台计算机上导入项目,首先提取文件。在Studio中,导入不会移动任何文件夹或文件。因此,确保将项目提取到所需位置。在Studio中,使用“ Welcome "屏幕上的“ Import project 选项(返回到“Welcome” 屏幕,关闭所有打开的项目)。

Android Studio导入项目

从导入对话框中选择顶级build.gradle文件,并打开项目。显示一条要求设置Gradle的消息。选择确定

在Studio导入上设置Gradle

等待Studio配置项目,添加本地文件进行设置和Gradle(在Studio屏幕的底部观察状态栏)。该项目现在可以在Android Studio中进行编辑和运行。

可能无法更新错误

将项目导入Studio时,您可能会看到无法更新错误,例如无法更新Gradle:

错误更新Gradle

在这种情况下,“  Unexpected Error”  对话框显示消息Unable to update wrapper to use Gradle x.y,其中x.y是版本号。它显示一个文件的路径,并在方括号中拒绝Access。通常这是因为文件是写保护的,去掉文件的只读属性。在Windows上使用项目目录中的上下文菜单(通常右键单击)。然后选择属性并清除只读复选框。单击应用并确认属性更改,将更改应用于此文件夹,子文件夹和所选文件

修复Studio导入时的意外错误

Failed to Sync Gradle 错误

导入项目时可以显示的另一个错误消息是当项目使用的Gradle版本不可用时,无法同步Gradle

Studio失败了SYnc Gradle

这需要下载正确的版本。最好点击蓝色链接 Fix Gradle wrapper修复设置,并在错误消息中重新导入项目Gradle设置。这将与Studio正在使用的项目Gradle同步。可以防止显示此错误,请参阅下一节。

当显示Gradle更新对话框时,选择 Update 以更新项目的Gradle版本。

工作室更新项目的Gradle

Gradle中的Version Independent Library Reference

如果Android项目不依赖于使用特定版本的库,那么build.gradle文件可以设置使用最新的可用版本。对于用于example project , demo project 很有用。在Gradle文件的依赖项部分中,将库的具体版本号更改为+。这告诉Gradle使用最新的可用版本。

例如来自应用程序目录中的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的次要更新。

同样,在项目的根build.gradle文件中更改:

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

至:

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

将项目使用Gradle从特定版本升级到最新版本(并可能防止同步Gradle错误失败)。但是,这可能会导致 Minimum Supported Gradle Version Error in Studio.。有时只有小通配符在某些版本的工作室不会有这个错误:

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

开始 Android项目清理的批处理文件

在Windows PC上,以下基本批处理文件可用于执行本文中提到的大多数文件夹和文件删除。

注意:注意使用批处理文件,从错误的使用位置执行批处理,可能对项目代码造成很大的损失。

可以在复制的Android项目目录中创建此批处理文件,例如clean.bat。它将清理一个基本的Android项目到它的代码和Gradle构建文件(准备压缩和/或导入到Studio)。根据特定项目的需要调整命令。下面显示的批处理文件删除 test 目录和ProGuard文件。根据需要删除这些行,如果不删除,请记住编辑应用程序目录中的build.gradle文件以删除文章中详细介绍的引用。该  libs 目录被删除,如果该项目有额外的库(jar 文件)把这行也删除掉。小心使用批处理文件,后果自负。如有疑问请勿使用。

@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 import
rmdir .gradle /s /q
@echo Remove IDE files
rmdir .idea /s /q
del *.iml /f /s
del local.properties
@echo Remove build folders, will be recreated
rmdir build /s /q
rmdir app\build /s /q
@echo Remove Gradle Wrapper, will be added back in
rmdir 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 folder
rmdir app\libs /s /q
@echo Remove ProGuard rules
del app\proguard-rules.pro /f
@echo Remove test code
rmdir app\src\androidTest /s /q
rmdir 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   发布时间:2016年4月25日  更新:2017年2月5日