如何使用不同的应用程序名称,图标,设置从一个项目构build多个应用程序,

只有一个项目构buildiOS和Android应用程序非常棒。 但是也可以用不同的名称,图标等来构build多个应用程序

如果使用相同的布局构build应用程序,并且可能95%的函数/代码/algorithm相同,这可能会非常有用:

  • 不同的目标群体(健身食谱应用,素食主义者,蔬菜,生态…)
  • 不同的运动(足球,篮球,网球等新闻)
  • 不同的客户(客户A,B和C的商业应用程序)

事情,这可能是不同的每个应用程序:

  • 应用名称
  • App图标
  • 闪屏
  • devise
  • 设置(APIurl,…)
  • 某些代码(默认function/组件可能会被基于应用程序的自定义文件覆盖)

也许这将是一个完美的解决scheme,如果你有一个目录风格 ,你可以把所有你想用的文件覆盖默认的代码库。

这里有人发布了类似的东西或任何想法如何解决这个问题?

Solutions Collecting From Web of "如何使用不同的应用程序名称,图标,设置从一个项目构build多个应用程序,"

这是我最近在项目中解决的一个问题。 而且我认为我有一些很好的(不是完美的)解决scheme。

理念。 我们没有任何内置的function来帮助我们处理这种情况,所以我们可以使用一些可以完成这个工作的外部操作。 我们需要的只是多个Android和iOS项目以及单个JS代码库。

实现。 我来到这个项目结构:

  • IOS
  • 安卓
  • 经理
  • SRC

iosandroid文件夹是众所周知的,他们是本地项目文件夹。

src是一个带有JS代码的文件夹,你可以组织任何你想要的东西

manager是最有趣的一个。 这里我们可以存储多个本地项目文件。 我们可以有多个本地项目文件夹,例如app1-android app1-ios app2-android app2-ios 。 而当我们想要在app1上工作,我们只需将app1-iosapp1-android复制到我们的根iosandroid文件夹中,那么实际的项目就是app1 。 当我们完成app1我们可以把androidios文件夹保存到我们的manager ,然后将app2-iosapp2-android复制到root和ios 。 我们都很好开发我们的app2

我们可以手动完成。 但是我们是开发者,我们可以更容易。 我已经写了一个PHP脚本,使得像php save.php -a app1一样简单php save.php -a app1php set.php -a app1manager复制到根和向后。 此外,它不考虑复制一些不重要的工作人员(在ios的豆荚文件夹,在android等build立),并运行pod install以确保我们有实际项目中的所有荚。

我坚持一个package.json文件来安装所有的npm模块,所以我不必在每次项目切换后都运行npm install

毕竟,我们可以在一个回购项目中拥有尽可能多的项目,我们可以独立定制每一个项目。

PS如果你想让我分享我的脚本,我会尽快完成(需要一些时间来准备github,并写一些更详细的说明),只是让我知道。

我为每个平台(iOS / Android)提供了大约100个不同的本地应用程序,共享相同的代码库。 我现在pipe理这个设置大约2年,我仍然对它感到满意。

这是iOS的一部分:

我使用不同plist / pch文件的目标。

在这里输入图像说明

将每个应用程序的文件保存在由应用程序名称命名的单独目录中。 检查相应的目标,如果将文件添加到项目中:

在这里输入图像说明

通过使用相同的文件名,您可以“覆盖”不同目标文件。

Android部分:

我使用一个gradle模块作为通用部分,每个应用程序使用一个模块进行定制。 我也使用gradlevariables的公共值定义( minSdkVersioncompileSdkVersion等)。 每个应用applicationId只有以下设置不同: applicationIdversionCodeversionName 。 这是一个自定义应用程序的示例文件:

 apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { applicationId "..." minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 28 versionName "1.0" } signingConfigs rootProject.ext.signingConfigs buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } } dependencies { compile project(':apps:common') } 

您可以覆盖应用程序模块的相应res文件夹中的资源(应用程序图标,图像,string等)(对同一资源使用相同的文件名)。

不要忘记在settings.gradle包含所有的模块。

我写了关于React Native Templates的1-2-3,这应该会让你的目标变得相当不错。

TLDR; 是它给你一个方法来设置项目样板,使你可以重用所有的npm和本地依赖(本地依赖关系自动链接)。 这绝对会帮助你…

  • 应用名称
  • devise
  • 设置
  • 默认代码/助手

我不认为这有助于你…

  • App图标
  • 初始屏幕

基本上,它会帮助你复制项目根目录( ./ )和应用程序( ./app )文件夹中的任何内容,但是./ios./android文件夹中没有任何内容,除非它们被作为依赖关系包含在内。 可能有办法做应用程序图标和闪屏作为依赖,但我不知道。 如果你知道,请让我知道。

阅读这里的文章… React Native Templates的1-2-3

我们做一些类似于你想做的事情,但在一个更有限的范围内。 我们有我们的应用程序的各种版本,每个都有一个名称,标志,devise,API URL …

它只是为android而构build的,所以它基本上是上面提到的几个风格 。 (我不知道iOS的等效系统是什么)

但是我们也使用https://github.com/luggit/react-native-config ,它提供了在native(android和iOS)和javascript代码之间共享这些特定variables/设置的方法。 所有你需要的是设置一个.env.myversion文件,其中包含你需要的设置,如:

API_URL=https://my.server.com/ LOGO_FILE=/path/to/the/right/logo COLORSET=shades_of_blue

正确的文件在构build时被引入,所以你的应用程序具有每个设置的正确版本,然后你可以从代码中调用这些variables,并根据你使用的版本来调用这些variables。 好处是它能在任何地方工作。 这样做的缺点是,如果在JS层中包含所有这些内容,而不是在带有flavor的构build系统中定义它,那么您可能会在应用程序中发布一些额外的东西。 我想这是在便利性和性能/效率之间的折衷,你需要根据你的使用情况来决定。

在Xcode中,您可以简单地复制您的Target并使用新的plist创build一个新的,这意味着您可以根据需要更改应用程序名称,图标,启动包和其他设置。

在XCode中,您可以在单个项目(意味着开发,alpha,beta,prod,debug,release)中为不同的应用程序构build不同的configuration。借助此解决scheme,您可以更改AppName,AppIcon,BundleId,URLs, SplashScreen等不同的版本。

你可以使用多个目标。

您可以通过以下步骤创build目标:

转到项目导航器 – >右击目标下的应用程序名称 – >select重复 – >从popupselectDuplicate only

你会发现重复的目标。 现在,您可以select另一个或额外的app icon并在您的资产中launch image ,并为该目标设置它。

请参阅下面的截图,以更好的理解!

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

所以,select新的maded目标,并通过从general选项卡中select进行更改。

你可以参考Appcoda这个伟大的教程!

我创build了一个网站,用户可以在其中指定他们的内容,图标,名称和包名称,以及许多其他选项,如在应用程序中包括广告SDK。 小额付款后,用户可以手动获取带有证书或签名应用的APK。 apk的生成需要几秒钟。 APK已准备好上传到PlayStore。 这是项目是高价,但我的客户很高兴。

它是如何完成的?

  1. 为代码创build一些模板。 你可以在一些网站上购买。
  2. 将可选代码拆分为单独的文件
  3. 如果您不能将代码拆分为单独的文件(例如AndroidManifest.xml),则可以使用某些键包含注释(后续处理的说明)
  4. 从用户内容/指定图标生成图标。
  5. 根据用户请求,将所有选定的文件复制到同一个目录中,用简单的文本处理器删除不必要的代码(使用步骤3中的注释),将其复制,然后将APK发送给用户。