blog

フラッター1キーは、ipa、apkのインストールパッケージをアップロードするタンポポをパックする

検証は、フラッタービルドiOSは、ipaパッケージが大きすぎるパッケージング正常で、コードの難読化を設定するためのサポートをヒット。...

Jun 9, 2020 · 4 min. read
シェア

経験は、iOSのフラッタービルドがipaパッケージが大きすぎるヒットすることを証明し、通常のパックにxcodebuildを使用し、難読化コードを設定サポートしています。 iOSは、署名の理由のパッケージが失敗した場合は、まずXcodeを使用して、それに一度ノーマルをヒットします。

台本通り:

##  
SECONDS=0
# パッケージングタイプ1:android 2:ios any:他のすべて
platform=0
## タンポポAPIKey https://..//pi
pgyer_api_key=""
## タンポポの接尾辞
pgyer_subfix_url=""
## タンポポのインストールパスワード
pgyer_pwd=""
# コード難読化を使用しない
#obfuscate=""
# コードの難読化を有効にする
obfuscate="--obfuscate --split-debug-info=app"
# パッケージの種類を選択する
read -n1 -p "パッケージタイプ1を設定する:android 2:ios any:他のすべて[1/2/any]? " -t 5 answer
platform=${answer}
echo "クリーンアップビルド"
find . -d -name "build" | xargs rm -rf
flutter clean
echo "パッケージプラグインリソースを取得するために開始する"
flutter packages get
# iOS
build_ios() {
cd ios
project=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`
## true or false デフォルトtrue
workspace_flag="true"
## Release or Debug デフォルトリリース
configuration="Release"
## Bitcodeオンデフォルトを切り替える
compileBitcode=true
## 署名モードデフォルトの自動署名は、パッケージが失敗した場合、最初にXcodeを使用して、通常の上に一度だけ再生する
signingStyle="automatic"
## 署名
### development
### ad-hoc
### app-store
### enterprise
methodStyle="ad-hoc"
## パッケージングエクスポートディレクトリ
path_app="../app"
## の作業ディレクトリビルドディレクトリ.gitignore無視を追加する
path_build="build"
path_archive="${path_build}/${project}.xcarchive"
path_export_options="${path_build}/ExportOptions.plist"
if [ -d "${path_build}" ]
then
 echo " ${path_build} "
else
 echo "ディレクトリを作成する${path_build}"
 mkdir -pv "${path_build}"
fi
funcExpertOptionFile() {
 if [ -f "$path_export_options" ]
 then
 rm -rf "$path_export_options"
 fi
 /usr/libexec/PlistBuddy -c "Add :compileBitcode bool $compileBitcode" "$path_export_options"
 /usr/libexec/PlistBuddy -c "Add :signingStyle string $signingStyle" "$path_export_options"
 /usr/libexec/PlistBuddy -c "Add :method string $methodStyle" "$path_export_options"
}
## ExportOptionsを作成する.plist 
funcExpertOptionFile
if $workspace_flag
then
 ## プロジェクトをクリーンアップする
 xcodebuild clean -workspace ${project}.xcworkspace \
 -scheme ${project} \
 -configuration ${configuration}
 ##  
 xcodebuild archive -workspace ${project}.xcworkspace \
 -scheme ${project} \
 -configuration ${configuration} \
 -archivePath ${path_archive}
else
 ## プロジェクトをクリーンアップする
 xcodebuild clean -project ${project}.xcworkspace \
 -scheme ${project} \
 -configuration ${configuration}
 ##  
 xcodebuild archive -project ${project}.xcworkspace \
 -scheme ${project} \
 -configuration ${configuration} \
 -archivePath ${path_archive}
fi
## 判定結果をアーカイブする
if [ -d "${path_archive}" ]
then
 echo "** Finished archive. Elapsed time: ${SECONDS}s **"
 echo
else
 exit 1
fi
## ipaをエクスポートする
xcodebuild -exportArchive \
-archivePath ${path_archive} \
-exportPath ${path_app} \
-exportOptionsPlist ${path_export_options}
## ipa 
file_ipa="${path_app}/${project}-$(date "+%Y%m%d%H%M").ipa"
mv "${path_app}/${project}.ipa" "${file_ipa}"
## エクスポートipaの結果を判断する
if [ -f "${file_ipa}" ]
then
 echo "** Finished export. Elapsed time: ${SECONDS}s **"
 rm -rf "$path_build"
 echo $file_ipa
 say "iOSパッケージ化に成功する"
 if [[ -n "${pgyer_api_key}" ]]
 then
 #pgyerにアップロードする
 echo "Dandelionにアップロードされている..."
 echo
 curl -F "file=@${file_ipa}" -F "_api_key=${pgyer_api_key}" -F "buildInstallType=2" -F "buildPassword=${pgyer_pwd}" -F "buildUpdateDescription=スクリプトが自動的にアップロードされた" https://..///ad
 # rm -rf ${file_ipa}
 echo
 say "iOS正常にタンポポをアップロードする"
 echo
 if [[ -n "${pgyer_subfix_url}" ]]
 then
 open https://..om/${__rl}
 fi
 else
 open $path_app
 fi
else
 echo "エラーが発生し、エラーの原因を見つけるためにXcodeを開く"
 say "iOSパッケージングの失敗"
 exit 1
fi
echo "------------------------------------------------------------------------------"
echo " Congrats"
echo " ${project} successfully published"
echo " Finished. Elapsed time: ${SECONDS}s"
echo " https://..io"
echo " Tell your friends!"
echo "------------------------------------------------------------------------------"
echo
cd ..
}
##==================================apk==================================
if [[ ${platform} -ne 2 ]]; then
 echo "ビルドapkを開始する"
 flutter build apk $obfuscate --release --verbose #--no-codesign
 echo "build apk "
 file_apk=android-$(date "+%Y%m%d%H%M").apk
 cp -r build/app/outputs/apk/release/app-release.apk app/$file_apk
 if [[ -f app/${file_apk} ]]
 then
 say "androidパッケージ化に成功する"
 if [[ -n "${pgyer_api_key}" ]]
 then
 #pgyerにアップロードする
 echo "Dandelionにアップロードされている..."
 echo
 curl -F "file=@app/${file_apk}" -F "_api_key=${pgyer_api_key}" -F "buildInstallType=2" -F "buildPassword=${pgyer_pwd}" -F "buildUpdateDescription=スクリプトが自動的にアップロードされた" https://..///ad
 # rm -rf app/${file_ipa}
 echo
 say "android正常にタンポポをアップロードする"
 echo
 if [[ -n "${pgyer_subfix_url}" ]]
 then
 open https://..om/${__rl}
 fi
 else
 open app
 fi
 else
 echo "エラーが発生し、エラーの原因を見つけるためにAndroid Studioを開く"
 say "androidパッケージングの失敗"
 fi
 echo " Finished. Elapsed time: ${SECONDS}s"
fi
##==================================apk==================================
##==================================ipa==================================
if [[ ${platform} -ne 1 ]]; then
 echo "iosのビルドを開始する"
 flutter build ios $obfuscate --release --verbose #--no-codesign
 echo "build ios "
 build_ios
fi
##==================================ipa==================================
Read next

JDKとJREの違いは何か?

JREは、Java仮想マシン、Java基本クラスライブラリを含むJava実行環境です。jdkはjava開発キットで、プログラマーがjava言語を使ってjavaプログラムを書くために必要な開発ツールキットです。

Jun 8, 2020 · 2 min read

J13 行間の色変更

Jun 6, 2020 · 3 min read

22.ブラケット世代

Jun 6, 2020 · 1 min read