【问题标题】:Two Phonegap apps with same code base?两个具有相同代码库的 Phonegap 应用程序?
【发布时间】:2015-09-03 17:01:41
【问题描述】:

我正在开发支持 iOS 和 Android 的 Phonegap 应用程序(使用 AngularJs+Bootstrap)。到目前为止,我们必须维护两个代码库,但它们的功能相同,只有很少的区别,如下所示。

  • 应用名称/图标不同
  • Web 服务调用的主 url 不同

例如:

PhoneGap App X:调用http://abc/xappinfoweservice,使用x_icon_app.png (这必须为 iOS 和 Android 构建,我没有问题)

PhoneGap App Y:调用http://xyz/yappinfoweservice,使用y_icon_app.png等UI元素做手机皮肤 (这也必须为 iOS 和 Android 构建)

PhoneGap App X 和 Y 使用相同的业务逻辑代码。

我想为这两个应用程序维护一个代码库,因为只有很少的区别。有什么方法可以实现这一目标或简化我的开发工作?

【问题讨论】:

  • 编写一个代码(您需要更改 URL 的地方)并检查浏览器操作系统,例如 if...else... 并相应地分配 url 变量。 stackoverflow.com/questions/12606245/…
  • AppIcons 将基于项目设置,适用于 iOS 的 XCode 和适用于 Android 的 Eclipse,以便轻松处理。
  • 您好,Mrunal,感谢您的评论。我想你没有理解我的问题。我已经编辑了,请看一下。
  • 在这种情况下,无论哪个代码库是通用的,都将其保存在单个文件夹中。在 iOS 以及 Android 项目中添加该文件夹作为参考。对于 URL 和图像部分,我上面提到的逻辑相同。

标签: android ios angularjs cordova architecture


【解决方案1】:

我也遇到过类似的情况。我将所有应用程序文件夹放在一个文件夹中,并将以下代码放在根文件夹中的一个文件中:persist.js。其目的是在保持相同路径的所有不同应用程序中持久保存文件更改。这是一个小手册,但工作......

var fs = require('fs');
var chalk = require('chalk');
var argv = require('minimist')(process.argv.slice(2));
var file = argv.f;

var apps = [
    'app_folder_1',
    'app_folder_2',
    'app_folder_3',
    'app_folder_4',
    'app_folder_5',
];

if(file){

    if (fs.existsSync(file)) {
        console.log(chalk.blue('Found source file'));
        var fileWithoutApp = file.substring(file.indexOf('/'));
        apps.map(app => {
            fs.writeFileSync(app + fileWithoutApp, fs.readFileSync(file));
            console.log(chalk.green(`File copied to: ${app + fileWithoutApp}`))
        });

    } else {
        console.log(chalk.red('File does not exist'));
    }

} else {
    console.log(chalk.red('No file specified'));
}

对任何项目文件夹中的文件进行更改后,只需从命令行调用以下命令:

node persist -f [relative path to your file that has changes]

这将在所有项目中保留更改。就像我说的,有点手动......但很有效:)

【讨论】:

    【解决方案2】:

    当你使用cordova或ionic + angularjs时,你可以为这两种设备编译应用程序,这更简单,你喜欢复杂!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多