2014-10-10 41 views

回答

36

这就是现在被内置到CLI(最后):

在您在config.xml中文件 -

例子:

<widget 
    android-packageName="com.example.android" 
    ios-CFBundleIdentifier="com.example.ios"> 

来源:

https://github.com/apache/cordova-lib/blob/master/cordova-lib/src/configparser/ConfigParser.js#L92

编辑:(Cordov A-库已被移动)

https://github.com/apache/cordova-lib/blob/master/cordova-common/src/ConfigParser/ConfigParser.js#L109

+0

是否有任何等效为'windows'平台? – Beat 2016-02-16 14:43:48

0

注意:这还没有经过测试,但我认为它应该工作。

在Cordova CLI中创建新的IOS平台后,在下面的文件中编辑软件包名称。

app/platforms/ios/<APP_NAME>/config.xml app/platforms/ios/www/config.xml

为了避免难看的复杂,我建议你先试试这个在您的项目的不同的Git分支。

+1

谢谢,但我试图避免通过编辑'platforms'目录,我不要求他们检查到回购。 – hooverlunch 2014-10-11 15:27:46

1

一种自动执行此操作的方法是在后面的准备挂钩中添加。我从这里开始了如何从环境中替换文本的例子:http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/

我有我的项目,指定我想每个平台所用什么ID的project.json:

{ 
    "android": 
    { 
     "app_id": "<my Android Package name>" 
    }, 
    "ios": 
    { 
     "app_id": "<my iOS Bundle Identifier>" 
    } 
} 

然后在/ hooks目录我有一个REPLACE_TEXT的/ after_prepare目录。 JS如下:

#!/usr/bin/env node 

// this plugin replaces arbitrary text in arbitrary files 
// 

var fs = require("fs"); 
var path = require("path"); 

var rootdir = process.argv[2]; 

function replace_string_in_file(filename, to_replace, replace_with) { 
    var data = fs.readFileSync(filename, "utf8"); 

    var result = data.replace(to_replace, replace_with); 
    fs.writeFileSync(filename, result, "utf8"); 
} 

function update_app_id(rootdir, platform, configobj) { 
    var appId = configobj[platform].app_id, 
     stringToReplace = "<value of the widget id property in the config.xml>"; 

    if (platform === "android") { 

     replace_string_in_file(path.join(rootdir, "platforms/android/AndroidManifest.xml"), stringToReplace, appId); 
     replace_string_in_file(path.join(rootdir, "platforms/android/res/xml/config.xml"), stringToReplace, appId); 

    } else if (platform === "ios") { 

     replace_string_in_file(path.join(rootdir, "platforms/ios/<app name>/<app name>-Info.plist"), stringToReplace, appId); 
     replace_string_in_file(path.join(rootdir, "platforms/ios/<app name>/config.xml"), stringToReplace, appId); 

    } 
} 

if (rootdir) { 
    var ourconfigfile = path.join(rootdir, "project.json"); 
    var configobj = JSON.parse(fs.readFileSync(ourconfigfile, "utf8")); 

    // Update each platform's specific configuration/properties files 
    update_app_id(rootdir, "android", configobj); 
    update_app_id(rootdir, "ios", configobj); 
} 

请务必更换用,涉及到你的应用程序/项目的值<>括号表示的数值。

+2

好消息,看起来他们已经将这种能力添加到了Cordova-lib中,并且希望它能在下一个版本中提供:https://github.com/apache/cordova-lib/pull/105 – SunshinyDoyle 2014-10-28 22:19:26