flutter_libtdjson

pub package pub points popularity likes

A flutter plugin for TDLib JSON interface, ffi binding.

Lib versions

package td version
0.2.1 1.8.31 (Android, iOS, macOS)
0.2.0 1.8.30 (Android, iOS, macOS)
0.1.4 1.8.1 (Android, iOS, macOS)
0.1.3 1.7.9 (Android, iOS, macOS)
0.1.2 1.7.0 (Android), latest (iOS, macOS)

Supported architectures

Make sure you are using supported one

Platform Architecture
Android armeabi-v7a
arm64-v8a
Android emulator x86
x86_64
iOS armv7
armv7s
arm64
iOS simulator i386
x86_64
arm64 (M1)
macOS i386
x86_64
arm64 (M1)

Installation

  • Update pubspec.yaml:

    dependencies:
      libtdjson: ^0.2.1
    
  • If you want to build android, you have to add envs for github maven, see ./android/build.gradle

    export GITHUB_ACTOR=<username>
    export GITHUB_TOKEN=<personal access token>
    
  • If you want to set tdlibParameters.database_directory outside work dir, make sure you request the storage permission, e.q. android/app/src/main/AndroidManifest.xml

    <manifest>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <manifest/>
    
  • If you want to build macos, have to set network permission in ./macos/Runner/*.entitlements files

    <dict>
        <key>com.apple.security.network.client</key>
        <true/>
    </dict>
    

Dev memo

Bump TDLib version

  • Bump the td version of android-libtdjson

  • Bump the android dependency version in ./android/build.gradle

  • Run ./example for android

    cd ./example
    flutter run -d emulator-5554
    
  • Bump the td version of ios-libtdjson

  • Bump the macos dependency version in ./macos/libtdjson.podspec (s.dependency)

  • Run ./example for macos

    cd ./example/macos
    pod update flutter_libtdjson
    cd ..
    flutter run -d macos
    
  • Bump the ios dependency version in ./ios/libtdjson.podspec

  • Run ./example for ios simulator

    cd ./example/ios
    pod update flutter_libtdjson
    cd ..
    flutter run --debug
    # link .dylib to search path, e.q:
    # ln -s $(pwd)/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/flutter_libtdjson/libtdjson.dylib ~/Library/Developer/CoreSimulator/Devices/FD63D560-544B-4B18-8F2F-03B093156DE2/data/Containers/Bundle/Application/004B7B3D-4665-4217-A9C7-2D2193107E80/Runner.app/Frameworks/libtdjson.dylib
    # Reload with `R`
    
  • Bump the package version in ./pubspec.yaml

  • Add changelog for new version in ./CHANGELOG.md

  • Bump version info in ./README.md

  • Git commit (message example: bump td to vx.x.x)

  • Git add tag (git tag v?.?.?, the tag version should be same as the version in pubspec.yaml)

  • Push with tags (git push && git push --tags)

  • Wait for CI task

Manually publish

dart pub publish

# credentials file on macos
cat ~/Library/Application\ Support/dart/pub-credentials.json

TODO

  • ⛔ is about iOS with dylib. There are .dylib files in build/ios/Debug-iphonesimulator/XCFrameworkIntermediates, but still...