เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Androidเบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ cryptoarmpkcs เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบ—เบตเบกเบทเบ–เบท, เบ„เบท Android.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ cryptoarmpkcs เปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบ„เบงเบ™เบ›เบฐเบชเบปเบšเบเบฑเบšเบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบงเบ”เบชเบญเบšเบฅเบฒเบเป€เบŠเบฑเบ™เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ tokens cryptographic เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™ PKCS #11 เปเบฅเบฐ/เบซเบผเบท เบ•เบนเป‰เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบ›เบญเบ”เป„เบž PKCS #12. เบกเบฑเบ™เบ•เป‰เบญเบ‡เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ PKCS #12 เปƒเบ™เบซเบผเบฒเบเป†เบเปเบฅเบฐเบ™เบตเบเบฒเบเป€เบ›เบฑเบ™เป€เบเบทเบญเบšเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญ PKCS #11 tokens เบ”เบฝเบงเบเบฑเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบ—เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” cryptoarmpkcs เป„เบ›เบเบฑเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android เบ”เป‰เบงเบเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš PKCS#12 เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบ›เบญเบ”เป„เบž.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เบ—เบฑเบ™เบ—เบตเบงเปˆเบฒเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบ—เบต C เปเบฅเบฐ Tcl / Tk, porting เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ”เป†. เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบเป‰เบญเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต Androwish. เบกเบต unfolding เปเบฅเบฐ เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹ เบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ (เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™ Linux - Mageia-7.0). เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เปƒเบซเป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบซเบ™เบถเปˆเบ‡ script เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ Android Command Line Tools (sdk-tools-linux-xxxx.zip):

