For anyone working with NativeScript and macOS-11, I found that you can't uninstall cocoapods and downgrade it to a lower version. So you need to go the approach of updating the Podfile. The Podfile isn't provisioned until after you run a build at least once, so you need to build, replace with your own, then build again.
Azure Pipeline
pool:
vmImage: 'macOS-11'
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.16.1'
displayName: 'Install Node.js'
- task: DownloadSecureFile@1
name: releaseJksFile
displayName: 'download android keystore file'
inputs:
secureFile: 'release.jks'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: AppleCertificate.p12
certPwd: $(AppleCertificatePassword)
keychain: 'temp'
deleteCert: true
displayName: Install Apple Certificate
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'AppleReleaseProfile.mobileprovision'
removeProfile: true
displayName: 'Install Apple Provisioning Profile'
# Optional... was running into build issues with latest version
#downgrading cocoapods version
- script: |
$ANDROID_HOME/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
displayName: 'Remove Android 31 SDK'
- script: |
pip install six
npm install -g @angular/cli nativescript
tns clean
npm install
mkdir $(Build.ArtifactStagingDirectory)/android
mkdir $(Build.ArtifactStagingDirectory)/iphoneos
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/iOS/Info.plist
sed -i -e 's/1000000/10$(Build.BuildId)/g' App_Resources/Android/src/main/AndroidManifest.xml
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/Android/src/main/AndroidManifest.xml
tns build android --env.production --release --key-store-path '$(releaseJksFile.secureFilePath)' --key-store-password '$(KeyStorePassword)' --key-store-alias '$(KeyAlias)' --key-store-alias-password '$(KeyPassword)' --bundle
cp -rf "platforms/android/app/build/outputs/apk/release/" "$(Build.ArtifactStagingDirectory)/android"
echo "uninstalling all cocoapods versions"
sudo gem uninstall cocoapods -ax
echo "installing cocoapods version latest"
sudo gem install cocoapods
tns run ios --provision #see what provisioning profile and certificate are installed... helpful for debugging
tns build ios #creates podfile we are going to replace
cp -rf Podfile platforms/ios/Podfile
rm platforms/ios/Podfile.lock
cd platforms/ios
pod install
cd ../../
tns build ios --env.production --release --bundle #creates xcworkspace
displayName: 'Setup/Build'
- task: Xcode@5
inputs:
actions: 'build'
scheme: 's'
sdk: 'iphoneos'
configuration: 'Release'
exportPath: '$(Build.ArtifactStagingDirectory)/iphoneos/'
packageApp: true
xcWorkspacePath: 'platforms/ios/s.xcworkspace'
xcodeVersion: 'default' # Options: 8, 9, 10, default, specifyPath
signingOption: 'manual'
signingIdentity: '$(AppleCertificateSigningIdentity)'
provisioningProfileUuid: '$(AppleProvisioningProfileUuid)'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
Podfile (place at the root of project dir)
use_frameworks!
target "s" do
# Begin Podfile - /Users/runner/work/1/s/node_modules/@nativescript/secure-storage/platforms/ios/Podfile
pod 'SAMKeychain', '~> 1.5.3'
# End Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
post_installNativeScript_CLI_Architecture_Exclusions_0 installer
end
# Begin Podfile - /Users/runner/work/1/s/platforms/ios/Podfile-exclusions
def post_installNativeScript_CLI_Architecture_Exclusions_0 (installer)
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete "VALID_ARCHS"
config.build_settings["EXCLUDED_ARCHS_x86_64"] = "arm64 arm64e"
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "i386 armv6 armv7 armv7s armv8 $(EXCLUDED_ARCHS_$(NATIVE_ARCH_64_BIT))"
config.build_settings["EXCLUDED_ARCHS[sdk=iphoneos*]"] = "i386 armv6 armv7 armv7s armv8 x86_64"
end
end
# End Podfile
end