You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Sergey Grebnov (JIRA)" <ji...@apache.org> on 2016/02/09 14:50:18 UTC
[jira] [Updated] (CB-8326) Allow arguments to be sent to the build
comand e.g. xcodebuild
[ https://issues.apache.org/jira/browse/CB-8326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Grebnov updated CB-8326:
-------------------------------
Component/s: (was: CordovaLib)
(was: CLI)
(was: CordovaJS)
iOS
> Allow arguments to be sent to the build comand e.g. xcodebuild
> --------------------------------------------------------------
>
> Key: CB-8326
> URL: https://issues.apache.org/jira/browse/CB-8326
> Project: Apache Cordova
> Issue Type: Bug
> Components: iOS
> Affects Versions: 3.5.0, 4.0.0, 3.6.3, 3.7.1, 4.1.3
> Environment: All
> Reporter: DotNetWise
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> SCurrently if you do
> cordova build ios --device CODE_SIGN_IDENTITY='iPhone Developer: ABCD(1X23456789)' PROVISIONING_PROFILE='/usr/local/provisions/ABC_Development.mobileprovision'
> You'll get an error that CODE_SIGN_IDENTITY is not a known platform.
> This is absolutely rubbish, as there is no real way to send arguments directly to xcodebuild e.g. for directly build & sign an .ipa
> We have tweaked locally the code, but every cordova release is making it a pain in the ass to reapply the changes.
> PLEASE Make sure you allow anyother parameters to be sent to the actual build comand.
> For the GOD sake only include KnownPlatforms as platforms and everything else send it to the actual build command.
> We have added this code to cli.js
> var tokens = remain.slice(1);
> tokens.forEach(function (option, index) {
> console.log("option", option, cordova_lib.cordova_platforms.hasOwnProperty(option));
> if (cordova_lib.cordova_platforms.hasOwnProperty(option)) {
> opts.platforms.push(option);
> } else {
> opts.options.push(option);
> }
> });
> And commented this one out
> //var badPlatforms = _.difference(opts.platforms, known_platforms);
> //badPlatforms.forEach(function (option) {
> // opts.options.push(option);
> //});
> //if( !_.isEmpty(badPlatforms) ) {
> // msg = 'Unknown platforms: ' + badPlatforms.join(', ');
> // throw new CordovaError(msg);
> //}
> Also commented this one
> //opts.options = downstreamArgs.concat(unparsedArgs);
> And works great.
> Then in your project template you should forward the arguments in file platforms/xxxx/cordova/build
> e.g. for IOS
> CONFIGURATION=Debug
> EMULATOR=1
> DEVICE=0
> declare -a SCHEME
> SCHEME=("-target" "$PROJECT_NAME")
> i=0
> args=
> for a; do
> ((i++));
> case "$a" in
> --debug) echo "ARG --debug";;
> --release) CONFIGURATION=Release;echo "ARG --release";;
> --device) EMULATOR=0;echo "ARG --device";;
> --emulator) echo "ARG --emulator";;
> -scheme) ((i++)); SCHEME=("-scheme" $i);echo "ARG=-scheme $i";;
> -target) ((i++)); SCHEME=("-target" $i);echo "ARG=-target $i";;
> PROVISIONING_PROFILE*) echo "ARG=$a";mp=${a:21}; uuid=`grep -aA1 UUID ${mp} | grep -o "[-A-Z0-9]\{36\}"`;args="$args PROVISIONING_PROFILE=\"$uuid\"";echo " => extracted uuid=$uuid";;
> *) echo "ARG=$a";args="$args \"$a\"";;
> esac
> shift
> done
> eval set -- $args
> set +x;
> if (( $EMULATOR )); then
> exec xcodebuild -project "$PROJECT_NAME.xcodeproj" -arch i386 -target "$PROJECT_NAME" -configuration $CONFIGURATION -sdk iphonesimulator build VALID_ARCHS="i386" CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build/emulator" SHARED_PRECOMPS_DIR="$PROJECT_PATH/build/sharedpch" "$@"
> else
> exec xcodebuild -xcconfig "$CORDOVA_PATH/build$(echo -$CONFIGURATION | tr '[:upper:]' '[:lower:]').xcconfig" -project "$PROJECT_NAME.xcodeproj" ARCHS="armv7 armv7s arm64" "${SCHEME[@]}" -configuration $CONFIGURATION -sdk iphoneos build VALID_ARCHS="armv7 armv7s arm64" CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build/device" SHARED_PRECOMPS_DIR="$PROJECT_PATH/build/sharedpch" "$@"
> fi
> Notice the "$@" that was missing from your templates
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org