ரஸ்ட் கோர் கட்டிடக்கலை
ஆண்ட்ராய்டு மற்றும் iOS இடையே முழுமையான சமநிலைக்கு உத்தரவாதம் அளிப்பதற்கும், அதிகபட்ச செயல்திறனை அடைவதற்கும், ட்ரேஸ்லெட்டின் முக்கிய லாஜிக் முழுவதுமாக ரஸ்ட் இல் எழுதப்பட்டுள்ளது. இதில் நிலை இயந்திரம், HTTP ஒத்திசைவு இயந்திரம், SQLite பெர்சிஸ்டன்ஸ் லேயர் மற்றும் பேட்டரி பட்ஜெட் கணக்கீடுகள் ஆகியவை அடங்கும்.
ஏன் துரு?
மைய இயந்திரத்தை ரஸ்டில் எழுதுவது குறுக்கு-தளம் பின்னணி செயல்பாட்டில் உள்ள பல முக்கியமான சவால்களைத் தீர்க்கிறது:
- பூஜ்ஜிய முரண்பாடுகள்: தனித்தனியான ஸ்விஃப்ட் மற்றும் கோட்லின் செயலாக்கங்களை விட, ஒற்றை, பகிரப்பட்ட கோட்பேஸை நம்புவதன் மூலம், iOS மற்றும் Android எல்லா நிபந்தனைகளிலும் ஒரே மாதிரியாக செயல்படுவதை உறுதிசெய்கிறோம். ஒரு பிழை சரி செய்யப்பட்டால், அது எல்லா இடங்களிலும் சரி செய்யப்படுகிறது.
- அச்சமில்லாத ஒத்திசைவு: பின்னணி ஒத்திசைவு இயந்திரம் அதிக மல்டித்ரெட் சுமைகளின் கீழ் குறைபாடற்ற முறையில் இயங்குகிறது. ரஸ்டின் கண்டிப்பான கம்பைலர் தரவு-பந்தய சுதந்திரத்திற்கு உத்தரவாதம் அளிக்கிறது, இருப்பிடங்கள் பதிவுசெய்யப்பட்டு பின்னணி இழைகளில் ஒரே நேரத்தில் பதிவேற்றப்படும்போது ஒத்திசைவு பிழைகளைத் தவிர்க்கிறது.
- செயல்திறன் மற்றும் பாதுகாப்பு: ரஸ்ட் C-நிலை செயல்திறன் மற்றும் பூஜ்ஜியத்திற்கு அருகில் நினைவக தடம் ஆகியவற்றுடன் செயல்படுகிறது, இது பேட்டரி-கட்டுப்படுத்தப்பட்ட பின்னணி செயல்பாட்டிற்கு சரியானதாக அமைகிறது. இது குப்பை சேகரிப்பான் இல்லாமல் நினைவக பாதுகாப்பிற்கு உத்தரவாதம் அளிக்கிறது, பூஜ்ய சுட்டிகள் அல்லது நினைவகத்தில் இல்லாத பிழைகள் காரணமாக பின்னணி இயந்திரம் ஒருபோதும் செயலிழக்காமல் இருப்பதை உறுதி செய்கிறது.
இது எவ்வாறு இயங்குகிறது: UniFFI பைண்டிங்ஸ்
ரஸ்ட் மற்றும் நேட்டிவ் பிளாட்பார்ம்களுக்கு இடையே உள்ள இடைவெளியைக் குறைக்க, ட்ரேஸ்லெட் Mozilla’s UniFFI (யுனிவர்சல் ஃபாரின் ஃபங்க்ஷன் இன்டர்ஃபேஸ்) ஐப் பயன்படுத்துகிறது.
- வரையறுப்பு: ரஸ்டில் கோர் API ஐ வரையறுக்கிறோம் (எ.கா., கண்காணிப்பு, தரவு ஒத்திசைவு அல்லது இருப்பிட புதுப்பிப்புகளைக் கையாளும் முறைகள்).
- தலைமுறை: UniFFI தானாகவே ரஸ்ட் குறியீட்டைப் பாகுபடுத்தி, iOSக்கான பாதுகாப்பான, இடியோமடிக் Swift பிணைப்புகளையும் Android க்கான Kotlin பிணைப்புகளையும் உருவாக்குகிறது.
- செயல்படுத்தல்: Flutter செருகுநிரல் நேட்டிவ் iOS/Android குறியீட்டை அழைக்கும் போது, நேட்டிவ் குறியீடு UniFFI-உருவாக்கப்பட்ட பிணைப்புகளை அழைக்கிறது, இது அடிப்படையான ரஸ்ட் லாஜிக்கை தடையின்றி செயல்படுத்துகிறது.
பிணைப்புகள் தானாக உருவாக்கப்படுவதால், பராமரிக்க கையேடு JNI (ஜாவா நேட்டிவ் இன்டர்ஃபேஸ்) அல்லது ஆப்ஜெக்டிவ்-சி பிரிட்ஜிங் குறியீடு இல்லை. இது முற்றிலும் வகை பாதுகாப்பானது.
முன் தொகுக்கப்பட்ட பைனரிகள் (ரஸ்ட் டூல்செயின் தேவையில்லை)
மொபைல் டெவலப்மென்ட்டில் ரஸ்டுடன் இருக்கும் பொதுவான வலி புள்ளி டெவலப்பர்களை ரஸ்ட் டூல்செயினை நிறுவவும், குறுக்கு-தொகுப்பு இலக்குகளை உள்ளமைக்கவும் மற்றும் நீண்ட கால கட்டத்தை தாங்கவும் கட்டாயப்படுத்துகிறது.
முன் தொகுக்கப்பட்ட பைனரிகளை விநியோகிப்பதன் மூலம் ட்ரேஸ்லெட் இதைத் தீர்க்கிறது.
உங்கள் Flutter திட்டத்தில் tracelet செருகுநிரலைச் சேர்க்கும்போது, உங்கள் கணினியில் ரஸ்டை நிறுவ வேண்டியதில்லை. ட்ரேஸ்லெட்டின் CI/CD பைப்லைன் ஒவ்வொரு வெளியீட்டிற்கும் சொந்த நூலகங்களை தானாகவே உருவாக்கி வெளியிடுகிறது.
ஆண்ட்ராய்டு தொகுப்பு
- ரஸ்ட் குறியீடு அனைத்து முக்கிய ஆண்ட்ராய்டு கட்டமைப்புகளுக்கும் (
arm64-v8a,armeabi-v7a,x86,x86_64) நேட்டிவ் ஷேர்ட் லைப்ரரியில் (.so) தொகுக்கப்பட்டுள்ளது. - இந்த நூலகங்கள், உருவாக்கப்பட்ட கோட்லின் பிணைப்புகளுடன், ஆண்ட்ராய்டு காப்பகத்தில் (
.aar) தொகுக்கப்பட்டுள்ளன. - நீங்கள் உங்கள் Flutter பயன்பாட்டை உருவாக்கும்போது, Tracelet களஞ்சியத்திலிருந்து முன்பே கட்டமைக்கப்பட்ட
.aarஐ Gradle தானாகவே பதிவிறக்கும்.
iOS தொகுப்பு
- ரஸ்ட் குறியீடு iOS சாதனங்கள் (
arm64) மற்றும் சிமுலேட்டர்கள் (arm64,x86_64) ஆகியவற்றிற்கான நிலையான நூலகத்தில் (.a) தொகுக்கப்பட்டுள்ளது. - இந்த நூலகங்கள் உருவாக்கப்படும் ஸ்விஃப்ட் பிணைப்புகளுடன் ஒரு Apple XCFramework (
TraceletCore.xcframework) இல் தொகுக்கப்பட்டுள்ளன. - நீங்கள்
pod installஐ இயக்கும் போது, CocoaPods (அல்லது Swift Package Manager) குறியிடப்பட்ட GitHub வெளியீட்டில் இருந்து முன் தொகுக்கப்பட்டTraceletCore.xcframeworkஐ தானாகவே பதிவிறக்கும்.
இந்த முன் தொகுக்கப்பட்ட விநியோகமானது, உங்கள் ஃப்ளட்டர் பில்ட்கள் மின்னல் வேகத்தில் இருப்பதை உறுதிசெய்கிறது, மேலும் உங்கள் CI/CD பைப்லைன்கள் தனிப்பயன் ரஸ்ட் அமைப்புகள் தேவையில்லாமல் இயங்குகின்றன.