Merge pull request #647 from hiddify/ios

Ios
This commit is contained in:
Hiddify
2024-03-13 14:40:20 +01:00
committed by GitHub
5 changed files with 100 additions and 57 deletions

View File

@@ -36,15 +36,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2.12.0 #issue with 2.13
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: 'stable'
cache: true
- name: Prepare
run: make linux-prepare
- name: Test
run: flutter test
# - uses: subosito/flutter-action@v2.12.0 #issue with 2.13
# with:
# flutter-version: ${{ env.FLUTTER_VERSION }}
# channel: 'stable'
# cache: true
# - name: Prepare
# run: make linux-prepare
# - name: Test
# run: flutter test
- name: make draftBuildCode
id: draftBuildCode
@@ -80,11 +80,50 @@ jobs:
os: macos-13
aarch: universal
targets: dmg,pkg
- platform: ios
os: macos-13
aarch: universal
filename: hiddify-ios
targets: ipa
runs-on: ${{ matrix.os }}
steps:
- name: checkout
uses: actions/checkout@v3
- name: Import Apple Codesign Certificates
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }}
uses: apple-actions/import-codesign-certs@v2
with:
p12-file-base64: "${{ secrets.APPLE_CERTIFICATE_P12 }}"
p12-password: "${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }}"
- name: Import Apple Mobile Provisioning Profile
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }}
run: |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
echo "${{secrets.APPLE_MOBILE_PROVISIONING_PROFILES_TARGZ_BASE64}}"|base64 --decode | tar xz -C ~/Library/MobileDevice/Provisioning\ Profiles
# echo "${{secrets.APPLE_DEVLOP_PROVISIONING_PROFILES_TARGZ_BASE64}}"|base64 --decode | tar xz -C ~/Library/MobileDevice/Provisioning\ Profiles
- name: Download Provisioning Profile
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }}
uses: Apple-Actions/download-provisioning-profiles@v1
with:
bundle-id: app.hiddify.com
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
- name: Download Provisioning Profile SingBoxPacketTunnel
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }}
uses: Apple-Actions/download-provisioning-profiles@v1
with:
bundle-id: app.hiddify.com.SingBoxPacketTunnel
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
- name: Setup Flutter
uses: subosito/flutter-action@v2.12.0 #issue with 2.13
@@ -112,10 +151,6 @@ jobs:
run: |
make ${{ matrix.platform }}-install-dependencies
- name: Prepare for ${{ matrix.platform }}
run: |
make ${{ matrix.platform }}-prepare
tree
- name: Setup Android Signing Properties
if: ${{ inputs.upload-artifact && startsWith(matrix.platform,'android') }}
@@ -131,42 +166,16 @@ jobs:
run: |
[IO.File]::WriteAllBytes("windows\sign.pfx", [Convert]::FromBase64String("${{ secrets.WINDOWS_SIGNING_KEY }}"))
(Get-Content "windows\packaging\msix\make_config.yaml") -replace '^certificate_password:.*$', 'certificate_password: ${{ secrets.WINDOWS_SIGNING_PASSWORD }}' | Set-Content "windows\packaging\msix\make_config.yaml"
- name: Setup Apple certificate and provisioning profile
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }}
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.APPLE_BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PROVISION_PROFILE_BASE64 }}
BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
- name: Temporary disable Permission Handler for windows due to its issue in permission
if: ${{ startsWith(matrix.platform,'windows') }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
PP_PACKET_TUNNEL_PATH=$RUNNER_TEMP/build_pppt.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
echo -n "$BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PACKET_TUNNEL_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PACKET_TUNNEL_PATH ~/Library/MobileDevice/Provisioning\ Profiles
(Get-Content -Path "pubspec.yaml") -notmatch "permission_handler" | Set-Content -Path "pubspec.yaml"
- name: Prepare for ${{ matrix.platform }}
run: |
make ${{ matrix.platform }}-prepare
tree
- name: Build ${{ matrix.platform }}
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
@@ -235,6 +244,7 @@ jobs:
FILENAME=${!KEY}
echo "For $EXT ($KEY) filename is ${FILENAME}"
mv dist/*/*.$EXT tmp_out/${FILENAME}.$EXT
ls tmp_out
chmod +x tmp_out/${FILENAME}.$EXT
if [ "${{matrix.platform}}" == "linux" ];then
cp ./.github/help/linux/* tmp_out/
@@ -242,7 +252,8 @@ jobs:
cp ./.github/help/mac-windows/* tmp_out/
fi
if [[ "${{matrix.platform}}" == 'ios' ]];then
mv tmp_out/${FILENAME}.$EXT bin/${FILENAME}.$EXT
echo mv tmp_out/${FILENAME}.$EXT out/
mv tmp_out/${FILENAME}.$EXT out/
else
cd tmp_out
# 7z a ${FILENAME}.zip ./
@@ -266,7 +277,14 @@ jobs:
name: artifact
path: ./out
retention-days: 2
- name: 'Upload app to TestFlight'
if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') && inputs.tag-name != 'draft' }}
uses: apple-actions/upload-testflight-build@v1
with:
app-path: 'out/Hiddify-iOS.ipa'
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
update-draft:
permissions: write-all
if: ${{ inputs.upload-artifact }}
@@ -315,7 +333,6 @@ jobs:
tag_name: 'draft'
body_path: './release.md'
prerelease: true
upload-release:
permissions: write-all
if: ${{ inputs.upload-artifact && inputs.tag-name != 'draft' }}
@@ -362,4 +379,6 @@ jobs:
packageName: app.hiddify.com
releaseName: ${{ env.TAG_NAME }}
releaseFiles: ./hiddify-android-market.aab
track: 'beta'
track: 'beta'

View File

@@ -2,7 +2,7 @@ name: dev i new
on:
push:
branches:
- ios
- ios2
paths-ignore:
- '**.md'
- 'docs/**'

View File

@@ -2,7 +2,7 @@ name: dev i
on:
push:
branches:
- ios
- ios2
paths-ignore:
- '**.md'
- 'docs/**'

View File

@@ -58,6 +58,7 @@ prepare:
@echo make ios-prepare
windows-prepare: get-geo-assets get gen translate windows-libs
ios-prepare: get-geo-assets get gen translate ios-libs
macos-prepare: get-geo-assets get gen translate macos-libs
linux-prepare: get-geo-assets get gen translate linux-libs
@@ -77,7 +78,29 @@ macos-install-dependencies:
dart pub global activate flutter_distributor
ios-install-dependencies:
echo "not yet implemented"
if [ "$(flutter)" = "true" ]; then
curl -l -o ~/Downloads/flutter_macos_3.19.3-stable.zip https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.19.3-stable.zip;
mkdir -p ~/develop;
cd ~/develop;
unzip ~/Downloads/flutter_macos_3.19.3-stable.zip;
export PATH="$$PATH:$$HOME/develop/flutter/bin";
echo 'export PATH="$$PATH:$$HOME/develop/flutter/bin"' >> ~/.zshrc;
export PATH="$PATH:$HOME/develop/flutter/bin";
echo 'export PATH="$PATH:$HOME/develop/flutter/bin"' >> ~/.zshrc;
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
curl -sSL https://get.rvm.io | bash -s stable
brew install openssl@1.1
PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig rvm install 2.7.5
sudo gem install cocoapods -V
fi
brew install create-dmg tree
npm install -g appdmg
dart pub global activate flutter_distributor
android-install-dependencies:
echo "nothing yet"
@@ -223,4 +246,5 @@ ios-temp-prepare:
flutter build ios-framework
cd ios
pod install

View File

@@ -63,7 +63,7 @@ Future<void> lazyBootstrap(
);
final enableAnalytics =
true || await container.read(analyticsControllerProvider.future);
await container.read(analyticsControllerProvider.future);
if (enableAnalytics) {
await _init(
"analytics",