#!/bin/sh
if [ $# -ne 1   ]
    then 
	echo "./InstallAndroidSDK.sh <sdk-tools-linux-xxxxxxxx.zip>"
	echo "ะะต ัƒะบะฐะทะฐะฝ ะฐั€ั…ะธะฒ ะธะปะธ ั‡ะธัะปะพ ะฟะฐั€ะฐะผะตั‚ั€ะพะฒ ะฑะพะปัŒัˆะต 1"
	exit 1
fi
if [ ! -f $1 ]
    then 
	echo "./InstallAndroidSDK.sh <sdk-tools-linux-xxxxxxxx.zip>"
	echo "ะฐั€ั…ะธะฒ $1 ะพั‚ััƒั‚ัั‚ะฒัƒะตั‚"
	exit 1
fi
#ะ ะฐัะฟะฐะบะพะฒั‹ะฒะฐะตะผ SDK-TOOLS ะฒ ะฟะฐะฟะบัƒ tools
#unzip sdk-tools-linux-4333796.zip
unzip $1
#ะกะพะทะดะฐะตะผ ะฟะฐะฟะบัƒ android-sdk-linux
mkdir android-sdk-linux
#ะŸะตั€ะตะผะตั‰ะฒะตะผ ะฟะฐะฟะบัƒ tools ะฒ android-sdk-linux
mv tools android-sdk-linux
cd android-sdk-linux/tools/bin
./sdkmanager "platform-tools" "platforms;android-29"  

เบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Androwish เบ›เบฐเบเบญเบšเบกเบตเบชเบญเบ‡เบ™เบฒเบเบžเบฒเบชเบฒ, undrowish-xxx เปเบฅเบฐ vanillawish-xxx, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ "balalaikas" (เบŠเบธเบ”) เบฅเบงเบกเบขเบนเปˆเปƒเบ™ Androwish เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ undrowish เปเบฅเบฐ vanillawish เปเบกเปˆเบ™เบงเปˆเบฒ vanillawish เบกเบต backend เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ SDL / AGG / freetype:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบชเบญเบ‡เบชเบดเปˆเบ‡เบญเปเบฒเบ™เบงเบเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰ Android เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบฅเบฐเบ•เบปเบง emulator เบ‚เบญเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบกเบฒเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ™เบตเป‰เปเบกเปˆเบ™, เปเบ™เปˆเบ™เบญเบ™, undroidwish-xxx.

เบŠเบธเบ”เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบš Android เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก AWSDK. เบ•เบปเป‰เบ™เป„เบกเป‰เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบเป‰เบฒเบเป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต ~/AWSDK/เบŠเบฑเบšเบชเบดเบ™/เปเบญเบฑเบš. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เป‚เบกเบ”เบนเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ›เบฑเบ™ main.tcl. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ balalaikas เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ•เป‰เบญเบ‡เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต ~/AWSDK/libs/x86 เบชเปเบฒเบฅเบฑเบš emulator เปเบฅเบฐ ~/AWSDK/libs/armeabi เบชเปเบฒเบฅเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡:

$wish ~/AWSDK/tools/bones

เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบ™เบฒเบ‡:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบŠเบธเบ” apk เบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบฒเบˆเบฐเบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต ~/AWSDK/build/outputs/apk.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบซเบผเบท emulator เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบŠเบธเบ”เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰เบ—เบฑเบ™เบ—เบต.
เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ”เบ”เบตเบšเบฑเบ.

เปเบ•เปˆเปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบกเบฑเบ™?

เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบซเบ™เป‰เบฒเบˆเป. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบญเบญเบโ€‹เปเบšเบšโ€‹เบ•เบปเป‰เบ™โ€‹เบ•เป (เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹)โ€‹. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ”เบฝเบงเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ›เบปเบเบเบฐเบ•เบด:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบชเบฒเบกเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Android:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบ”เบฒ, เบกเบฑเบ™เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบžเบฒเบเบชเปˆเบงเบ™. เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”, เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”, เบกเบตเบŠเบทเปˆเบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เปเบฅเบฐเป‚เบฅเป‚เบเป‰เบ‚เบญเบ‡เบกเบฑเบ™.

เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เป‚เบฅเป‚เบเป‰เบ‚เบญเบ‡เบœเบนเป‰เบœเบฐเบฅเบดเบ”, เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบชเบฒเบกเบ›เบธเปˆเบกเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบซเบ™เป‰เบฒ.
เบซเบ™เป‰เบฒเบ–เบทเบเบ‚เบฝเบ™เป‚เบ”เบเปƒเบŠเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบœเป‰เบฒเปƒเบš. เบซเบ™เป‰เบฒเปƒเบŠเป‰เบ›เบธเปˆเบกเบชเบญเบ‡เบ›เบฐเป€เบžเบ”: เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบชเบตเปˆเบซเบฅเปˆเบฝเบกเปเบ› (เบเบฒเบ‡), เปเบฅเบฐเบญเบตเบเบชเบญเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบชเบตเปˆเบซเบฅเปˆเบฝเบกเบ—เบตเปˆเบกเบตเบกเบธเบกเบกเบปเบ™. A balalaika เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ›เบธเปˆเบกเบ—เบตเปˆเบกเบตเบกเบธเบกเบกเบปเบ™ tkpath. เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, balalaika เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบ›เบฐเบ—เบฑเบšเปƒเบˆเบซเบผเบฒเบ. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเป‰เบฒเปƒเบš, เป€เบฅเบ‚เบฒเบ„เบฐเบ™เบดเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡เบŠเป‰เบฒเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™ script create_titul_page.tcl เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เบ—เบธเบเป†เบ„เบปเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบกเบฑเบ™เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบงเบดเป„เบชเบ—เบฑเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

script create_titul_page.tcl

package require Tk
package require tkpath 0.3.0
global mydir
set mydir [file dirname [info script]]
#ะ“ั€ัƒะทะธะผ ะบะฐั€ั‚ะธะฝะบะธ
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะดัƒะบั‚ะฐ
image create photo logo_product -file [file join $mydir "imageme" "validcertkey_51x24.png"] 
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปั
image create photo logo_orel -file [file join $mydir "imageme" "ั_ะพั€ะตะป_425x200.png"] -format "png -alpha 1.0"
#ะะฝะดั€ะพะธะดะฐ ั tcl/tk
image create photo logo_and -file [file join $mydir "imageme" "AndTk_inv_147x173.png"] -format "png -alpha 1.0"
#ะกะฒะธั‚ะพะบ ะพะฟะตั‡ะฐั‚ะฐะฝะฝั‹ะน
image create photo svitok -file [file join $mydir "imageme" "blue_svitok.png"] -format "png -alpha 1.0"
#ะŸะปะธั‚ะบะฐ
image create photo tileand -file [file join $mydir "imageme" "tile_green_and_32x32.png"] -format "png -alpha 1.0"
#ะฃะฒะตะปะธั‡ะธั‚ัŒ/ัƒะผะตะฝัŒัˆะธั‚ัŒ (ะพั‚ั€ะธั†ะฐั‚ะตะปัŒะฝะพะต ะทะฝะฐั‡ะตะฝะธะต - ัƒะผะตะฝัŒัˆะตะฝะธะต)
proc scaleImage {im xfactor {yfactor 0}} {
set mode -subsample
if {$xfactor>=0 && $yfactor>=0} {
set mode -zoom
} else {
set xfactor [expr $xfactor * -1]
}
if {$yfactor == 0} {set yfactor $xfactor}
set t [image create photo]
$t copy $im
$im blank
$im copy $t -shrink $mode $xfactor $yfactor
image delete $t
}
proc createtile {w  backg} {
image create photo tiled
tiled copy $backg -to 0 0 $::scrwidth $::scrheight -shrink
$backg copy tiled
image delete tiled
# ะœะพัั‚ะธะผ ั…ะพะปัั‚
$w create image 0 0  
-image $backg  
-anchor nw
}
proc create_rectangle  {canv img x1 y1 x2 y2 color alfa {wbd 0} {colorline black} } {
image create photo $img -format "default -colorformat  rgb"
set rgb1 [winfo rgb $canv $color]
set cr  [lindex $rgb1 0]
set cg  [lindex $rgb1 1]
set cb  [lindex $rgb1 2]
set fill [format "#%04x%04x%04x" $cr $cg $cb ]
#ะกะพะทะดะฐะตะผ ั†ะฒะตั‚ะฝะพะน ะฟั€ะฐัะผะพัƒะณะพะปัŒะฝะธะบ
$img put $fill -to 0 0 [expr {$x2 - $x1}] [expr {$y2 -$y1}]
#ะกะพั…ั€ะฐะฝัะตะผ ะบะฐั€ั‚ะธะฝะบัƒ
set dimg [$img data -format png]
#ะกะพะทะดะฐะตะผ image ั ัƒั‡ะตั‚ะพะผ alpha ะบะฐะฝะฐะปะฐ
image create photo $img -data $dimg -format "png -alpha $alfa"
#    $img put [list $rgb1] -to 0 0 [expr {$x2 - $x1}] [expr {$y2 -$y1}]
#ะžั‚ะพะฑั€ะฐะถะฐะตะผ ั†ะฒะตั‚ะฝะพะน ะฟั€ัะผะพัƒะณะพะปัŒะฝะธะบ
set imgr [$canv create image $x1 $y1 -image $img -anchor nw] 
set cc [subst {butImg $img}]
$canv bind $imgr <ButtonPress-1> $cc
#ะžะบะพะฝั‚ะพะฒะบะฐ ะฒะพะบั€ัƒะณ ั†ะฒะตั‚ะฝะพะณะพ ะฟั€ัะผะพัƒะณะพะปัŒะฝะธะบะฐ
if {$wbd > 0 } {
set item [$canv create rect $x1 $y1 $x2 $y2 -outline $colorline -width $wbd ]
$canv bind $item <ButtonPress-1> $cc
}
return $imgr
}
proc butImg {img} {
tk_messageBox -title "ะšะฝะพะฟะบะฐ" -icon info -message "ะะฐะถะฐะปะธ ะบะฝะพะฟะบัƒ=$img" -detail "::screenwidth=$::scrwidthn::screenheight=$::scrheight" -parent .
if {$img == "exit"} {
set answer [tk_dialog .dialog2 "ะšะพะฝะตั† ั€ะฐะฑะพั‚ั‹" "ะ’ั‹ ะดะตะนัั‚ะฒะธั‚ะตะปัŒะฝะพnั…ะพั‚ะธั‚ะต ะฒั‹ะนั‚ะธ?" question 0 "ะ”ะฐ" "ะะตั‚" ]
if {$answer == 0} {
exit
}	
}
}
proc page_titul {fr  logo_manufacturer} {
global mydir
#ะกะพะทะดะฐะตะผ ั…ะพะปัั‚ ะฝะฐ ะฒะตััŒ ัะบั€ะฐะฝ
tkp::canvas $fr.can -borderwidth 0 -height [winfo screenheight .] -width [winfo screenwidth .] -relief flat
#ะœะพัั‚ะธะผ ั…ะพะปัั‚ ะฟะปะธั‚ะบะพะน 
createtile "$fr.can"  "tileand"
pack $fr.can  -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0
#ะ’ั‹ั‡ะธัะปัะตะผ ะบะพะพั€ะดะธะฝะฐั‚ั‹ ะดะปั ะปะพะณะพั‚ะธะฟะฐ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปั
#update ั‡ั‚ะพะฑั‹ ะพะฑะฝะพะฒะธะปะฐััŒ ะธะฝั„ะพั€ะผะฐั†ะธั ะฒ ะ‘ะ” ะพะฑ ะพะบะฝะฐั…
update
#    set aa [winfo height $fr.labtitul]
set aa $::padly
#ะฆะตะฝั‚ั€ะธั€ัƒะตะผ ะปะพะณะพั‚ะธะฟ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะฐ
set ha [image width $logo_manufacturer]
set xman [expr {($::scrwidth - $ha) / 2 }]
$fr.can create image $xman $aa -image $logo_manufacturer -anchor nw -tag tag_logo
set blogo [$fr.can bbox tag_logo]
set wexit [lindex $blogo 3]
if {$::typetlf } {
set dlx [expr {$::padlx / 1}]
$fr.can create text [expr $dlx + 6] [expr {$wexit + $::padly + 6}] -anchor nw -text "ะญะปะตะบั‚ั€ะพะฝะฝะฐั ะฟะพะดะฟะธััŒ" -fill black -font {{Roboto Condensed Medium} 15 }
$fr.can create text $dlx [expr {$wexit + $::padly}] -anchor nw -text "ะญะปะตะบั‚ั€ะพะฝะฝะฐั ะฟะพะดะฟะธััŒ" -fill white -font {{Roboto Condensed Medium} 15 } -tag id_text0
update
set blogo [$fr.can bbox id_text0]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 4] [expr {$wexit + $::padly + 4 - 80}] -anchor nw -text "ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ Android" -fill black -font {{Roboto Condensed Medium} 13}
$fr.can create text $dlx [expr {$wexit + $::padly - 80}] -anchor nw -text "ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ Android" -fill white -font {{Roboto Condensed Medium} 13} -tag id_text1
set blogo [$fr.can bbox id_text1]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 3] [expr {$wexit + $::padly + 3 - 50}] -anchor nw -text "โ„– 63 ะคะ— "ะžะฑ ัะปะตะบั‚ั€ะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั‚ 6 ะฐะฟั€ะตะปั 2011 ะณะพะดะฐ"" -fill black -font {{Roboto} 10}
$fr.can create text $dlx [expr {$wexit + $::padly - 50}] -anchor nw -text "โ„– 63 ะคะ— "ะžะฑ ัะปะตะบั‚ั€ะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั‚ 6 ะฐะฟั€ะตะปั 2011 ะณะพะดะฐ"" -fill white -font {{Roboto} 10} -tag id_text2
set blogo [$fr.can bbox id_text2]
set wexit [lindex $blogo 3]
$fr.can create text [expr $dlx + 2] [expr {$wexit + $::padly + 2 - 40}] -text "ะะฒั‚ะพั€ั‹: ะ’.ะ. ะžั€ะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]" 
-anchor nw -fill black  -font {{Roboto} 9}
$fr.can create text $dlx [expr {$wexit + $::padly - 40}] -text "ะะฒั‚ะพั€ั‹: ะ’.ะ. ะžั€ะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]" 
-anchor nw -fill white -tag id_text3  -font {{Roboto} 9}
} else {
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2}] -anchor nw -text "ะญะปะตะบั‚ั€ะพะฝะฝะฐั ะฟะพะดะฟะธััŒ" -fill black -font {{Nimbus Sans Narrow} 20}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -anchor nw -text "ะญะปะตะบั‚ั€ะพะฝะฝะฐั ะฟะพะดะฟะธััŒ" -fill white -font {{Nimbus Sans Narrow} 20} -tag id_text0
set blogo [$fr.can bbox id_text0]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2 - 20}] -anchor nw -text "ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ Android" -fill black -font {{Nimbus Sans Narrow} 18}
$fr.can create text $::padlx [expr {$wexit + $::padly - 20}] -anchor nw -text "ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ Android" -fill white -font {{Nimbus Sans Narrow} 18} -tag id_text1
set blogo [$fr.can bbox id_text1]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 2] [expr {$wexit + $::padly + 2}] -anchor nw -text "โ„– 63 ะคะ— "ะžะฑ ัะปะตะบั‚ั€ะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั‚ 6 ะฐะฟั€ะตะปั 2011 ะณะพะดะฐ"" -fill black -font {{Nimbus Sans Narrow} 14}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -anchor nw -text "โ„– 63 ะคะ— "ะžะฑ ัะปะตะบั‚ั€ะพะฝะฝะพะนnะฟะพะดะฟะธัะธ ะพั‚ 6 ะฐะฟั€ะตะปั 2011 ะณะพะดะฐ"" -fill white -font {{Nimbus Sans Narrow} 14} -tag id_text2
set blogo [$fr.can bbox id_text2]
set wexit [lindex $blogo 3]
$fr.can create text [expr $::padlx + 1] [expr {$wexit + $::padly + 1}] -text "ะะฒั‚ะพั€ั‹: ะ’.ะ. ะžั€ะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]" 
-anchor nw -fill black  -font {{Nimbus Sans Narrow} 12}
$fr.can create text $::padlx [expr {$wexit + $::padly}] -text "ะะฒั‚ะพั€ั‹: ะ’.ะ. ะžั€ะปะพะฒnhttp://soft.lissi.ru, http://www.lissi.run+7(495)589-99-53ne-mail: [email protected]" 
-anchor nw -fill white -tag id_text3  -font {{Nimbus Sans Narrow} 12} -tag id_text3
set blogo [$fr.can bbox id_text2]
}
set blogo [$fr.can bbox id_text3]
set wland [lindex $blogo 3]
$fr.can create image $::padlx $wland -image logo_and -anchor nw -tag tag_land
set ha [image height logo_and]
set wa [image width logo_and]
set ha1 [expr {$ha - ($ha / 2 ) }]
$fr.can create image [expr {$wa - 80 }] [expr {$wland + $ha1}] -image svitok -anchor nw -tag tag_land
if {$::typetlf} {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$wland + 120}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
set wd 8
set rr 18
} else {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$wland + 40}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
set wd 4
set rr 6
}
set g5 [$fr.can gradient create linear -stops {{0 lightgreen} {1 green}}] 
set S3 [$fr.can style create -stroke "skyblue" -fill  $g5 -strokewidth $wd  -fillopacity 0.6]
set im1 [$fr.can create prect $x1 $y1 $x2 $y2 -rx $rr -style $S3]
$fr.can bind $im1 <ButtonPress-1> {butImg "img1"}
#ะŸะตั‡ะฐั‚ะฐะตะผ ั‚ะตั…ั‚
set blogo [$fr.can bbox $im1]
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะกะฐะนั‚ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะฐ" -fill black -font {{Arial} 10 normal}] 
#ะฆะตะฝั‚ั€ะธั€ัƒะตะผ ั‚ะตั…ั‚
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
$fr.can bind $txt1 <ButtonPress-1> {butImg "img1"}
if {$::typetlf} {
set y1 [expr $y2 + 40]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
} else {
set y1 [expr {$y1 + 60}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
}
set im1 [create_rectangle $fr.can "but2" $x1 $y1 $x2 $y2 "#2b972d" 0.6 $wd "skyblue"]
#ะŸะตั‡ะฐั‚ะฐะตะผ ั‚ะตั…ั‚
set blogo [$fr.can bbox $im1]
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะŸะตั€ะตั…ะพะด ะฒ ะพัะฝะพะฒะฝะพะต ะผะตะฝัŽ" -fill black -font {{Roboto Condensed Medium} 12}] 
#ะฆะตะฝั‚ั€ะธั€ัƒะตะผ ั‚ะตะบัั‚
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
$fr.can bind $txt1 <ButtonPress-1> {butImg "but2"}
if {$::typetlf} {
set x1 [expr {$::padlx / 2}]
set y1 [expr $y2 + 40]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 120}]
} else {
set x1 [expr {$::padlx / 2}]
set y1 [expr {$y1 + 60}]
set x2 [expr {$::::scrwidth - $x1}]
set y2 [expr {$y1 + 40}]
}
set S3 [$fr.can style create -stroke skyblue -fill  $g5 -strokewidth $wd  -fillopacity 0.6]
set im1 [$fr.can create prect $x1 $y1 $x2 $y2 -rx $rr -style $S3]
set blogo [$fr.can bbox $im1]
$fr.can bind $im1 <ButtonPress-1> {butImg "exit"}
set by2 [lindex $blogo 3]
set by1 [lindex $blogo 1]
set bb [expr {($by2 - $by1) / 2}]
set bx2 [lindex $blogo 2]
set bx1 [lindex $blogo 0]
set bbx [expr {($bx2 - $bx1) / 2}]
set txt1 [$fr.can create text [expr {$x1 + $::padlx * 2}] [expr {$y1 + 1 }] -anchor nw -text "ะšะพะฝะตั† ั€ะฐะฑะพั‚ั‹" -fill black  -font {Arial 10 normal}]
$fr.can bind $txt1 <ButtonPress-1> {butImg "exit"}
set btxt1 [$fr.can bbox $txt1]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ Y
set ty2 [lindex $btxt1 3]
set ty1 [lindex $btxt1 1]
set tt [expr {$ty2 - $ty1}]
set tt [expr {$tt / 2}]
set offsy [expr {($by1 + $bb) - ($ty1 + $tt)}]
#ะกะผะตั‰ะตะฝะธะต ะฟะพ ะพัะธ X
set tx2 [lindex $btxt1 2]
set tx1 [lindex $btxt1 0]
set ttx [expr {$tx2 - $tx1}]
set ttx [expr {$ttx / 2}]
set offsx [expr {($bx1 + $bbx) - ($tx1 + $ttx)}]
$fr.can move $txt1 $offsx $offsy
}
#ะกะพะฑัั‚ะฒะตะฝะฝะพ ัะบั€ะธะฟั‚
#ะกั‡ะธั‚ั‹ะฒะฐะตะผ ั€ะฐะทะผะตั€ั‹ ัะบั€ะฐะฝะฐ
set ::scrwidth [winfo screenwidth .]
set ::scrheight [winfo screenheight .]
set ::typetlf 0
#ะŸั€ะพะฒะตั€ัะตะผ, ั‡ั‚ะพ ัั‚ะพ ั‚ะตะปะตั„ะพะฝ
if {$::scrwidth < $::scrheight} {
set ::typetlf 1
}
set ::padls 20
set ::padlx 15
set ::padly 15
if {$::typetlf} {
wm attributes . -fullscreen 1
scaleImage icon_openfile_18x16 3
scaleImage ::img::view_18x16 3
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปั
scaleImage logo_orel 2
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะดัƒะบั‚ะฒ
scaleImage logo_product 2
#ะะฝะดั€ะพะธะดะฐ tcl/tk
scaleImage logo_and 3
#ะกะฒะธั‚ะพะบ ะพะฟะตั‡ะฐั‚ะฐะฝะฝั‹ะน
scaleImage svitok 4
set ::padls 50
set ::padlx 75
set ::padly 50
} else {
#ะšะพะฝั„ะธะณัƒั€ะธั€ะพะฒะฐะฝะธะต ะฒะธะดะถะตั‚ะฐ ะฟะพะด ัะผะฐั€ั‚ั„ะพะฝ
scaleImage logo_orel -2
set ::scrwidth 370
set ::scrheight 700
wm minsize . $::scrwidth $::scrheight
set geometr $::scrwidth
append geometr "x"
append geometr $::scrheight
append geometr "+0+0"
wm geometry . $geometr
}
#ะกะพะทะดะฐะตะผ ะฝะฐะทะฒะฐะฝะธะต ะฟั€ะพะดัƒะบั‚ะฐ
set name_product "CryptoArmPKCS-A" 
label .labtitul -image logo_product -compound left -fg snow -text $name_product -font {Arial 10 bold} -anchor w  -width [winfo screenwidth .] -pady $::padls -padx 10 -bg #222222 
pack .labtitul -anchor nw -expand 0 -fill x -side top  -padx 1 -pady 0
#ะกะพะทะดะฐะตะผ ัั‚ะฐั€ั‚ะพะฒัƒัŽ ัั‚ั€ะฐะฝะธั†ัƒ
set i 0
ttk::frame .fr$i -pad 0 -padding 0
page_titul ".fr$i"  "logo_orel"
pack .fr$i -side top -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0 
update

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเบ„เบฃเบดเบšเบ™เบตเป‰, เปƒเบซเป‰เปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™ undroidwish เบซเบผเบท vanillawish utilities:

