2014-10-10 13 views

risposta

36

questo è ora costruito in CLI (finalmente):

In voi il vostro config.xml file-

Esempio:

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

Fonte:

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

Modifica: (Cordov a-Lib da allora è stato spostato)

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

+0

Esiste qualche equivalente per la piattaforma 'windows'? – Beat

0

Nota:Questo non è stato testato, ma penso che dovrebbe funzionare.

Dopo aver creato una nuova piattaforma IOS in Cordova CLI, modificare il nome del pacchetto nei file sottostanti.

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

Per evitare una brutta complicazione, vi suggerisco di provare questo primo in una diversa Git ramo del vostro progetto.

+1

Grazie, ma sto cercando di evitare la gestione delle rubriche 'platforms' come io non li verificare in pronti contro termine. – hooverlunch

1

Un modo per automatizzare questo è aggiungendo un gancio dopo la preparazione. Ho iniziato con l'esempio di come sostituire testo in base all'ambiente da qui: http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/.

Ho un project.json nel mio progetto che specifica quali id ​​voglio usare per ciascuna piattaforma:

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

quindi nella directory/ganci Ho un/after_prepare directory con un REPLACE_TEXT. js come segue:

#!/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); 
} 

assicurati di sostituire i valori indicati con <> staffe con i valori che riguardano la vostra applicazione/progetto.

+2

Buone notizie, sembra che abbiano aggiunto questa capacità a Cordova-lib e speriamo che sarà disponibile nella prossima versione: https://github.com/apache/cordova-lib/pull/105 – SunshinyDoyle

Problemi correlati