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:53:18 UTC

[jira] [Commented] (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:comment-tabpanel&focusedCommentId=15138960#comment-15138960 ] 

Sergey Grebnov commented on CB-8326:
------------------------------------

Agree w/ Andrew, this is already supported, see 
http://cordova.apache.org/docs/en/latest/guide/platforms/ios/tools.html#signing-the-app

> 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: Improvement
>          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