$ /usr/local/bin64/undroidwish-e5dc71ed9d-linux64   create_titul_page.tcl 

เบซเบผเบท

$/usr/local/bin64/vanillawish-e5dc71ed9d-linux64  create_titul_page.tcl 

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปƒเบ™ screenshot เบ—เปเบฒเบญเบดเบ”.

เบซเบ™เป‰เบฒเบ—เบตเบชเบญเบ‡เบฅเบฒเบเบŠเบทเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ cryptoarmpkcs-A utility. เปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เปเบกเปˆเบ™เบ›เบธเปˆเบก, เป€เบกเบทเปˆเบญเบ„เบฅเบดเบ, เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡. เป€เบฅเบ‚เบฒเบ„เบฐเบ™เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เบ›เบธเปˆเบกเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ„เบฃเบดเบš create_page_functions.tcl เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปœเป‰เบฒเบ—เบตเบชเบญเบ‡/functional เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบกเบฑเบ™เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

script create_page_functions.tcl

package require Tk
package require tkpath 0.3.0
global mydir
set mydir [file dirname [info script]]
#ะฃะฒะตะปะธั‡ะธั‚ัŒ/ัƒะผะตะฝัŒัˆะธั‚ัŒ (ะพั‚ั€ะธั†ะฐั‚ะตะปัŒะฝะพะต ะทะฝะฐั‡ะตะฝะธะต - ัƒะผะตะฝัŒัˆะตะฝะธะต)
proc scaleImage {im xfactor {yfactor 0}} {
set mode -subsample
if {$xfactor>=0 && $yfactor>=0} {
set mode -zoom
} else {
set xfactor [expr $xfactor * -1]
}
if {$yfactor == 0} {set yfactor $xfactor}
set t [image create photo]
$t copy $im
$im blank
$im copy $t -shrink $mode $xfactor $yfactor
image delete $t
}
proc createtile {w  backg} {
image create photo tiled
tiled copy $backg -to 0 0 $::scrwidth $::scrheight -shrink
$backg copy tiled
image delete tiled
# ะœะพัั‚ะธะผ ั…ะพะปัั‚
$w create image 0 0  
-image $backg  
-anchor nw
}
proc butCliked {num fr} {
pack forget  .fr1
set ::tekFrfunc $fr
pack $fr -side top -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0 
tk_dialog .dialog1 "Dear user:" "Button $num was clickednFr=$fr" info 0 OK 
}
proc butImg {img} {
tk_messageBox -title "ะšะฝะพะฟะบะฐ" -icon info -message "ะะฐะถะฐะปะธ ะบะฝะพะฟะบัƒ=$img" -detail "::screenwidth=$::scrwidthn::screenheight=$::scrheight" -parent .
if {$img == "exit"} {
set answer [tk_dialog .dialog2 "ะšะพะฝะตั† ั€ะฐะฑะพั‚ั‹" "ะ’ั‹ ะดะตะนัั‚ะฒะธั‚ะตะปัŒะฝะพnั…ะพั‚ะธั‚ะต ะฒั‹ะนั‚ะธ?" question 0 "ะ”ะฐ" "ะะตั‚" ]
if {$answer == 0} {
exit
}	
}
}
proc butReturn {} {
pack forget  $::tekFrfunc
pack .fr1 -side top -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0 
#    tk_dialog .dialog1 "Dear user:" "Button $num was clickednFr=$fr" info 0 OK 
}
proc page_func {fr tile titul functions} {
#ะšะฝะพะฟะบะธ  ะผะตะฝัŽ
upvar $functions but
#ะกะพะทะดะฐะตะผ ัˆั€ะธั„ั‚ ะดะปั ะบะฝะพะฟะพะบ
if {$::typetlf} {
set feFONT_button "-family {Roboto} -size 9 -weight bold -slant roman"
set widl 10
} else {
set feFONT_button "-family {Arial} -size 12 -weight bold -slant roman"
set widl 5
}
catch {font delete fontTEMP_drawer}
eval font create fontTEMP_drawer  $feFONT_button
#ะ’ั‹ั‡ะธัะปัะตะผ ะผะฐะบัะธะผะฐะปัŒะฝั‹ัŽ ะดะปะธะฝัƒ ั‚ะตะบัั‚ะฐ
set drawerCNT 0
set strMaxWidthPx 15
set Ndrawers [expr {[array size but] - 1}]
while { $drawerCNT <= $Ndrawers } {
set strWidthPx [font measure fontTEMP_drawer "$but($drawerCNT)"]
if { $strWidthPx > $strMaxWidthPx } {
set strMaxWidthPx $strWidthPx
}
incr drawerCNT
}
set drawerWidthPx [expr $strMaxWidthPx + 10]
set xxx [expr {($::::scrwidth - $drawerWidthPx) / 2}]
if {$fr != ".fr1"} {
set hret [expr $::scrheight / 4]
} else {
set hret $::scrheight
}
set hret [expr $::scrheight / 4]
tkp::canvas $fr.can -borderwidth 0 -height $hret -width $::scrwidth -relief flat
#ะœะพัั‚ะธะผ ั…ะพะปัั‚ ะฟะปะธั‚ะบะพะน 
createtile "$fr.can"  $tile
pack $fr.can  -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0
if {$titul != "" } {
set allfunc $titul
catch {font delete fontTEMP_titul}
set font_titul "-family {Roboto Condensed Medium} -size 15"
eval font create fontTEMP_titul  $font_titul
set funcWidthPx [font measure fontTEMP_titul "$allfunc"]
set dlx [expr {($::::scrwidth - $funcWidthPx) / 2}]
$fr.can create text [expr $dlx + 6] [expr {6 + 6}] -anchor nw -text "$allfunc" -fill black -font fontTEMP_titul
$fr.can create text $dlx 6 -anchor nw -text "$allfunc" -fill white -font fontTEMP_titul -tag id_text0
set blogo [$fr.can bbox id_text0]
set boxbut [expr ([lindex $blogo 3] + 6 + 6)]
} else {
set boxbut [expr 6 + 6]
}
#ะ’ั‹ั‡ะธัะปัะตะผ ัะฐะผั‹ะน ัˆะธั€ะพะบะธะน ั‚ะตะบัั‚ ัƒ ะบะฝะพะฟะพะบ
#ะกะผ. ะฒั‹ัˆะต
#ะ ะฐะทะผะตั‰ะฐะตะผ ะบะฝะพะฟะบะธ
set BDwidth_canvas 0
set maxTextHeightPx [font metrics fontTEMP_drawer -linespace] 
set maxTextHeightPx [expr {$maxTextHeightPx + ( $maxTextHeightPx / 2)}]
set drawerHeightPx $maxTextHeightPx
set xLocTextPx [expr {($::::scrwidth - $drawerWidthPx) / 2}]
set yLocTextPx [expr $BDwidth_canvas + ($drawerHeightPx / 2) + $boxbut]
set canvasHeightPx [expr $Ndrawers * $drawerHeightPx]
set drawerCNT 0
set Ndrawers [expr {[array size but] - 1}]
while { $drawerCNT <= $Ndrawers } {
set yLineLocPx [ expr (( $drawerCNT ) * $drawerHeightPx + $boxbut)]
#ะ›ะธะฝะธั ะฟะตั€ะตะด ั‚ะตะบัั‚ะพะผ
$fr.can create line 
$xLocTextPx $yLineLocPx 
[expr $drawerWidthPx + $xLocTextPx] $yLineLocPx 
-fill "#a0a0a0" -width $widl
$fr.can create text [expr $xLocTextPx + 5] $yLocTextPx 
-anchor w 
-font fontTEMP_drawer 
-text "$but($drawerCNT)" 
-tag textlineTag($drawerCNT)
if {$drawerCNT == 0} {
if {$fr == ".fr1"} {
$fr.can bind textlineTag($drawerCNT)  <ButtonRelease-1>   {butImg "but1"}
} else {
$fr.can bind textlineTag($drawerCNT)  <ButtonRelease-1>   {butReturn}
}
} else {
frame .fn$drawerCNT -background white -relief flat -pady 0 -padx 0
set titul $but($drawerCNT)
set cmd "$fr.can bind textlineTag($drawerCNT)  <ButtonRelease-1>   {butCliked $drawerCNT .fn$drawerCNT}"
set cmd [subst "$cmd"]
eval $cmd 
set but1(0) "ะ’ะพะทะฒั€ะฐั‚ ะฒ ะพัะฝะพะฒะฝะพะต ะผะตะฝัŽ"
page_func ".fn$drawerCNT" voda "$titul" "but1"
}
incr drawerCNT
set yLocTextPx [ expr $yLocTextPx + $drawerHeightPx]
#ะ—ะฐะฒะตั€ัˆะฐัŽัˆะฐั ะปะธะฝะธั
if { $drawerCNT > $Ndrawers } {
set yLineLocPx [ expr (( $drawerCNT ) * $drawerHeightPx + $boxbut)]
$fr.can create line $xLocTextPx $yLineLocPx 
[expr $drawerWidthPx + $xLocTextPx] $yLineLocPx 
-fill "#a0a0a0" -width $widl
}
}
}
#ะกะพะฑัั‚ะฒะตะฝะฝะพ ัะบั€ะธะฟั‚
#ะกั‡ะธั‚ั‹ะฒะฐะตะผ ั€ะฐะทะผะตั€ั‹ ัะบั€ะฐะฝะฐ
set ::scrwidth [winfo screenwidth .]
set ::scrheight [winfo screenheight .]
set ::typetlf 0
#ะŸั€ะพะฒะตั€ัะตะผ, ั‡ั‚ะพ ัั‚ะพ ั‚ะตะปะตั„ะพะฝ
if {$::scrwidth < $::scrheight} {
set ::typetlf 1
}
set ::padls 20
set ::padlx 15
set ::padly 15
if {$::typetlf} {
wm attributes . -fullscreen 1
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะดัƒะบั‚ะฒ
scaleImage logo_product 2
set ::padls 50
set ::padlx 75
set ::padly 50
} else {
#ะšะพะฝั„ะธะณัƒั€ะธั€ะพะฒะฐะฝะธะต ะฒะธะดะถะตั‚ะฐ ะฟะพะด ัะผะฐั€ั‚ั„ะพะฝ
set ::scrwidth 370
set ::scrheight 700
wm minsize . $::scrwidth $::scrheight
set geometr $::scrwidth
append geometr "x"
append geometr $::scrheight
append geometr "+0+0"
wm geometry . $geometr
}
#ะ“ั€ัƒะทะธะผ ะบะฐั€ั‚ะธะฝะบะธ
image create photo voda -file [file join $mydir "imageme" "voda_400x800.png"]
#ะ›ะพะณะพั‚ะธะฟ ะฟั€ะพะดัƒะบั‚ะฐ
image create photo logo_product -file [file join $mydir "imageme" "validcertkey_51x24.png"] 
#ะกะพะทะดะฐะตะผ ะฝะฐะทะฒะฐะฝะธะต ะฟั€ะพะดัƒะบั‚ะฐ
set name_product "CryptoArmPKCS-A" 
label .labtitul -image logo_product -compound left -fg snow -text $name_product -font {Arial 10 bold} -anchor w  -width [winfo screenwidth .] -pady $::padls -padx 10 -bg #222222 
pack .labtitul -anchor nw -expand 0 -fill x -side top  -padx 1 -pady 0
#ะกะพะทะดะฐะตะผ ัั‚ั€ะฐะฝะธั†ั‹ ั ั„ัƒะฝะบั†ะธะพะฝะฐะปะพะผ
set i 1
ttk::frame .fr$i -pad 0 -padding 0
#ะšะฝะพะฟะบะธ ะพัะฝะพะฒะฝะพะณะพ ะผะตะฝัŽ
set but(0) "ะกั‚ะฐั€ั‚ะพะฒะฐั ัั‚ั€ะฐะฝะธั†ะฐ" 
set but(1) "ะŸะพะดะฟะธัะฐั‚ัŒ ะดะพะบัƒะผะตะฝั‚"
set but(2) "ะ ะฐะฑะพั‚ะฐะตะผ ั ะญะŸ (PKCS7)" 
set but(3) "ะ—ะฐะฟั€ะพั ะฝะฐ ัะตั€ั‚ะธั„ะธะบะฐั‚" 
set but(4) "ะŸั€ะพัะผะพั‚ั€ ะทะฐะฟั€ะพัะฐ/ัะตั€ั‚ะธั„ะธะบะฐั‚ะฐ" 
set but(5) "ะกะฟะธัะพะบ ะบั€ะธะฟั‚ะพะผะตั…ะฐะฝะธะทะผะพะฒ"
set but(6) "ะŸั€ะพัะผะพั‚ั€ ASN1-ัั‚ั€ัƒะบั‚ัƒั€ั‹" 
set but(7) "ะžะฑัŠะตะบั‚ั‹ ั‚ะพะบะตะฝะฐ" 
set but(8) "ะ ะฐะฑะพั‚ะฐะตะผ ั PKCS12/PFX" 
set but(9) "ะกะฐะผะพะฟะพะดะฟะธัะฐะฝะฝั‹ะน ัะตั€ั‚ะธั„ะธะบะฐั‚"
set but(10) "ะžะฑ ะฃั‚ะธะปะธั‚ะต/ะ”ะธัั‚ั€ะธะฑัƒั‚ะธะฒั‹" 
set but(11) "ะกะพะทะดะฐั‚ัŒ ะขะพะบะตะฝั‹"
set but(12) "ะšะพะฝั„ะธะณัƒั€ะธั€ะพะฒะฝะธะต ั‚ะพะบะตะฝะฐ"
if {$::typetlf} {
scaleImage voda 3 2
}
#ะกะพะทะดะฐะตะผ ัั‚ั€ะฐะฝะธั†ัƒ ั ั„ัƒะฝะบั†ะธะพะฝะฐะปะพะผ
page_func ".fr$i" voda "ะคัƒะฝะบั†ะธะพะฝะฐะป" "but"
#ะžั‚ะพะฑั€ะฐะถะฐะตะผ ัั‚ั€ะฐะฝะธั†ัƒ ั ั„ัƒะฝะบั†ะธะพะฝะฐะปะพะผ
pack .fr$i -side top -anchor center -expand 1 -fill both -side top  -padx 0 -pady 0 

