`.gitignore` 用于具有 Android 目标的 Ionic 项目

Posted

技术标签:

【中文标题】`.gitignore` 用于具有 Android 目标的 Ionic 项目【英文标题】:`.gitignore` for an Ionic project with Android target 【发布时间】:2020-11-14 23:37:11 【问题描述】:

我正在使用 Capacitor(以前的 Cordova)创建一个 Ionic 项目,并将 android 添加为目标。

我已经能够构建应用程序并添加 Android 目标,它会在 android/ 下创建大量文件,使用:

ionic build
ionic cap add android

然后,我能够启动 Android Studio 并使用 npx cap open android 模拟我的应用程序,并在 Android Studio 中使用“运行应用程序”。这又增加了几桶文件。

我可以通过添加来自gitignore.io 的“ionic”和“AndroidStudio”gitignore 条目来忽略它们中的大多数,但是如果有人克隆了 repo,他们可以从头开始重建整个 Android 目录,对吗?我是否只是将 android 文件夹中的所有内容视为可以使用电容器从核心离子项目重新创建的构建工件(即“cap” - 以前称为 cordova)。

有什么需要保存到 ionic android 目录中的 repo 的吗?如果是这样,哪些文件 - 或者我应该回退到 android 文件夹的 ionic/Android Studio gitignore 条目?

【问题讨论】:

你应该包括所有这些文件夹,我不会添加它们 .gitignore 你是说它们不是可以重新生成的构建组件吗?原因是什么? 【参考方案1】:

有什么需要保存到 ionic android 目录下的 repo 中的吗?

我建议您也将本机文件夹包含在您的存储库中。

根据我在过去一年开发两个应用时使用电容器的经验,考虑这些事情。

大多数情况下,您至少会使用几个 cordova 插件,因为电容器仍然没有适用于某些功能的可行插件。 这些插件将要求您在代码的本机端手动添加一些变量(如 sdk 键)或初始化函数。 事实上,即使对于电容器社区插件(由其他人创建的插件),您也必须在本机端添加一些最少的代码行。考虑这个plugin 用于 facebook 登录。只需完成安装步骤,您将在 ios 和 android 端看到一长串配置。 电容器以前不是 Cordova。这两个是不同的框架。 Capacitor 完全依赖原生 ide 进行编译,而 cordova cli 可以为您构建原生代码(需要 ios、mac)。

但是如果有人克隆了 repo,他们可以从头开始重建整个 Android 目录,对吗?

当您的应用程序增长时,根据其预期功能,这将不是一件容易的事。他们必须进行所有这些小调整才能使其正常工作。

总而言之,将您的本机代码也放入存储库中。对我来说,带有本机代码的存储库大小并不是很大。

【讨论】:

我知道我应该提交 /android 文件夹,因为“电容器原生项目(android、ios 等)是源资产(而不是像 Cordova 那样构建资产),因此应该提交它们。” (source)。这是有道理的。但是,如果我从 Android Studio 构建 APK,则会创建 /android/app/build/outputs/apk-debug.apk,这显然是构建工件,因此不应提交。所以我想我应该忽略这个?还有更多像这样我应该忽略的构建工件吗? 如果找到this example for .gitignore with Android Studio,它将/*/build/ 添加到.gitignore,我发现another example 忽略.apk 和类似文件。我选择了第一个......【参考方案2】:

在 Capacitor 中,您应该提交 iosandroid 文件夹。它们包含自己的 .gitignore 文件以及适用于 iOS 和 Android 的推荐文件。

它们不是构建工件,如果您更改图标或配置(在 Info.plist、AndroidManifest.xml 等中)并删除文件夹,这些更改将丢失。

如果你克隆一个 Capacitor 项目,你应该运行这个命令:

npm install (or other install package depending on your package manager)
npm run build (or ionic build if using ionic)
npx cap sync (this copies files and generates non committed files)

【讨论】:

【参考方案3】:

作为@jcesarmobile

在 Capacitor 中,您应该提交 ios 和 android 文件夹。它们包含自己的 .gitignore 文件以及适用于 iOS 和 Android 的推荐文件。

但是,如果您正在寻找一个 .gitignore 以在您的项目的根目录中使用,那么这个应该可以完成这项工作。


# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
.vscode
.idea

npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Optional eslint cache
.eslintcache

【讨论】:

以上是关于`.gitignore` 用于具有 Android 目标的 Ionic 项目的主要内容,如果未能解决你的问题,请参考以下文章

Android studio .gitignore 文件的内容

具有相同 .gitignore 的 AWS Elastic Beanstalk 和 Github

Android Studio Git .gitignore规则不生效的原因

Eclipse Android 和 gitignore

.gitignore 用于 Xcode 项目

.gitignore 不适用于忽略文件夹的子文件夹