tutorial descargar android cordova cordova-3

android - descargar - phonegap



En Cordova, ¿cómo puedo especificar diferentes nombres de paquetes para ios y android? (3)

Esto ahora está integrado en CLI (finalmente):

En ti tu archivo config.xml-

Ejemplo:

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

Fuente:

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

Edición: (Córdova-Lib ya se ha movido)

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

Debido a factores heredados, los nombres de los paquetes de mis aplicaciones de Android e iOS son diferentes. Actualmente, Cordova parece estar inyectando el atributo de id de widget de config.xml en ambos al compilar. ¿No hay manera de personalizar esto? Si edito el archivo AndroidManifest.xml directamente, espero que se sobrescriba muy pronto.

Gracias.


Una forma de automatizar esto es agregar un enganche posterior a la preparación. Comencé con el ejemplo de cómo reemplazar texto dependiendo del entorno desde aquí: http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/ .

Tengo un project.json en mi proyecto que especifica qué ID quiero usar para cada plataforma:

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

Luego, en el directorio / hooks tengo un directorio / after_prepare con replace_text.js de la siguiente manera:

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

Asegúrese de reemplazar los valores indicados con <> corchetes con los valores que pertenecen a su aplicación / proyecto.


Nota: Esto no ha sido probado, pero creo que debería funcionar.

Después de crear una nueva plataforma IOS en la CLI de Cordova, edite el nombre del paquete en los archivos a continuación.

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

Para evitar una complicación fea, le sugiero que pruebe esto primero en una sucursal Git diferente de su proyecto.