script เบ™เบตเป‰เบเบฑเบ‡เบเบฐเบเบฝเบกเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ›เบธเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบ widget เบ„เบฅเบฒเบชเบชเบดเบ เปเบฅเบฐ thematic (labelframe, button, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เบซเบ™เบถเปˆเบ‡เปƒเบ™เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เบซเบ™เป‰เบฒเบˆเปเบ—เปเบฒเบญเบดเบ”เบ”เป‰เบฒเบ™เบ‚เบงเบฒ. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš PKCS#12 container, เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบเบทเบญเบšเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบš cryptoarmpkcs-A. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”:

  • เป€เบŠเบฑเบ™เป€เบญเบเบฐเบชเบฒเบ™ (Cades-BES, CADes-T, CADes-XLT1);
  • เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฒเบเป€เบŠเบฑเบ™เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบ (PKCS7), เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบœเบนเป‰เบฅเบปเบ‡เบ™เบฒเบก;
  • เป€เบšเบดเปˆเบ‡เปƒเบšเบฎเบฑเบšเบฎเบญเบ‡/เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™:

    เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

  • เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš PKCS12/PFX;
  • เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ” / เบเบฒเบ™โ€‹เปเบœเปˆโ€‹เบเบฐโ€‹เบˆเบฒเบโ€‹:

    เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš PKCS#11 tokens เบซเบผเบฒเบ. เบเบฒเบ™โ€‹เบ‚เบปเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบฅเบทเปˆเบญเบ™โ€‹เป„เบ›โ€‹เบˆเบปเบ™โ€‹เบฎเบญเบ”โ€‹เบ›เบตโ€‹เปƒเปเปˆ. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ token เบŠเบญเบšเปเบงเปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš token cloud.

เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”, เป€เบเบทเบญเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ cryptoarmpkcs. เปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบŠเบฑเบ™เป€เบญเบเบฐเบชเบฒเบ™, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ–เบฒเบกเบงเปˆเบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบˆเบฐเบ–เบทเบเบเบงเบ”เบชเบญเบšเบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบฅเบฑเบ”:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android
เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ„เบฅเบดเบเปƒเบชเปˆเบ›เบธเปˆเบก โ€œเปเบกเปˆเบ™เปเบฅเป‰เบงโ€, เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบˆเบฐเป‚เบซเบผเบ”เบซเบ™เป‰เบฒเป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™ เปเบฅเบฐเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบ—เบฑเบ™เบ—เบตเบงเปˆเบฒเบซเบ™เป‰เบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเปเบ—เป‰เป†เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบˆเปเป‚เบ—เบฅเบฐเบชเบฑเบšเบชเบฐเบซเบผเบฒเบ”. เบ™เบตเป‰เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฅเบทเบญเบเบฅเบฒเบเป€เบŠเบฑเบ™เปเบฅเบฐ, เบ–เป‰เบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบ–เบทเบเปเบเบเบญเบญเบ, เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™. เปเบ•เปˆโ€‹เบ–เป‰เบฒโ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ”เบต, เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เบ”เบต:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android

เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เปเบฅเบฐเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบงเปˆเบฒเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เป„เบ”เป‰เบฎเบฑเบšเบขเบนเปˆเบชเบนเบ™เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบฎเบญเบ‡ (ะฃะฆ). เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฒเบเป€เบŠเบฑเบ™เบˆเบฐเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เป€เบžเบทเปˆเบญเป‚เบ—เบซเบฒเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบชเบญเบ‡เบชเบฒเบกเปเบ–เบงเปƒเบชเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™ openUrl:

proc openURL {url} {
global typesys
global macos
#  global windowsOS
#ะฟั€ะพะฒะตั€ะบะฐ, ั‡ั‚ะพ ัƒั‚ะธะปะธั‚ะฐ ะฒั‹ะฟะพะปะฝัะตั‚ัั ะฝะฐ ัะผะฐั€ั‚ั„ะพะฝะต Android
if {$::typetlf} {
#ะ—ะฐะฟัƒัะบ ะฑั€ะฐัƒะทะตั€ะฐ
borg activity android.intent.action.VIEW $url text/html
return
}
. . .
}

เบ•เบปเบงโ€‹เบ—เปˆเบญเบ‡โ€‹เป€เบงเบฑเบšโ€‹เปƒเบ™ Android เปเบกเปˆเบ™โ€‹เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

borg activity android.intent.action.VIEW <URL> text/html

เบกเบตเบ„เบงเบฒเบกเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบกเบœเบนเป‰เบฅเบปเบ‡เบ™เบฒเบกเปƒเปเปˆเปƒเบชเปˆเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™. เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ‚เบญเบ‡เบœเบนเป‰เบฅเบปเบ‡เบ™เบฒเบกเปƒเบซเบกเปˆ (เบซเบผเบทเปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เปเบกเปˆเบ™เปเบ•เปˆเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต PKCS#12 เบ—เบตเปˆเบกเบตเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบง) เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒ "เป€เบŠเบฑเบ™เป€เบญเบเบฐเบชเบฒเบ™" เบซเบผเบท "เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš PKCS12/PFX", เป€เบŠเบดเปˆเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฐเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบš. :

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android
เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป„เบฅเบเบฐเบเบฒเบง, เป‚เบกเบ‡เบˆเบฐเบชเบทเบšเบ•เปเปˆเบซเบกเบฒเบเบ•เบดเบ:

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android
เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบšเบญเบเบงเปˆเบฒเบˆเบฐเบ”เบฒเบงเป‚เบซเบฅเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบเบˆเบฒเบเบšเปˆเบญเบ™เปƒเบ”เปเบฅเบฐเบ‚เปเบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบเบดเบ™เบ”เบตเปƒเบ™เบ›เบตเปƒเบซเบกเปˆเบ—เบตเปˆเบˆเบฐเบกเบฒเป€เบ–เบดเบ‡เปเบฅเบฐเบ‚เปเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เป‚เบŠเบเบ”เบตเปƒเบ™เบ›เบต 2020!

เบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Androidเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เปเบˆเบเบขเบฒเบเบชเปเบฒเบฅเบฑเบš Linux, OS X, Windows เปเบฅเบฐ Android:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™