2014-10-10 71 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