├── .gitignore
├── android
├── JavaEmptyProject
│ ├── app
│ │ ├── .gitignore
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── assets
│ │ │ │ │ └── main.lynx.bundle
│ │ │ │ ├── res
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ ├── themes.xml
│ │ │ │ │ │ └── colors.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── xml
│ │ │ │ │ │ ├── backup_rules.xml
│ │ │ │ │ │ └── data_extraction_rules.xml
│ │ │ │ │ └── drawable
│ │ │ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ │ └── lynx
│ │ │ │ │ │ └── javaemptyproject
│ │ │ │ │ │ ├── ui
│ │ │ │ │ │ └── theme
│ │ │ │ │ │ │ ├── Color.kt
│ │ │ │ │ │ │ ├── Type.kt
│ │ │ │ │ │ │ └── Theme.kt
│ │ │ │ │ │ ├── DebugActivity.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ ├── DemoTemplateProvider.java
│ │ │ │ │ │ ├── SwitchActivity.java
│ │ │ │ │ │ └── YourApplication.java
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── test
│ │ │ │ └── java
│ │ │ │ │ └── com
│ │ │ │ │ └── lynx
│ │ │ │ │ └── javaemptyproject
│ │ │ │ │ └── ExampleUnitTest.kt
│ │ │ └── androidTest
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── lynx
│ │ │ │ └── javaemptyproject
│ │ │ │ └── ExampleInstrumentedTest.kt
│ │ ├── proguard-rules.pro
│ │ └── build.gradle
│ ├── .idea
│ │ └── .gitignore
│ ├── gradle
│ │ ├── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ └── libs.versions.toml
│ ├── build.gradle
│ ├── .gitignore
│ ├── settings.gradle
│ ├── gradle.properties
│ ├── gradlew.bat
│ └── gradlew
└── KotlinEmptyProject
│ ├── app
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── values
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── themes.xml
│ │ │ │ │ └── colors.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ ├── ic_launcher.webp
│ │ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── xml
│ │ │ │ │ ├── backup_rules.xml
│ │ │ │ │ └── data_extraction_rules.xml
│ │ │ │ └── drawable
│ │ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── assets
│ │ │ │ └── main.lynx.bundle
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── lynx
│ │ │ │ │ └── kotlinemptyproject
│ │ │ │ │ ├── ui
│ │ │ │ │ └── theme
│ │ │ │ │ │ ├── Color.kt
│ │ │ │ │ │ ├── Type.kt
│ │ │ │ │ │ └── Theme.kt
│ │ │ │ │ ├── DebugActivity.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── SwitchActivity.kt
│ │ │ │ │ ├── DemoTemplateProvider.kt
│ │ │ │ │ └── YourApplication.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── lynx
│ │ │ │ └── kotlinemptyproject
│ │ │ │ └── ExampleUnitTest.kt
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── lynx
│ │ │ └── kotlinemptyproject
│ │ │ └── ExampleInstrumentedTest.kt
│ ├── proguard-rules.pro
│ └── build.gradle.kts
│ ├── gradle
│ ├── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ └── libs.versions.toml
│ ├── build.gradle.kts
│ ├── .gitignore
│ ├── settings.gradle.kts
│ ├── gradle.properties
│ ├── gradlew.bat
│ └── gradlew
├── harmony
└── HarmonyEmptyProject
│ ├── entry
│ ├── src
│ │ ├── mock
│ │ │ └── mock-config.json5
│ │ ├── main
│ │ │ ├── resources
│ │ │ │ ├── base
│ │ │ │ │ ├── profile
│ │ │ │ │ │ ├── backup_config.json
│ │ │ │ │ │ └── main_pages.json
│ │ │ │ │ ├── element
│ │ │ │ │ │ ├── color.json
│ │ │ │ │ │ ├── float.json
│ │ │ │ │ │ └── string.json
│ │ │ │ │ └── media
│ │ │ │ │ │ ├── layered_image.json
│ │ │ │ │ │ ├── startIcon.png
│ │ │ │ │ │ ├── background.png
│ │ │ │ │ │ └── foreground.png
│ │ │ │ ├── dark
│ │ │ │ │ └── element
│ │ │ │ │ │ └── color.json
│ │ │ │ └── rawfile
│ │ │ │ │ └── main.lynx.bundle
│ │ │ ├── cpp
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── ets
│ │ │ │ ├── provider
│ │ │ │ │ ├── ExampleMediaResourceFetcher.ets
│ │ │ │ │ ├── ExampleTemplateResourceFetcher.ets
│ │ │ │ │ └── ExampleGenericResourceFetcher.ets
│ │ │ │ ├── entrybackupability
│ │ │ │ │ └── EntryBackupAbility.ets
│ │ │ │ ├── pages
│ │ │ │ │ └── Index.ets
│ │ │ │ └── entryability
│ │ │ │ │ └── EntryAbility.ets
│ │ │ └── module.json5
│ │ └── test
│ │ │ ├── List.test.ets
│ │ │ └── LocalUnit.test.ets
│ ├── .gitignore
│ ├── .ohpmrc
│ ├── hvigorfile.ts
│ ├── oh-package.json5
│ ├── build-profile.json5
│ ├── obfuscation-rules.txt
│ └── oh-package-lock.json5
│ ├── .ohpmrc
│ ├── AppScope
│ ├── resources
│ │ └── base
│ │ │ ├── element
│ │ │ └── string.json
│ │ │ └── media
│ │ │ ├── layered_image.json
│ │ │ ├── background.png
│ │ │ └── foreground.png
│ └── app.json5
│ ├── .gitignore
│ ├── hvigorfile.ts
│ ├── oh-package.json5
│ ├── build-profile.json5
│ ├── code-linter.json5
│ ├── oh-package-lock.json5
│ └── hvigor
│ └── hvigor-config.json5
├── ios
├── HelloLynxObjc
│ ├── Hello-Lynx-OC
│ │ ├── Assets.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── ViewController.h
│ │ ├── DemoLynxProvider.h
│ │ ├── AppDelegate.h
│ │ ├── SceneDelegate.h
│ │ ├── main.m
│ │ ├── Info.plist
│ │ ├── ViewController.m
│ │ ├── DemoLynxProvider.m
│ │ ├── AppDelegate.m
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── SceneDelegate.m
│ ├── main.lynx.bundle
│ ├── Podfile
│ ├── .gitignore
│ └── Podfile.lock
└── HelloLynxSwift
│ ├── Hello-Lynx
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Hello-Lynx-Bridging-Header.h
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── DemoLynxProvider.swift
│ ├── Info.plist
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── SceneDelegate.swift
│ ├── main.lynx.bundle
│ ├── Podfile
│ ├── .gitignore
│ ├── Podfile.lock
│ └── Hello-Lynx.xcodeproj
│ └── project.pbxproj
├── README.md
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/mock/mock-config.json5:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /oh_modules
3 | /.preview
4 | /build
5 | /.cxx
6 | /.test
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/profile/backup_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "allowToBackupRestore": true
3 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/profile/main_pages.json:
--------------------------------------------------------------------------------
1 | {
2 | "src": [
3 | "pages/Index"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/main.lynx.bundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/ios/HelloLynxObjc/main.lynx.bundle
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/main.lynx.bundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/ios/HelloLynxSwift/main.lynx.bundle
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | KotlinEmptyProject
3 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/cpp/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # the minimum version of CMake.
2 | cmake_minimum_required(VERSION 3.5.0)
3 | project(MyApplication)
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/test/List.test.ets:
--------------------------------------------------------------------------------
1 | import localUnitTest from './LocalUnit.test';
2 |
3 | export default function testsuite() {
4 | localUnitTest();
5 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/.ohpmrc:
--------------------------------------------------------------------------------
1 | resolve_conflict=true
2 | enforce_dependency_key=true
3 | install_all=true
4 | enable_cross_process_lock=true
5 | ensure_dependency_include=true
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/.ohpmrc:
--------------------------------------------------------------------------------
1 | resolve_conflict=true
2 | enforce_dependency_key=true
3 | install_all=true
4 | enable_cross_process_lock=true
5 | ensure_dependency_include=true
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Hello-Lynx-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import
4 | #import
5 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/assets/main.lynx.bundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/assets/main.lynx.bundle
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | JavaEmptyProject
3 | Hello World!
4 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/AppScope/resources/base/element/string.json:
--------------------------------------------------------------------------------
1 | {
2 | "string": [
3 | {
4 | "name": "app_name",
5 | "value": "HarmonyEmptyProject"
6 | }
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/element/color.json:
--------------------------------------------------------------------------------
1 | {
2 | "color": [
3 | {
4 | "name": "start_window_background",
5 | "value": "#FFFFFF"
6 | }
7 | ]
8 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/element/float.json:
--------------------------------------------------------------------------------
1 | {
2 | "float": [
3 | {
4 | "name": "page_text_font_size",
5 | "value": "50fp"
6 | }
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/dark/element/color.json:
--------------------------------------------------------------------------------
1 | {
2 | "color": [
3 | {
4 | "name": "start_window_background",
5 | "value": "#000000"
6 | }
7 | ]
8 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/assets/main.lynx.bundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/assets/main.lynx.bundle
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/AppScope/resources/base/media/layered_image.json:
--------------------------------------------------------------------------------
1 | {
2 | "layered-image":
3 | {
4 | "background" : "$media:background",
5 | "foreground" : "$media:foreground"
6 | }
7 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/layered_image.json:
--------------------------------------------------------------------------------
1 | {
2 | "layered-image":
3 | {
4 | "background" : "$media:background",
5 | "foreground" : "$media:foreground"
6 | }
7 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/AppScope/resources/base/media/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/AppScope/resources/base/media/background.png
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/AppScope/resources/base/media/foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/AppScope/resources/base/media/foreground.png
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /oh_modules
3 | /local.properties
4 | /.idea
5 | **/build
6 | /.hvigor
7 | .cxx
8 | /.clangd
9 | /.clang-format
10 | /.clang-tidy
11 | **/.test
12 | /.appanalyzer
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/startIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/startIcon.png
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/rawfile/main.lynx.bundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/entry/src/main/resources/rawfile/main.lynx.bundle
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/JavaEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/background.png
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/harmony/HarmonyEmptyProject/entry/src/main/resources/base/media/foreground.png
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lynx-family/integrating-lynx-demo-projects/HEAD/android/KotlinEmptyProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | plugins {
3 | alias(libs.plugins.android.application) apply false
4 | alias(libs.plugins.jetbrains.kotlin.android) apply false
5 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/build.gradle.kts:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | plugins {
3 | alias(libs.plugins.android.application) apply false
4 | alias(libs.plugins.jetbrains.kotlin.android) apply false
5 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import
9 |
10 | @interface ViewController : UIViewController
11 |
12 |
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/DemoLynxProvider.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | NS_ASSUME_NONNULL_BEGIN
5 |
6 | @interface DemoLynxProvider : NSObject
7 |
8 | @end
9 |
10 | NS_ASSUME_NONNULL_END
11 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import
9 |
10 | @interface AppDelegate : UIResponder
11 |
12 |
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/hvigorfile.ts:
--------------------------------------------------------------------------------
1 | import { appTasks } from '@ohos/hvigor-ohos-plugin';
2 |
3 | export default {
4 | system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
5 | plugins:[] /* Custom plugin to extend the functionality of Hvigor. */
6 | }
7 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/hvigorfile.ts:
--------------------------------------------------------------------------------
1 | import { hapTasks } from '@ohos/hvigor-ohos-plugin';
2 |
3 | export default {
4 | system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
5 | plugins:[] /* Custom plugin to extend the functionality of Hvigor. */
6 | }
7 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/AppScope/app.json5:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "bundleName": "com.example.harmonyemptyproject",
4 | "vendor": "example",
5 | "versionCode": 1000000,
6 | "versionName": "1.0.0",
7 | "icon": "$media:layered_image",
8 | "label": "$string:app_name"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Feb 14 16:03:32 CST 2025
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Feb 14 16:04:54 CST 2025
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/
5 | /.idea/caches
6 | /.idea/libraries
7 | /.idea/modules.xml
8 | /.idea/workspace.xml
9 | /.idea/navEditor.xml
10 | /.idea/assetWizardSettings.xml
11 | .DS_Store
12 | /build
13 | /captures
14 | .externalNativeBuild
15 | .cxx
16 | local.properties
17 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/
5 | /.idea/caches
6 | /.idea/libraries
7 | /.idea/modules.xml
8 | /.idea/workspace.xml
9 | /.idea/navEditor.xml
10 | /.idea/assetWizardSettings.xml
11 | .DS_Store
12 | /build
13 | /captures
14 | .externalNativeBuild
15 | .cxx
16 | local.properties
17 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/SceneDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.h
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import
9 |
10 | @interface SceneDelegate : UIResponder
11 |
12 | @property (strong, nonatomic) UIWindow * window;
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | @UIApplicationMain
4 | class AppDelegate: UIResponder, UIApplicationDelegate {
5 | var window: UIWindow?
6 |
7 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
8 | LynxEnv.sharedInstance()
9 | return true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/ui/theme/Color.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject.ui.theme
2 |
3 | import androidx.compose.ui.graphics.Color
4 |
5 | val Purple80 = Color(0xFFD0BCFF)
6 | val PurpleGrey80 = Color(0xFFCCC2DC)
7 | val Pink80 = Color(0xFFEFB8C8)
8 |
9 | val Purple40 = Color(0xFF6650a4)
10 | val PurpleGrey40 = Color(0xFF625b71)
11 | val Pink40 = Color(0xFF7D5260)
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/ui/theme/Color.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject.ui.theme
2 |
3 | import androidx.compose.ui.graphics.Color
4 |
5 | val Purple80 = Color(0xFFD0BCFF)
6 | val PurpleGrey80 = Color(0xFFCCC2DC)
7 | val Pink80 = Color(0xFFEFB8C8)
8 |
9 | val Purple40 = Color(0xFF6650a4)
10 | val PurpleGrey40 = Color(0xFF625b71)
11 | val Pink40 = Color(0xFF7D5260)
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/resources/base/element/string.json:
--------------------------------------------------------------------------------
1 | {
2 | "string": [
3 | {
4 | "name": "module_desc",
5 | "value": "module description"
6 | },
7 | {
8 | "name": "EntryAbility_desc",
9 | "value": "description"
10 | },
11 | {
12 | "name": "EntryAbility_label",
13 | "value": "label"
14 | },
15 | {
16 | "name": "network",
17 | "value": "Request network"
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/test/java/com/lynx/javaemptyproject/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/test/java/com/lynx/kotlinemptyproject/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/provider/ExampleMediaResourceFetcher.ets:
--------------------------------------------------------------------------------
1 | import { LynxMediaResourceFetcher, LynxResourceRequest, LynxOptionalBool } from '@lynx/lynx';
2 |
3 | export class ExampleMediaResourceFetcher extends LynxMediaResourceFetcher {
4 | shouldRedirectUrl(request: LynxResourceRequest): string {
5 | // just return the input url;
6 | return request.url;
7 | }
8 |
9 | isLocalResource(url: string): LynxOptionalBool {
10 | return LynxOptionalBool.UNDEFINED;
11 | }
12 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import
9 | #import "AppDelegate.h"
10 |
11 | int main(int argc, char * argv[]) {
12 | NSString * appDelegateClassName;
13 | @autoreleasepool {
14 | // Setup code that might create autoreleased objects goes here.
15 | appDelegateClassName = NSStringFromClass([AppDelegate class]);
16 | }
17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName);
18 | }
19 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://cdn.cocoapods.org/'
2 |
3 | platform :ios, '10.0'
4 |
5 | target 'Hello-Lynx' do
6 | pod 'Lynx', '3.5.1', :subspecs => [
7 | 'Framework',
8 | ]
9 |
10 |
11 | # integrate image-service, log-service, and http-service
12 | pod 'LynxService', '3.5.1', :subspecs => [
13 | 'Image',
14 | 'Log',
15 | 'Http',
16 | ]
17 |
18 | # ImageService dependencies:
19 | pod 'SDWebImage','5.15.5'
20 | pod 'SDWebImageWebPCoder', '0.11.0'
21 |
22 | # XElement
23 | pod 'XElement', '3.5.1'
24 | end
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/oh-package.json5:
--------------------------------------------------------------------------------
1 | {
2 | "modelVersion": "5.0.5",
3 | "description": "Please describe the basic information.",
4 | "overrides": {
5 | "@ohos/imageknife": "3.2.6",
6 | "@lynx/lynx": "3.5.1",
7 | "@lynx/lynx_base": "3.5.1",
8 | "@lynx/lynx_devtool": "3.5.1",
9 | "@lynx/lynx_devtool_service": "3.5.1",
10 | "@lynx/lynx_http_service": "3.5.1",
11 | "@lynx/lynx_log_service": "3.5.1",
12 | "@lynx/primjs": "2.15.1",
13 | },
14 | "devDependencies": {
15 | "@ohos/hypium": "1.0.21",
16 | "@ohos/hamock": "1.0.0",
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/oh-package.json5:
--------------------------------------------------------------------------------
1 | {
2 | "name": "entry",
3 | "version": "1.0.0",
4 | "description": "Please describe the basic information.",
5 | "main": "",
6 | "author": "",
7 | "license": "",
8 | "devDependencies": {
9 | },
10 | "dependencies": {
11 | "@ohos/imageknife": "3.2.6",
12 | "@lynx/lynx": "3.5.1",
13 | "@lynx/lynx_base": "3.5.1",
14 | "@lynx/lynx_devtool": "3.5.1",
15 | "@lynx/lynx_devtool_service": "3.5.1",
16 | "@lynx/lynx_http_service": "3.5.1",
17 | "@lynx/lynx_log_service": "3.5.1",
18 | "@lynx/primjs": "2.15.1",
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets:
--------------------------------------------------------------------------------
1 | import { hilog } from '@kit.PerformanceAnalysisKit';
2 | import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';
3 |
4 | const DOMAIN = 0x0000;
5 |
6 | export default class EntryBackupAbility extends BackupExtensionAbility {
7 | async onBackup() {
8 | hilog.info(DOMAIN, 'testTag', 'onBackup ok');
9 | await Promise.resolve();
10 | }
11 |
12 | async onRestore(bundleVersion: BundleVersion) {
13 | hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion));
14 | await Promise.resolve();
15 | }
16 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google {
4 | content {
5 | includeGroupByRegex("com\\.android.*")
6 | includeGroupByRegex("com\\.google.*")
7 | includeGroupByRegex("androidx.*")
8 | }
9 | }
10 | mavenCentral()
11 | gradlePluginPortal()
12 | }
13 | }
14 | dependencyResolutionManagement {
15 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
16 | repositories {
17 | mavenCentral()
18 | google()
19 | }
20 | }
21 |
22 | rootProject.name = "JavaEmptyProject"
23 | include ':app'
24 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google {
4 | content {
5 | includeGroupByRegex("com\\.android.*")
6 | includeGroupByRegex("com\\.google.*")
7 | includeGroupByRegex("androidx.*")
8 | }
9 | }
10 | mavenCentral()
11 | gradlePluginPortal()
12 | }
13 | }
14 | dependencyResolutionManagement {
15 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
16 | repositories {
17 | google()
18 | mavenCentral()
19 | }
20 | }
21 |
22 | rootProject.name = "KotlinEmptyProject"
23 | include(":app")
24 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController {
4 |
5 | override func viewDidLoad() {
6 | super.viewDidLoad()
7 |
8 | let lynxView = LynxView { builder in
9 | builder.config = LynxConfig(provider: DemoLynxProvider())
10 | builder.screenSize = self.view.frame.size
11 | builder.fontScale = 1.0
12 | }
13 |
14 | lynxView.preferredLayoutWidth = self.view.frame.size.width
15 | lynxView.preferredLayoutHeight = self.view.frame.size.height
16 | lynxView.layoutWidthMode = .exact
17 | lynxView.layoutHeightMode = .exact
18 | self.view.addSubview(lynxView)
19 |
20 | lynxView.loadTemplate(fromURL: "main.lynx", initData: nil)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/DemoLynxProvider.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | class DemoLynxProvider: NSObject, LynxTemplateProvider {
4 | func loadTemplate(withUrl url: String!, onComplete callback: LynxTemplateLoadBlock!) {
5 | if let filePath = Bundle.main.path(forResource: url, ofType: "bundle") {
6 | do {
7 | let data = try Data(contentsOf: URL(fileURLWithPath: filePath))
8 | callback(data, nil)
9 | } catch {
10 | print("Error reading file: \(error.localizedDescription)")
11 | callback(nil, error)
12 | }
13 | } else {
14 | let urlError = NSError(domain: "com.lynx", code: 400, userInfo: [NSLocalizedDescriptionKey: "Invalid URL."])
15 | callback(nil, urlError)
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIApplicationSceneManifest
6 |
7 | UIApplicationSupportsMultipleScenes
8 |
9 | UISceneConfigurations
10 |
11 | UIWindowSceneSessionRoleApplication
12 |
13 |
14 | UISceneConfigurationName
15 | Default Configuration
16 | UISceneDelegateClassName
17 | SceneDelegate
18 | UISceneStoryboardFile
19 | Main
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIApplicationSceneManifest
6 |
7 | UIApplicationSupportsMultipleScenes
8 |
9 | UISceneConfigurations
10 |
11 | UIWindowSceneSessionRoleApplication
12 |
13 |
14 | UISceneConfigurationName
15 | Default Configuration
16 | UISceneDelegateClassName
17 | $(PRODUCT_MODULE_NAME).SceneDelegate
18 | UISceneStoryboardFile
19 | Main
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Podfile:
--------------------------------------------------------------------------------
1 | # # Uncomment the next line to define a global platform for your project
2 | # # platform :ios, '9.0'
3 |
4 | # target 'Hello-Lynx-OC' do
5 | # # Comment the next line if you don't want to use dynamic frameworks
6 | # use_frameworks!
7 |
8 | # # Pods for Hello-Lynx-OC
9 |
10 | # end
11 |
12 | source 'https://cdn.cocoapods.org/'
13 |
14 | platform :ios, '10.0'
15 |
16 | target 'Hello-Lynx-OC' do
17 | pod 'Lynx', '3.5.1', :subspecs => [
18 | 'Framework',
19 | ]
20 |
21 |
22 | # integrate image-service, log-service, and http-service
23 | pod 'LynxService', '3.5.1', :subspecs => [
24 | 'Image',
25 | 'Log',
26 | 'Http',
27 | ]
28 |
29 | # ImageService
30 | pod 'SDWebImage','5.15.5'
31 | pod 'SDWebImageWebPCoder', '0.11.0'
32 |
33 | # XElement
34 | pod 'XElement', '3.5.1'
35 | end
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/androidTest/java/com/lynx/javaemptyproject/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.lynx.javaemptyproject", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/androidTest/java/com/lynx/kotlinemptyproject/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.lynx.kotlinemptyproject", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/build-profile.json5:
--------------------------------------------------------------------------------
1 | {
2 | "apiType": "stageMode",
3 | "buildOption": {
4 | "arkOptions": {
5 | "runtimeOnly": {
6 | "packages": [
7 | "@lynx/lynx_devtool"
8 | ]
9 | }
10 | },
11 | "externalNativeOptions": {
12 | "path": "./src/main/cpp/CMakeLists.txt",
13 | "arguments": "",
14 | "cppFlags": "",
15 | }
16 | },
17 | "buildOptionSet": [
18 | {
19 | "name": "release",
20 | "arkOptions": {
21 | "obfuscation": {
22 | "ruleOptions": {
23 | "enable": false,
24 | "files": [
25 | "./obfuscation-rules.txt"
26 | ]
27 | },
28 | },
29 | }
30 | },
31 | ],
32 | "targets": [
33 | {
34 | "name": "default"
35 | },
36 | {
37 | "name": "ohosTest",
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/ViewController.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "ViewController.h"
4 | #import "DemoLynxProvider.h"
5 |
6 | @implementation ViewController
7 |
8 | - (void)viewDidLoad {
9 | [super viewDidLoad];
10 | LynxView *lynxView = [[LynxView alloc] initWithBuilderBlock:^(LynxViewBuilder *builder) {
11 | builder.config = [[LynxConfig alloc] initWithProvider:[[DemoLynxProvider alloc] init]];
12 | builder.screenSize = self.view.frame.size;
13 | builder.fontScale = 1.0;
14 | }];
15 | lynxView.preferredLayoutWidth = self.view.frame.size.width;
16 | lynxView.preferredLayoutHeight = self.view.frame.size.height;
17 | lynxView.layoutWidthMode = LynxViewSizeModeExact;
18 | lynxView.layoutHeightMode = LynxViewSizeModeExact;
19 | [self.view addSubview:lynxView];
20 |
21 | [lynxView loadTemplateFromURL:@"main.lynx" initData:nil];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # integrating-lynx-demo-projects
2 |
3 | This repository includes some demo projects of platform applications for getting started with integrating Lynx to existing project.
4 |
5 | ## Android Empty Projects
6 |
7 | - [`KotlinEmptyProject`] : Language of Main Activity and build configuration is Kotlin.
8 | - [`JavaEmptyProject`] : Languange of Main Activity is Java and languange of build configuration is groovy.
9 |
10 | ## iOS Empty Projects
11 |
12 | - [`SwiftEmptyProject`] : Swift project with SwiftUI.
13 | - [`ObjcEmptyProject`] : Objective-C project.
14 |
15 | ## harmony Empty Projects
16 |
17 | - [`HarmonyEmptyProject`] : ArkTs Harmony project.
18 |
19 | [`JavaEmptyProject`]: ./android/JavaEmptyProject
20 | [`KotlinEmptyProject`]: ./android/KotlinEmptyProject
21 | [`ObjcEmptyProject`]: ./ios/HelloLynxObjc
22 | [`SwiftEmptyProject`]: ./ios/HelloLynxSwift
23 | [`HarmonyEmptyProject`]: ./harmony/HarmonyEmptyProject
24 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/DebugActivity.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import android.app.Activity
4 | import android.os.Bundle
5 | import com.lynx.tasm.LynxView
6 | import com.lynx.tasm.LynxViewBuilder
7 | import com.lynx.tasm.TemplateData
8 |
9 | class DebugActivity : Activity() {
10 | override fun onCreate(savedInstanceState: Bundle?) {
11 | super.onCreate(savedInstanceState)
12 | val lynxView = buildLynxView()
13 | setContentView(lynxView)
14 | val url = intent.getStringExtra("url")
15 | if (url != null) {
16 | lynxView.renderTemplateUrl(url, TemplateData.empty())
17 | }
18 | }
19 |
20 | private fun buildLynxView(): LynxView {
21 | val viewBuilder = LynxViewBuilder()
22 | viewBuilder.setTemplateProvider(DemoTemplateProvider(this))
23 | return viewBuilder.build(this)
24 | }
25 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/build-profile.json5:
--------------------------------------------------------------------------------
1 | {
2 | "app": {
3 | "products": [
4 | {
5 | "name": "default",
6 | "signingConfig": "default",
7 | "targetSdkVersion": "5.0.5(17)",
8 | "compatibleSdkVersion": "5.0.5(17)",
9 | "runtimeOS": "HarmonyOS",
10 | "buildOption": {
11 | "strictMode": {
12 | "caseSensitiveCheck": true,
13 | "useNormalizedOHMUrl": true
14 | }
15 | }
16 | }
17 | ],
18 | "buildModeSet": [
19 | {
20 | "name": "debug",
21 | },
22 | {
23 | "name": "release"
24 | }
25 | ]
26 | },
27 | "modules": [
28 | {
29 | "name": "entry",
30 | "srcPath": "./entry",
31 | "targets": [
32 | {
33 | "name": "default",
34 | "applyToProducts": [
35 | "default"
36 | ]
37 | }
38 | ]
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/DemoLynxProvider.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "DemoLynxProvider.h"
4 |
5 | @implementation DemoLynxProvider
6 |
7 | - (void)loadTemplateWithUrl:(NSString*)url onComplete:(LynxTemplateLoadBlock)callback {
8 | NSString *filePath = [[NSBundle mainBundle] pathForResource:url ofType:@"bundle"];
9 | if (filePath) {
10 | NSError *error;
11 | NSData *data = [NSData dataWithContentsOfFile:filePath options:0 error:&error];
12 | if (error) {
13 | NSLog(@"Error reading file: %@", error.localizedDescription);
14 | callback(nil, error);
15 | } else {
16 | callback(data, nil);
17 | }
18 | } else {
19 | NSError *urlError = [NSError errorWithDomain:@"com.lynx"
20 | code:400
21 | userInfo:@{NSLocalizedDescriptionKey : @"Invalid URL."}];
22 | callback(nil, urlError);
23 | }
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/code-linter.json5:
--------------------------------------------------------------------------------
1 | {
2 | "files": [
3 | "**/*.ets"
4 | ],
5 | "ignore": [
6 | "**/src/ohosTest/**/*",
7 | "**/src/test/**/*",
8 | "**/src/mock/**/*",
9 | "**/node_modules/**/*",
10 | "**/oh_modules/**/*",
11 | "**/build/**/*",
12 | "**/.preview/**/*"
13 | ],
14 | "ruleSet": [
15 | "plugin:@performance/recommended",
16 | "plugin:@typescript-eslint/recommended"
17 | ],
18 | "rules": {
19 | "@security/no-unsafe-aes": "error",
20 | "@security/no-unsafe-hash": "error",
21 | "@security/no-unsafe-mac": "warn",
22 | "@security/no-unsafe-dh": "error",
23 | "@security/no-unsafe-dsa": "error",
24 | "@security/no-unsafe-ecdsa": "error",
25 | "@security/no-unsafe-rsa-encrypt": "error",
26 | "@security/no-unsafe-rsa-sign": "error",
27 | "@security/no-unsafe-rsa-key": "error",
28 | "@security/no-unsafe-dsa-key": "error",
29 | "@security/no-unsafe-dh-key": "error",
30 | "@security/no-unsafe-3des": "error"
31 | }
32 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/DebugActivity.java:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject;
2 |
3 | import android.os.Bundle;
4 |
5 | import androidx.appcompat.app.AppCompatActivity;
6 |
7 | import com.lynx.tasm.LynxView;
8 | import com.lynx.tasm.LynxViewBuilder;
9 | import com.lynx.tasm.TemplateData;
10 |
11 | public class DebugActivity extends AppCompatActivity {
12 |
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | LynxView lynxView = buildLynxView();
17 | setContentView(lynxView);
18 | String url = getIntent().getStringExtra("url");
19 | if (url != null) {
20 | lynxView.renderTemplateUrl(url, TemplateData.empty());
21 | }
22 | }
23 | private LynxView buildLynxView() {
24 | LynxViewBuilder viewBuilder = new LynxViewBuilder();
25 | viewBuilder.setTemplateProvider(new DemoTemplateProvider(this));
26 | return viewBuilder.build(this);
27 | }
28 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/oh-package-lock.json5:
--------------------------------------------------------------------------------
1 | {
2 | "meta": {
3 | "stableOrder": true,
4 | "enableUnifiedLockfile": false
5 | },
6 | "lockfileVersion": 3,
7 | "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
8 | "specifiers": {
9 | "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0",
10 | "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21"
11 | },
12 | "packages": {
13 | "@ohos/hamock@1.0.0": {
14 | "name": "",
15 | "version": "1.0.0",
16 | "integrity": "sha512-K6lDPYc6VkKe6ZBNQa9aoG+ZZMiwqfcR/7yAVFSUGIuOAhPvCJAo9+t1fZnpe0dBRBPxj2bxPPbKh69VuyAtDg==",
17 | "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hamock/-/hamock-1.0.0.har",
18 | "registryType": "ohpm"
19 | },
20 | "@ohos/hypium@1.0.21": {
21 | "name": "",
22 | "version": "1.0.21",
23 | "integrity": "sha512-iyKGMXxE+9PpCkqEwu0VykN/7hNpb+QOeIuHwkmZnxOpI+dFZt6yhPB7k89EgV1MiSK/ieV/hMjr5Z2mWwRfMQ==",
24 | "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.21.har",
25 | "registryType": "ohpm"
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import android.os.Bundle
6 | import com.lynx.tasm.LynxView
7 | import com.lynx.tasm.LynxViewBuilder
8 | import com.lynx.xelement.XElementBehaviors
9 |
10 | class MainActivity : Activity() {
11 | override fun onCreate(savedInstanceState: Bundle?) {
12 | super.onCreate(savedInstanceState)
13 | val lynxView: LynxView = buildLynxView()
14 | setContentView(lynxView)
15 |
16 | val uri = "main.lynx.bundle";
17 | lynxView.renderTemplateUrl(uri, "")
18 |
19 | // open switch page
20 | // startActivity(Intent(this, SwitchActivity::class.java));
21 | }
22 |
23 | private fun buildLynxView(): LynxView {
24 | val viewBuilder: LynxViewBuilder = LynxViewBuilder()
25 | viewBuilder.addBehaviors(XElementBehaviors().create())
26 | viewBuilder.setTemplateProvider(DemoTemplateProvider(this))
27 | return viewBuilder.build(this)
28 | }
29 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/obfuscation-rules.txt:
--------------------------------------------------------------------------------
1 | # Define project specific obfuscation rules here.
2 | # You can include the obfuscation configuration files in the current module's build-profile.json5.
3 | #
4 | # For more details, see
5 | # https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5
6 |
7 | # Obfuscation options:
8 | # -disable-obfuscation: disable all obfuscations
9 | # -enable-property-obfuscation: obfuscate the property names
10 | # -enable-toplevel-obfuscation: obfuscate the names in the global scope
11 | # -compact: remove unnecessary blank spaces and all line feeds
12 | # -remove-log: remove all console.* statements
13 | # -print-namecache: print the name cache that contains the mapping from the old names to new names
14 | # -apply-namecache: reuse the given cache file
15 |
16 | # Keep options:
17 | # -keep-property-name: specifies property names that you want to keep
18 | # -keep-global-name: specifies names that you want to keep in the global scope
19 |
20 | -enable-property-obfuscation
21 | -enable-toplevel-obfuscation
22 | -enable-filename-obfuscation
23 | -enable-export-obfuscation
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.content.Intent;
6 | import android.os.Bundle;
7 |
8 | import com.lynx.tasm.LynxView;
9 | import com.lynx.tasm.LynxViewBuilder;
10 | import com.lynx.xelement.XElementBehaviors;
11 |
12 | public class MainActivity extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | LynxView lynxView = buildLynxView();
18 | setContentView(lynxView);
19 |
20 | String url = "main.lynx.bundle";
21 | lynxView.renderTemplateUrl(url, "");
22 |
23 | // open switch page
24 | // startActivity(new Intent(this, SwitchActivity.class));
25 | }
26 |
27 | private LynxView buildLynxView() {
28 | LynxViewBuilder viewBuilder = new LynxViewBuilder();
29 | viewBuilder.addBehaviors(new XElementBehaviors().create());
30 | viewBuilder.setTemplateProvider(new DemoTemplateProvider(this));
31 | return viewBuilder.build(this);
32 | }
33 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/ui/theme/Type.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject.ui.theme
2 |
3 | import androidx.compose.material3.Typography
4 | import androidx.compose.ui.text.TextStyle
5 | import androidx.compose.ui.text.font.FontFamily
6 | import androidx.compose.ui.text.font.FontWeight
7 | import androidx.compose.ui.unit.sp
8 |
9 | // Set of Material typography styles to start with
10 | val Typography = Typography(
11 | bodyLarge = TextStyle(
12 | fontFamily = FontFamily.Default,
13 | fontWeight = FontWeight.Normal,
14 | fontSize = 16.sp,
15 | lineHeight = 24.sp,
16 | letterSpacing = 0.5.sp
17 | )
18 | /* Other default text styles to override
19 | titleLarge = TextStyle(
20 | fontFamily = FontFamily.Default,
21 | fontWeight = FontWeight.Normal,
22 | fontSize = 22.sp,
23 | lineHeight = 28.sp,
24 | letterSpacing = 0.sp
25 | ),
26 | labelSmall = TextStyle(
27 | fontFamily = FontFamily.Default,
28 | fontWeight = FontWeight.Medium,
29 | fontSize = 11.sp,
30 | lineHeight = 16.sp,
31 | letterSpacing = 0.5.sp
32 | )
33 | */
34 | )
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/ui/theme/Type.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject.ui.theme
2 |
3 | import androidx.compose.material3.Typography
4 | import androidx.compose.ui.text.TextStyle
5 | import androidx.compose.ui.text.font.FontFamily
6 | import androidx.compose.ui.text.font.FontWeight
7 | import androidx.compose.ui.unit.sp
8 |
9 | // Set of Material typography styles to start with
10 | val Typography = Typography(
11 | bodyLarge = TextStyle(
12 | fontFamily = FontFamily.Default,
13 | fontWeight = FontWeight.Normal,
14 | fontSize = 16.sp,
15 | lineHeight = 24.sp,
16 | letterSpacing = 0.5.sp
17 | )
18 | /* Other default text styles to override
19 | titleLarge = TextStyle(
20 | fontFamily = FontFamily.Default,
21 | fontWeight = FontWeight.Normal,
22 | fontSize = 22.sp,
23 | lineHeight = 28.sp,
24 | letterSpacing = 0.sp
25 | ),
26 | labelSmall = TextStyle(
27 | fontFamily = FontFamily.Default,
28 | fontWeight = FontWeight.Medium,
29 | fontSize = 11.sp,
30 | lineHeight = 16.sp,
31 | letterSpacing = 0.5.sp
32 | )
33 | */
34 | )
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/SwitchActivity.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import android.app.Activity
4 | import android.os.Bundle
5 | import com.lynx.tasm.LynxView
6 | import com.lynx.tasm.LynxViewBuilder
7 | import com.lynx.tasm.TemplateData
8 | import java.io.IOException
9 |
10 | class SwitchActivity : Activity() {
11 | override fun onCreate(savedInstanceState: Bundle?) {
12 | super.onCreate(savedInstanceState)
13 | val lynxView = buildLynxView()
14 | setContentView(lynxView)
15 | try {
16 | val array = this.assets.open("devtool_switch/switchPage/devtoolSwitch.lynx.bundle").readBytes()
17 | lynxView.renderTemplateWithBaseUrl(
18 | array,
19 | TemplateData.empty(),
20 | "devtool_switch/switchPage/devtoolSwitch.lynx.bundle"
21 | )
22 | } catch (e: IOException) {
23 | e.printStackTrace()
24 | }
25 | }
26 |
27 | private fun buildLynxView(): LynxView {
28 | val viewBuilder = LynxViewBuilder()
29 | viewBuilder.setTemplateProvider(DemoTemplateProvider(this))
30 | return viewBuilder.build(this)
31 | }
32 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/pages/Index.ets:
--------------------------------------------------------------------------------
1 | import {
2 | LynxTemplateResourceFetcher,
3 | LynxMediaResourceFetcher,
4 | LynxGenericResourceFetcher,
5 | LynxView,
6 | } from '@lynx/lynx';
7 |
8 | import { ExampleTemplateResourceFetcher } from '../provider/ExampleTemplateResourceFetcher';
9 | import { ExampleMediaResourceFetcher } from '../provider/ExampleMediaResourceFetcher';
10 | import { ExampleGenericResourceFetcher } from '../provider/ExampleGenericResourceFetcher';
11 |
12 | @Entry
13 | @Component
14 | struct Index {
15 | templateResourceFetcher: LynxTemplateResourceFetcher = new ExampleTemplateResourceFetcher();
16 | mediaResourceFetcher: LynxMediaResourceFetcher = new ExampleMediaResourceFetcher();
17 | genericResourceFetcher: LynxGenericResourceFetcher = new ExampleGenericResourceFetcher();
18 | private url: string = 'main.lynx.bundle';
19 |
20 | build() {
21 | Column() {
22 | LynxView({
23 | templateResourceFetcher: this.templateResourceFetcher,
24 | mediaResourceFetcher: this.mediaResourceFetcher,
25 | genericResourceFetcher: this.genericResourceFetcher,
26 | url: this.url,
27 | }).width('100%').height('100%');
28 | }
29 | .size({ width: '100%', height: '100%' })
30 | }
31 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/DemoTemplateProvider.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import android.content.Context
4 | import com.lynx.tasm.provider.AbsTemplateProvider
5 | import java.io.ByteArrayOutputStream
6 | import java.io.IOException
7 |
8 | class DemoTemplateProvider(context: Context) : AbsTemplateProvider() {
9 |
10 | private var mContext: Context = context.applicationContext
11 |
12 | override fun loadTemplate(uri: String, callback: Callback) {
13 | Thread {
14 | try {
15 | mContext.assets.open(uri).use { inputStream ->
16 | ByteArrayOutputStream().use { byteArrayOutputStream ->
17 | val buffer = ByteArray(1024)
18 | var length: Int
19 | while ((inputStream.read(buffer).also { length = it }) != -1) {
20 | byteArrayOutputStream.write(buffer, 0, length)
21 | }
22 | callback.onSuccess(byteArrayOutputStream.toByteArray())
23 | }
24 | }
25 | } catch (e: IOException) {
26 | callback.onFailed(e.message)
27 | }
28 | }.start()
29 | }
30 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/hvigor/hvigor-config.json5:
--------------------------------------------------------------------------------
1 | {
2 | "modelVersion": "5.0.5",
3 | "dependencies": {
4 | },
5 | "execution": {
6 | // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */
7 | // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */
8 | // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */
9 | // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */
10 | // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */
11 | },
12 | "logging": {
13 | // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */
14 | },
15 | "debugging": {
16 | // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */
17 | },
18 | "nodeOptions": {
19 | // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/
20 | // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. For more details, visit
12 | # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Kotlin code style for this project: "official" or "obsolete":
19 | kotlin.code.style=official
20 | # Enables namespacing of each library's R class so that its R class includes only the
21 | # resources declared in the library itself and none from the library's dependencies,
22 | # thereby reducing the size of the R class for that library
23 | android.nonTransitiveRClass=true
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/DemoTemplateProvider.java:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject;
2 |
3 | import android.content.Context;
4 | import com.lynx.tasm.provider.AbsTemplateProvider;
5 | import java.io.ByteArrayOutputStream;
6 | import java.io.IOException;
7 | import java.io.InputStream;
8 |
9 | public class DemoTemplateProvider extends AbsTemplateProvider {
10 | private Context mContext;
11 |
12 | DemoTemplateProvider(Context context) {
13 | this.mContext = context.getApplicationContext();
14 | }
15 |
16 | @Override
17 | public void loadTemplate(String uri, Callback callback) {
18 | new Thread(new Runnable() {
19 | @Override
20 | public void run() {
21 | try (InputStream inputStream = mContext.getAssets().open(uri);
22 | ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
23 | byte[] buffer = new byte[1024];
24 | int length;
25 | while ((length = inputStream.read(buffer)) != -1) {
26 | byteArrayOutputStream.write(buffer, 0, length);
27 | }
28 | callback.onSuccess(byteArrayOutputStream.toByteArray());
29 | } catch (IOException e) {
30 | callback.onFailed(e.getMessage());
31 | }
32 | }
33 | }).start();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. For more details, visit
12 | # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Kotlin code style for this project: "official" or "obsolete":
19 | kotlin.code.style=official
20 | # Enables namespacing of each library's R class so that its R class includes only the
21 | # resources declared in the library itself and none from the library's dependencies,
22 | # thereby reducing the size of the R class for that library
23 | android.nonTransitiveRClass=true
24 |
25 | android.useAndroidX=true
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import "AppDelegate.h"
9 |
10 | #import
11 | #import
12 |
13 | #import "DemoLynxProvider.h"
14 |
15 | @interface AppDelegate ()
16 |
17 | @end
18 |
19 | @implementation AppDelegate
20 |
21 |
22 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
23 | // Override point for customization after application launch.
24 | [LynxEnv sharedInstance];
25 | return YES;
26 | }
27 |
28 |
29 | #pragma mark - UISceneSession lifecycle
30 |
31 |
32 | - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
33 | // Called when a new scene session is being created.
34 | // Use this method to select a configuration to create the new scene with.
35 | return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
36 | }
37 |
38 |
39 | - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions {
40 | // Called when the user discards a scene session.
41 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
42 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
43 | }
44 |
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
17 |
21 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
19 |
23 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/provider/ExampleTemplateResourceFetcher.ets:
--------------------------------------------------------------------------------
1 | import { LLog, LynxResourceRequest, LynxTemplateResourceFetcher, TemplateProviderResult } from '@lynx/lynx';
2 | import { AsyncCallback, BusinessError } from '@ohos.base';
3 | import http from '@ohos.net.http';
4 | import resourceManager from '@ohos.resourceManager';
5 |
6 | export class ExampleTemplateResourceFetcher extends LynxTemplateResourceFetcher {
7 | fetchTemplate(request: LynxResourceRequest,
8 | callback: AsyncCallback) {
9 | if (request.url.startsWith('http')) {
10 | let httpRequest = http.createHttp();
11 | httpRequest.request(
12 | request.url, {
13 | expectDataType: http.HttpDataType.ARRAY_BUFFER,
14 | }, (err: BusinessError, data: http.HttpResponse) => {
15 | callback(err, {
16 | binary: data?.result as ArrayBuffer
17 | });
18 | httpRequest.destroy();
19 | });
20 | } else {
21 | // local file
22 | const context: Context = getContext(this);
23 | const resourceMgr: resourceManager.ResourceManager = context.resourceManager;
24 | resourceMgr.getRawFileContent(request.url, (err: BusinessError, data: Uint8Array) => {
25 | callback(err, {
26 | binary: data?.buffer as ArrayBuffer
27 | })
28 | });
29 | }
30 | }
31 |
32 | fetchSSRData(request: LynxResourceRequest, callback: AsyncCallback) {
33 | let httpRequest = http.createHttp();
34 | httpRequest.request(request.url, {
35 | expectDataType: http.HttpDataType.ARRAY_BUFFER
36 | }, (err: BusinessError, data: http.HttpResponse) => {
37 | callback(err, data?.result as ArrayBuffer)
38 | httpRequest.destroy();
39 | })
40 | }
41 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/test/LocalUnit.test.ets:
--------------------------------------------------------------------------------
1 | import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
2 |
3 | export default function localUnitTest() {
4 | describe('localUnitTest', () => {
5 | // Defines a test suite. Two parameters are supported: test suite name and test suite function.
6 | beforeAll(() => {
7 | // Presets an action, which is performed only once before all test cases of the test suite start.
8 | // This API supports only one parameter: preset action function.
9 | });
10 | beforeEach(() => {
11 | // Presets an action, which is performed before each unit test case starts.
12 | // The number of execution times is the same as the number of test cases defined by **it**.
13 | // This API supports only one parameter: preset action function.
14 | });
15 | afterEach(() => {
16 | // Presets a clear action, which is performed after each unit test case ends.
17 | // The number of execution times is the same as the number of test cases defined by **it**.
18 | // This API supports only one parameter: clear action function.
19 | });
20 | afterAll(() => {
21 | // Presets a clear action, which is performed after all test cases of the test suite end.
22 | // This API supports only one parameter: clear action function.
23 | });
24 | it('assertContain', 0, () => {
25 | // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
26 | let a = 'abc';
27 | let b = 'b';
28 | // Defines a variety of assertion methods, which are used to declare expected boolean conditions.
29 | expect(a).assertContain(b);
30 | expect(a).assertEqual(a);
31 | });
32 | });
33 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Xcode
3 | #
4 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
5 |
6 | ## Obj-C/Swift specific
7 | *.hmap
8 |
9 | ## App packaging
10 | *.ipa
11 | *.dSYM.zip
12 | *.dSYM
13 | **/xcuserdata/
14 |
15 | # Swift Package Manager
16 | #
17 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
18 | # Packages/
19 | # Package.pins
20 | # Package.resolved
21 | # *.xcodeproj
22 | #
23 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
24 | # hence it is not needed unless you have added a package configuration file to your project
25 | # .swiftpm
26 |
27 | .build/
28 |
29 | # CocoaPods
30 | #
31 | # We recommend against adding the Pods directory to your .gitignore. However
32 | # you should judge for yourself, the pros and cons are mentioned at:
33 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
34 | #
35 | Pods/
36 | #
37 | # Add this line if you want to avoid checking in source code from the Xcode workspace
38 | *.xcworkspace
39 |
40 | # Carthage
41 | #
42 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
43 | # Carthage/Checkouts
44 |
45 | **/Carthage/Build/
46 |
47 | # fastlane
48 | #
49 | # It is recommended to not store the screenshots in the git repo.
50 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
51 | # For more information about the recommended setup visit:
52 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
53 |
54 | **/fastlane/report.xml
55 | **/fastlane/Preview.html
56 | **/fastlane/screenshots/**/*.png
57 | **/fastlane/test_output
58 |
59 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Xcode
3 | #
4 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
5 |
6 | ## Obj-C/Swift specific
7 | *.hmap
8 |
9 | ## App packaging
10 | *.ipa
11 | *.dSYM.zip
12 | *.dSYM
13 | **/xcuserdata/
14 |
15 | # Swift Package Manager
16 | #
17 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
18 | # Packages/
19 | # Package.pins
20 | # Package.resolved
21 | # *.xcodeproj
22 | #
23 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
24 | # hence it is not needed unless you have added a package configuration file to your project
25 | # .swiftpm
26 |
27 | .build/
28 |
29 | # CocoaPods
30 | #
31 | # We recommend against adding the Pods directory to your .gitignore. However
32 | # you should judge for yourself, the pros and cons are mentioned at:
33 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
34 | #
35 | Pods/
36 | #
37 | # Add this line if you want to avoid checking in source code from the Xcode workspace
38 | *.xcworkspace
39 |
40 | # Carthage
41 | #
42 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
43 | # Carthage/Checkouts
44 |
45 | **/Carthage/Build/
46 |
47 | # fastlane
48 | #
49 | # It is recommended to not store the screenshots in the git repo.
50 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
51 | # For more information about the recommended setup visit:
52 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
53 |
54 | **/fastlane/report.xml
55 | **/fastlane/Preview.html
56 | **/fastlane/screenshots/**/*.png
57 | **/fastlane/test_output
58 |
59 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | agp = "8.5.0"
3 | kotlin = "1.9.0"
4 | coreKtx = "1.13.1"
5 | junit = "4.13.2"
6 | junitVersion = "1.2.1"
7 | espressoCore = "3.6.1"
8 | lifecycleRuntimeKtx = "2.6.1"
9 | activityCompose = "1.9.1"
10 | composeBom = "2024.04.01"
11 |
12 | [libraries]
13 | androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
14 | junit = { group = "junit", name = "junit", version.ref = "junit" }
15 | androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
16 | androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
17 | androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
18 | androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
19 | androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
20 | androidx-ui = { group = "androidx.compose.ui", name = "ui" }
21 | androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
22 | androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
23 | androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
24 | androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
25 | androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
26 | androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
27 |
28 | [plugins]
29 | android-application = { id = "com.android.application", version.ref = "agp" }
30 | jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
31 |
32 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/module.json5:
--------------------------------------------------------------------------------
1 | {
2 | "module": {
3 | "name": "entry",
4 | "type": "entry",
5 | "description": "$string:module_desc",
6 | "mainElement": "EntryAbility",
7 | "deviceTypes": [
8 | "phone",
9 | "tablet",
10 | "2in1"
11 | ],
12 | "deliveryWithInstall": true,
13 | "installationFree": false,
14 | "pages": "$profile:main_pages",
15 | "abilities": [
16 | {
17 | "name": "EntryAbility",
18 | "srcEntry": "./ets/entryability/EntryAbility.ets",
19 | "description": "$string:EntryAbility_desc",
20 | "icon": "$media:layered_image",
21 | "label": "$string:app_name",
22 | "startWindowIcon": "$media:startIcon",
23 | "startWindowBackground": "$color:start_window_background",
24 | "exported": true,
25 | "skills": [
26 | {
27 | "entities": [
28 | "entity.system.home"
29 | ],
30 | "actions": [
31 | "action.system.home"
32 | ]
33 | }
34 | ]
35 | }
36 | ],
37 | "requestPermissions": [
38 | {
39 | "name": "ohos.permission.INTERNET",
40 | "reason": "$string:network",
41 | "usedScene": {
42 | "abilities": [
43 | "FormAbility"
44 | ],
45 | "when": "inuse"
46 | }
47 | },
48 | ],
49 | "extensionAbilities": [
50 | {
51 | "name": "EntryBackupAbility",
52 | "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets",
53 | "type": "backup",
54 | "exported": false,
55 | "metadata": [
56 | {
57 | "name": "ohos.extension.backup",
58 | "resource": "$profile:backup_config"
59 | }
60 | ],
61 | }
62 | ]
63 | }
64 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/SwitchActivity.java:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject;
2 |
3 | import android.os.Bundle;
4 |
5 | import androidx.appcompat.app.AppCompatActivity;
6 |
7 | import com.lynx.tasm.LynxView;
8 | import com.lynx.tasm.LynxViewBuilder;
9 | import com.lynx.tasm.TemplateData;
10 |
11 | import java.io.ByteArrayOutputStream;
12 | import java.io.IOException;
13 | import java.io.InputStream;
14 | import java.util.HashMap;
15 |
16 | public class SwitchActivity extends AppCompatActivity {
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | LynxView lynxView = buildLynxView();
22 | setContentView(lynxView);
23 | byte[] array = null;
24 | try {
25 | InputStream inputStream = this.getAssets().open("devtool_switch/switchPage/devtoolSwitch.lynx.bundle");
26 | array = readBytes(inputStream);
27 | lynxView.renderTemplateWithBaseUrl(array, TemplateData.empty(), "devtool_switch/switchPage/devtoolSwitch.lynx.bundle");
28 | } catch (IOException e) {
29 | e.printStackTrace();
30 | }
31 | }
32 |
33 | private LynxView buildLynxView() {
34 | LynxViewBuilder viewBuilder = new LynxViewBuilder();
35 | viewBuilder.setTemplateProvider(new DemoTemplateProvider(this));
36 | return viewBuilder.build(this);
37 | }
38 |
39 | private byte[] readBytes(InputStream inputStream) throws IOException {
40 | byte[] buffer = new byte[1024];
41 | int bytesRead;
42 | ByteArrayOutputStream output = new ByteArrayOutputStream();
43 | while ((bytesRead = inputStream.read(buffer)) != -1) {
44 | output.write(buffer, 0, bytesRead);
45 | }
46 | return output.toByteArray();
47 | }
48 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | agp = "8.5.0"
3 | kotlin = "1.9.0"
4 | coreKtx = "1.13.1"
5 | junit = "4.13.2"
6 | junitVersion = "1.2.1"
7 | espressoCore = "3.6.1"
8 | lifecycleRuntimeKtx = "2.6.1"
9 | activityCompose = "1.9.1"
10 | composeBom = "2024.04.01"
11 | appcompat = "1.7.0"
12 |
13 |
14 | [libraries]
15 | androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
16 | junit = { group = "junit", name = "junit", version.ref = "junit" }
17 | androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
18 | androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
19 | androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
20 | androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
21 | androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
22 | androidx-ui = { group = "androidx.compose.ui", name = "ui" }
23 | androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
24 | androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
25 | androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
26 | androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
27 | androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
28 | androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
29 | androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
30 |
31 | [plugins]
32 | android-application = { id = "com.android.application", version.ref = "agp" }
33 | jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
34 |
35 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/ui/theme/Theme.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject.ui.theme
2 |
3 | import android.app.Activity
4 | import android.os.Build
5 | import androidx.compose.foundation.isSystemInDarkTheme
6 | import androidx.compose.material3.MaterialTheme
7 | import androidx.compose.material3.darkColorScheme
8 | import androidx.compose.material3.dynamicDarkColorScheme
9 | import androidx.compose.material3.dynamicLightColorScheme
10 | import androidx.compose.material3.lightColorScheme
11 | import androidx.compose.runtime.Composable
12 | import androidx.compose.ui.platform.LocalContext
13 |
14 | private val DarkColorScheme = darkColorScheme(
15 | primary = Purple80,
16 | secondary = PurpleGrey80,
17 | tertiary = Pink80
18 | )
19 |
20 | private val LightColorScheme = lightColorScheme(
21 | primary = Purple40,
22 | secondary = PurpleGrey40,
23 | tertiary = Pink40
24 |
25 | /* Other default colors to override
26 | background = Color(0xFFFFFBFE),
27 | surface = Color(0xFFFFFBFE),
28 | onPrimary = Color.White,
29 | onSecondary = Color.White,
30 | onTertiary = Color.White,
31 | onBackground = Color(0xFF1C1B1F),
32 | onSurface = Color(0xFF1C1B1F),
33 | */
34 | )
35 |
36 | @Composable
37 | fun JavaEmptyProjectTheme(
38 | darkTheme: Boolean = isSystemInDarkTheme(),
39 | // Dynamic color is available on Android 12+
40 | dynamicColor: Boolean = true,
41 | content: @Composable () -> Unit
42 | ) {
43 | val colorScheme = when {
44 | dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
45 | val context = LocalContext.current
46 | if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
47 | }
48 |
49 | darkTheme -> DarkColorScheme
50 | else -> LightColorScheme
51 | }
52 |
53 | MaterialTheme(
54 | colorScheme = colorScheme,
55 | typography = Typography,
56 | content = content
57 | )
58 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/ui/theme/Theme.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject.ui.theme
2 |
3 | import android.app.Activity
4 | import android.os.Build
5 | import androidx.compose.foundation.isSystemInDarkTheme
6 | import androidx.compose.material3.MaterialTheme
7 | import androidx.compose.material3.darkColorScheme
8 | import androidx.compose.material3.dynamicDarkColorScheme
9 | import androidx.compose.material3.dynamicLightColorScheme
10 | import androidx.compose.material3.lightColorScheme
11 | import androidx.compose.runtime.Composable
12 | import androidx.compose.ui.platform.LocalContext
13 |
14 | private val DarkColorScheme = darkColorScheme(
15 | primary = Purple80,
16 | secondary = PurpleGrey80,
17 | tertiary = Pink80
18 | )
19 |
20 | private val LightColorScheme = lightColorScheme(
21 | primary = Purple40,
22 | secondary = PurpleGrey40,
23 | tertiary = Pink40
24 |
25 | /* Other default colors to override
26 | background = Color(0xFFFFFBFE),
27 | surface = Color(0xFFFFFBFE),
28 | onPrimary = Color.White,
29 | onSecondary = Color.White,
30 | onTertiary = Color.White,
31 | onBackground = Color(0xFF1C1B1F),
32 | onSurface = Color(0xFF1C1B1F),
33 | */
34 | )
35 |
36 | @Composable
37 | fun KotlinEmptyProjectTheme(
38 | darkTheme: Boolean = isSystemInDarkTheme(),
39 | // Dynamic color is available on Android 12+
40 | dynamicColor: Boolean = true,
41 | content: @Composable () -> Unit
42 | ) {
43 | val colorScheme = when {
44 | dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
45 | val context = LocalContext.current
46 | if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
47 | }
48 |
49 | darkTheme -> DarkColorScheme
50 | else -> LightColorScheme
51 | }
52 |
53 | MaterialTheme(
54 | colorScheme = colorScheme,
55 | typography = Typography,
56 | content = content
57 | )
58 | }
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Hello-Lynx-OC/SceneDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.m
3 | // Hello-Lynx-OC
4 | //
5 | // Created by ByteDance on 2025/2/20.
6 | //
7 |
8 | #import "SceneDelegate.h"
9 |
10 | @interface SceneDelegate ()
11 |
12 | @end
13 |
14 | @implementation SceneDelegate
15 |
16 |
17 | - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
18 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
19 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
20 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
21 | }
22 |
23 |
24 | - (void)sceneDidDisconnect:(UIScene *)scene {
25 | // Called as the scene is being released by the system.
26 | // This occurs shortly after the scene enters the background, or when its session is discarded.
27 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
28 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
29 | }
30 |
31 |
32 | - (void)sceneDidBecomeActive:(UIScene *)scene {
33 | // Called when the scene has moved from an inactive state to an active state.
34 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
35 | }
36 |
37 |
38 | - (void)sceneWillResignActive:(UIScene *)scene {
39 | // Called when the scene will move from an active state to an inactive state.
40 | // This may occur due to temporary interruptions (ex. an incoming phone call).
41 | }
42 |
43 |
44 | - (void)sceneWillEnterForeground:(UIScene *)scene {
45 | // Called as the scene transitions from the background to the foreground.
46 | // Use this method to undo the changes made on entering the background.
47 | }
48 |
49 |
50 | - (void)sceneDidEnterBackground:(UIScene *)scene {
51 | // Called as the scene transitions from the foreground to the background.
52 | // Use this method to save data, release shared resources, and store enough scene-specific state information
53 | // to restore the scene back to its current state.
54 | }
55 |
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // Hello-Lynx
4 | //
5 | // Created by ByteDance on 2025/2/19.
6 | //
7 |
8 | import UIKit
9 |
10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
11 |
12 | var window: UIWindow?
13 |
14 |
15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
19 | guard let _ = (scene as? UIWindowScene) else { return }
20 | }
21 |
22 | func sceneDidDisconnect(_ scene: UIScene) {
23 | // Called as the scene is being released by the system.
24 | // This occurs shortly after the scene enters the background, or when its session is discarded.
25 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
27 | }
28 |
29 | func sceneDidBecomeActive(_ scene: UIScene) {
30 | // Called when the scene has moved from an inactive state to an active state.
31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
32 | }
33 |
34 | func sceneWillResignActive(_ scene: UIScene) {
35 | // Called when the scene will move from an active state to an inactive state.
36 | // This may occur due to temporary interruptions (ex. an incoming phone call).
37 | }
38 |
39 | func sceneWillEnterForeground(_ scene: UIScene) {
40 | // Called as the scene transitions from the background to the foreground.
41 | // Use this method to undo the changes made on entering the background.
42 | }
43 |
44 | func sceneDidEnterBackground(_ scene: UIScene) {
45 | // Called as the scene transitions from the foreground to the background.
46 | // Use this method to save data, release shared resources, and store enough scene-specific state information
47 | // to restore the scene back to its current state.
48 | }
49 |
50 |
51 | }
52 |
53 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/provider/ExampleGenericResourceFetcher.ets:
--------------------------------------------------------------------------------
1 | import { LynxError, LynxSubErrorCode, LynxGenericResourceFetcher, LynxResourceRequest, LynxResourceType, LynxStreamDelegate } from '@lynx/lynx';
2 | import { AsyncCallback, BusinessError } from '@ohos.base';
3 | import http from '@ohos.net.http';
4 | import { ImageKnife, ImageKnifeOption, CacheStrategy } from '@ohos/imageknife';
5 |
6 | export class ExampleGenericResourceFetcher extends LynxGenericResourceFetcher {
7 | fetchResource(request: LynxResourceRequest, callback: AsyncCallback): void {
8 | let httpRequest = http.createHttp();
9 | httpRequest.request(request.url, {
10 | expectDataType: http.HttpDataType.ARRAY_BUFFER
11 | }, (err: BusinessError, data: http.HttpResponse) => {
12 | callback(err, data?.result as ArrayBuffer)
13 | httpRequest.destroy();
14 | })
15 | }
16 |
17 | fetchResourcePath(request: LynxResourceRequest, callback: AsyncCallback): void {
18 | if (request.type === LynxResourceType.LYNX_RESOURCE_TYPE_IMAGE) {
19 | let option = new ImageKnifeOption();
20 | option.loadSrc = request.url;
21 | option.writeCacheStrategy = CacheStrategy.File;
22 | let error: BusinessError | undefined = undefined;
23 | ImageKnife.getInstance().preLoadCache(option).then((data: string) => {
24 | if (data.length > 0) {
25 | callback(error, data);
26 | } else {
27 | error = {
28 | code: LynxSubErrorCode.E_RESOURCE_IMAGE_PIC_SOURCE,
29 | message: 'Image path is invalid',
30 | name: 'Image Error',
31 | }
32 | callback(error, '');
33 | }
34 | }).catch((e: string) => {
35 | error = {
36 | code: LynxSubErrorCode.E_RESOURCE_IMAGE_FROM_NETWORK_OR_OTHERS,
37 | message: e,
38 | name: 'Image Error',
39 | }
40 | callback(error, '');
41 | })
42 | } else {
43 | callback({
44 | code: LynxError.LYNX_ERROR_CODE_RESOURCE,
45 | message: 'unsupported type: ' + request.type,
46 | name: 'Resource Error',
47 | }, '');
48 | }
49 | }
50 |
51 | fetchStream(request: LynxResourceRequest, delegate: LynxStreamDelegate): void {
52 | // TODO(nihao.royal): support fetching stream.
53 | delegate.onStart(100);
54 | let a = new ArrayBuffer(10);
55 | delegate.onData(a, 0, 10);
56 | delegate.onEnd();
57 | }
58 |
59 | cancel(request: LynxResourceRequest): void {
60 | // TODO(nihao.royal)
61 | }
62 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/java/com/lynx/kotlinemptyproject/YourApplication.kt:
--------------------------------------------------------------------------------
1 | package com.lynx.kotlinemptyproject
2 |
3 | import android.app.Application
4 | import android.content.Intent
5 | import android.os.Handler
6 | import android.os.Looper
7 | import com.facebook.drawee.backends.pipeline.Fresco
8 | import com.facebook.imagepipeline.core.ImagePipelineConfig
9 | import com.facebook.imagepipeline.memory.PoolConfig
10 | import com.facebook.imagepipeline.memory.PoolFactory
11 | import com.lynx.devtoolwrapper.LynxDevtoolGlobalHelper
12 | import com.lynx.service.devtool.LynxDevToolService
13 | import com.lynx.service.image.LynxImageService
14 | import com.lynx.service.log.LynxLogService
15 | import com.lynx.tasm.LynxEnv
16 | import com.lynx.tasm.service.LynxServiceCenter
17 | import com.lynx.service.http.LynxHttpService
18 |
19 | class YourApplication : Application() {
20 | override fun onCreate() {
21 | super.onCreate()
22 | initLynxService()
23 | initLynxEnv()
24 | }
25 |
26 | private fun initLynxService() {
27 | // init Fresco which is needed by LynxImageService
28 | val factory = PoolFactory(PoolConfig.newBuilder().build())
29 | val builder =
30 | ImagePipelineConfig.newBuilder(applicationContext).setPoolFactory(factory)
31 | Fresco.initialize(applicationContext, builder.build())
32 |
33 | LynxServiceCenter.inst().registerService(LynxImageService.getInstance())
34 | LynxServiceCenter.inst().registerService(LynxLogService)
35 | LynxServiceCenter.inst().registerService(LynxHttpService)
36 |
37 | // register devtool service
38 | LynxServiceCenter.inst().registerService(LynxDevToolService)
39 | }
40 |
41 | private fun initLynxEnv() {
42 | LynxEnv.inst().init(
43 | this,
44 | null,
45 | null,
46 | null
47 | )
48 | // Turn on Lynx Debug
49 | LynxEnv.inst().enableLynxDebug(true)
50 | // Turn on Lynx DevTool
51 | LynxEnv.inst().enableDevtool(true)
52 | // Turn on Lynx LogBox
53 | LynxEnv.inst().enableLogBox(true)
54 | // Create a Handler associated with the main thread's Looper
55 | val mainHandler = Handler(Looper.getMainLooper())
56 | // Register OpenCard for Lynx DevTool
57 | LynxDevtoolGlobalHelper.getInstance().registerCardListener { url ->
58 | mainHandler.post {
59 | val intent = Intent(
60 | applicationContext,
61 | DebugActivity::class.java
62 | )
63 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
64 | intent.putExtra("url", url)
65 | startActivity(intent)
66 | }
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/ios/HelloLynxObjc/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - libwebp (1.5.0):
3 | - libwebp/demux (= 1.5.0)
4 | - libwebp/mux (= 1.5.0)
5 | - libwebp/sharpyuv (= 1.5.0)
6 | - libwebp/webp (= 1.5.0)
7 | - libwebp/demux (1.5.0):
8 | - libwebp/webp
9 | - libwebp/mux (1.5.0):
10 | - libwebp/demux
11 | - libwebp/sharpyuv (1.5.0)
12 | - libwebp/webp (1.5.0):
13 | - libwebp/sharpyuv
14 | - Lynx (3.2.0-alpha.1):
15 | - Lynx/Framework (= 3.2.0-alpha.1)
16 | - Lynx/Framework (3.2.0-alpha.1):
17 | - Lynx/ReleaseResource
18 | - PrimJS/napi/env
19 | - PrimJS/napi/jsc
20 | - PrimJS/napi/quickjs
21 | - PrimJS/quickjs
22 | - Lynx/ReleaseResource (3.2.0-alpha.1)
23 | - LynxService/Http (3.2.0-alpha.1):
24 | - Lynx (= 3.2.0-alpha.1)
25 | - LynxService/Image (3.2.0-alpha.1):
26 | - Lynx (= 3.2.0-alpha.1)
27 | - SDWebImage (= 5.15.5)
28 | - SDWebImageWebPCoder (= 0.11.0)
29 | - LynxService/Log (3.2.0-alpha.1):
30 | - Lynx (= 3.2.0-alpha.1)
31 | - PrimJS/log (2.11.1-alpha.3)
32 | - PrimJS/napi (2.11.1-alpha.3):
33 | - PrimJS/napi/core (= 2.11.1-alpha.3)
34 | - PrimJS/napi/env (= 2.11.1-alpha.3)
35 | - PrimJS/napi/jsc (= 2.11.1-alpha.3)
36 | - PrimJS/napi/quickjs (= 2.11.1-alpha.3)
37 | - PrimJS/napi/core (2.11.1-alpha.3)
38 | - PrimJS/napi/env (2.11.1-alpha.3):
39 | - PrimJS/napi/core
40 | - PrimJS/napi/jsc (2.11.1-alpha.3):
41 | - PrimJS/log
42 | - PrimJS/napi/core
43 | - PrimJS/quickjs
44 | - PrimJS/napi/quickjs (2.11.1-alpha.3):
45 | - PrimJS/napi/core
46 | - PrimJS/quickjs
47 | - PrimJS/quickjs (2.11.1-alpha.3):
48 | - PrimJS/log
49 | - SDWebImage (5.15.5):
50 | - SDWebImage/Core (= 5.15.5)
51 | - SDWebImage/Core (5.15.5)
52 | - SDWebImageWebPCoder (0.11.0):
53 | - libwebp (~> 1.0)
54 | - SDWebImage/Core (~> 5.15)
55 |
56 | DEPENDENCIES:
57 | - Lynx/Framework (~> 3.2.0-alpha.1)
58 | - LynxService/Http (= 3.2.0-alpha.1)
59 | - LynxService/Image (= 3.2.0-alpha.1)
60 | - LynxService/Log (= 3.2.0-alpha.1)
61 | - PrimJS/napi (~> 2.11.1-alpha.3)
62 | - PrimJS/quickjs (~> 2.11.1-alpha.3)
63 | - SDWebImage (= 5.15.5)
64 | - SDWebImageWebPCoder (= 0.11.0)
65 |
66 | SPEC REPOS:
67 | trunk:
68 | - libwebp
69 | - Lynx
70 | - LynxService
71 | - PrimJS
72 | - SDWebImage
73 | - SDWebImageWebPCoder
74 |
75 | SPEC CHECKSUMS:
76 | libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
77 | Lynx: 00d7ad16a30bf0a58beea73d027f5f93e80f3fdc
78 | LynxService: 4f2e02550b8e7eb4aeed30be8faaa9d03a90052d
79 | PrimJS: 8d3aeb28ad92eb8e1bc52fa4f6b997711ce0e26e
80 | SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe
81 | SDWebImageWebPCoder: 295a6573c512f54ad2dd58098e64e17dcf008499
82 |
83 | PODFILE CHECKSUM: c5707bce19b8143aeab1d6b0654f6f87b3f0fed1
84 |
85 | COCOAPODS: 1.11.3
86 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - libwebp (1.5.0):
3 | - libwebp/demux (= 1.5.0)
4 | - libwebp/mux (= 1.5.0)
5 | - libwebp/sharpyuv (= 1.5.0)
6 | - libwebp/webp (= 1.5.0)
7 | - libwebp/demux (1.5.0):
8 | - libwebp/webp
9 | - libwebp/mux (1.5.0):
10 | - libwebp/demux
11 | - libwebp/sharpyuv (1.5.0)
12 | - libwebp/webp (1.5.0):
13 | - libwebp/sharpyuv
14 | - Lynx (3.2.0-alpha.1):
15 | - Lynx/Framework (= 3.2.0-alpha.1)
16 | - Lynx/Framework (3.2.0-alpha.1):
17 | - Lynx/ReleaseResource
18 | - PrimJS/napi/env
19 | - PrimJS/napi/jsc
20 | - PrimJS/napi/quickjs
21 | - PrimJS/quickjs
22 | - Lynx/ReleaseResource (3.2.0-alpha.1)
23 | - LynxService/Http (3.2.0-alpha.1):
24 | - Lynx (= 3.2.0-alpha.1)
25 | - LynxService/Image (3.2.0-alpha.1):
26 | - Lynx (= 3.2.0-alpha.1)
27 | - SDWebImage (= 5.15.5)
28 | - SDWebImageWebPCoder (= 0.11.0)
29 | - LynxService/Log (3.2.0-alpha.1):
30 | - Lynx (= 3.2.0-alpha.1)
31 | - PrimJS/log (2.11.1-alpha.3)
32 | - PrimJS/napi (2.11.1-alpha.3):
33 | - PrimJS/napi/core (= 2.11.1-alpha.3)
34 | - PrimJS/napi/env (= 2.11.1-alpha.3)
35 | - PrimJS/napi/jsc (= 2.11.1-alpha.3)
36 | - PrimJS/napi/quickjs (= 2.11.1-alpha.3)
37 | - PrimJS/napi/core (2.11.1-alpha.3)
38 | - PrimJS/napi/env (2.11.1-alpha.3):
39 | - PrimJS/napi/core
40 | - PrimJS/napi/jsc (2.11.1-alpha.3):
41 | - PrimJS/log
42 | - PrimJS/napi/core
43 | - PrimJS/quickjs
44 | - PrimJS/napi/quickjs (2.11.1-alpha.3):
45 | - PrimJS/napi/core
46 | - PrimJS/quickjs
47 | - PrimJS/quickjs (2.11.1-alpha.3):
48 | - PrimJS/log
49 | - SDWebImage (5.15.5):
50 | - SDWebImage/Core (= 5.15.5)
51 | - SDWebImage/Core (5.15.5)
52 | - SDWebImageWebPCoder (0.11.0):
53 | - libwebp (~> 1.0)
54 | - SDWebImage/Core (~> 5.15)
55 |
56 | DEPENDENCIES:
57 | - Lynx/Framework (~> 3.2.0-alpha.1)
58 | - LynxService/Http (= 3.2.0-alpha.1)
59 | - LynxService/Image (= 3.2.0-alpha.1)
60 | - LynxService/Log (= 3.2.0-alpha.1)
61 | - PrimJS/napi (~> 2.11.1-alpha.3)
62 | - PrimJS/quickjs (~> 2.11.1-alpha.3)
63 | - SDWebImage (= 5.15.5)
64 | - SDWebImageWebPCoder (= 0.11.0)
65 |
66 | SPEC REPOS:
67 | trunk:
68 | - libwebp
69 | - Lynx
70 | - LynxService
71 | - PrimJS
72 | - SDWebImage
73 | - SDWebImageWebPCoder
74 |
75 | SPEC CHECKSUMS:
76 | libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
77 | Lynx: 00d7ad16a30bf0a58beea73d027f5f93e80f3fdc
78 | LynxService: 4f2e02550b8e7eb4aeed30be8faaa9d03a90052d
79 | PrimJS: 8d3aeb28ad92eb8e1bc52fa4f6b997711ce0e26e
80 | SDWebImage: fd7e1a22f00303e058058278639bf6196ee431fe
81 | SDWebImageWebPCoder: 295a6573c512f54ad2dd58098e64e17dcf008499
82 |
83 | PODFILE CHECKSUM: f2993111d859c044446b73073fe9dec7468e172e
84 |
85 | COCOAPODS: 1.11.3
86 |
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/src/main/ets/entryability/EntryAbility.ets:
--------------------------------------------------------------------------------
1 | import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
2 | import { hilog } from '@kit.PerformanceAnalysisKit';
3 | import { window } from '@kit.ArkUI';
4 | import { LLog, LynxEnv, LynxServiceCenter, LynxServiceType } from '@lynx/lynx';
5 | import { LynxBaseServiceCenter, LynxBaseServiceType } from '@lynx/lynx_base';
6 | import { LynxDevToolService } from '@lynx/lynx_devtool_service';
7 | import { LynxLogService } from '@lynx/lynx_log_service';
8 | import { LynxHttpService } from '@lynx/lynx_http_service';
9 |
10 | const DOMAIN = 0x0000;
11 |
12 | export default class EntryAbility extends UIAbility {
13 | onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
14 | this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
15 | // Init LynxService start
16 | LynxServiceCenter.registerService(LynxServiceType.DevTool, LynxDevToolService.instance);
17 | LynxServiceCenter.registerService(LynxServiceType.Http, LynxHttpService.instance);
18 | LynxBaseServiceCenter.registerService(LynxBaseServiceType.Log, LynxLogService.instance);
19 | // Init LynxService end
20 | // Init LynxEnv start
21 | LLog.useSysLog(true);
22 | LynxEnv.initialize(this.context);
23 | let options = new Map();
24 | options.set('App', 'LynxHarmonyEmptyApp');
25 | options.set('AppVersion', '0.0.1');
26 | LynxEnv.setAppInfo(options);
27 | LynxEnv.enableDevtool(true);
28 | // Init LynxEnv end
29 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
30 | }
31 |
32 | onDestroy(): void {
33 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
34 | }
35 |
36 | onWindowStageCreate(windowStage: window.WindowStage): void {
37 | // Main window is created, set main page for this ability
38 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
39 |
40 | windowStage.loadContent('pages/Index', (err) => {
41 | if (err.code) {
42 | hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
43 | return;
44 | }
45 | hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');
46 | });
47 | }
48 |
49 | onWindowStageDestroy(): void {
50 | // Main window is destroyed, release UI related resources
51 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
52 | }
53 |
54 | onForeground(): void {
55 | // Ability has brought to foreground
56 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground');
57 | }
58 |
59 | onBackground(): void {
60 | // Ability has back to background
61 | hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground');
62 | }
63 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/java/com/lynx/javaemptyproject/YourApplication.java:
--------------------------------------------------------------------------------
1 | package com.lynx.javaemptyproject;
2 |
3 | import android.app.Application;
4 | import android.content.Intent;
5 | import android.os.Handler;
6 | import android.os.Looper;
7 |
8 | import com.facebook.drawee.backends.pipeline.Fresco;
9 | import com.facebook.imagepipeline.core.ImagePipelineConfig;
10 | import com.facebook.imagepipeline.memory.PoolConfig;
11 | import com.facebook.imagepipeline.memory.PoolFactory;
12 | import com.lynx.devtoolwrapper.LynxDevtoolCardListener;
13 | import com.lynx.devtoolwrapper.LynxDevtoolGlobalHelper;
14 | import com.lynx.service.image.LynxImageService;
15 | import com.lynx.service.log.LynxLogService;
16 | import com.lynx.service.devtool.LynxDevToolService;
17 | import com.lynx.tasm.LynxEnv;
18 | import com.lynx.tasm.service.LynxServiceCenter;
19 |
20 | public class YourApplication extends Application {
21 |
22 | @Override
23 | public void onCreate() {
24 | super.onCreate();
25 | initLynxService();
26 | initLynxEnv();
27 | }
28 |
29 | private void initLynxService() {
30 | // init Fresco which is needed by LynxImageService
31 | final PoolFactory factory = new PoolFactory(PoolConfig.newBuilder().build());
32 | ImagePipelineConfig.Builder builder =
33 | ImagePipelineConfig.newBuilder(getApplicationContext()).setPoolFactory(factory);
34 | Fresco.initialize(getApplicationContext(), builder.build());
35 |
36 | LynxServiceCenter.inst().registerService(LynxImageService.getInstance());
37 | LynxServiceCenter.inst().registerService(LynxLogService.INSTANCE);
38 |
39 | // register devtool service
40 | LynxServiceCenter.inst().registerService(LynxDevToolService.getINSTANCE());
41 | }
42 |
43 | private void initLynxEnv() {
44 | LynxEnv.inst().init(
45 | this,
46 | null,
47 | null,
48 | null
49 | );
50 | // 打开 Lynx Debug 开关
51 | LynxEnv.inst().enableLynxDebug(true);
52 | // 打开 Lynx DevTool 开关
53 | LynxEnv.inst().enableDevtool(true);
54 | // 打开 Lynx LogBox 开关
55 | LynxEnv.inst().enableLogBox(true);
56 | // 创建一个 Handler 关联到主线程
57 | Handler mainHandler = new Handler(Looper.getMainLooper());
58 | // 为 Lynx DevTool 注册 OpenCard
59 | LynxDevtoolGlobalHelper.getInstance().registerCardListener(new LynxDevtoolCardListener() {
60 | public void open(String url) {
61 | mainHandler.post(new Runnable() { // 抛到主线程
62 | @Override
63 | public void run() {
64 | Intent intent = new Intent(getApplicationContext(), DebugActivity.class);
65 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
66 | intent.putExtra("url", url);
67 | startActivity(intent);
68 | }
69 | });
70 | }
71 | });
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.android.application)
3 | alias(libs.plugins.jetbrains.kotlin.android)
4 | }
5 |
6 | android {
7 | namespace 'com.lynx.javaemptyproject'
8 | compileSdk 34
9 |
10 | defaultConfig {
11 | applicationId "com.lynx.javaemptyproject"
12 | minSdk 24
13 | targetSdk 34
14 | versionCode 1
15 | versionName "1.0"
16 |
17 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
18 | vectorDrawables {
19 | useSupportLibrary true
20 | }
21 | }
22 |
23 | buildTypes {
24 | release {
25 | minifyEnabled false
26 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
27 | }
28 | }
29 | compileOptions {
30 | sourceCompatibility JavaVersion.VERSION_1_8
31 | targetCompatibility JavaVersion.VERSION_1_8
32 | }
33 | kotlinOptions {
34 | jvmTarget = '1.8'
35 | }
36 | buildFeatures {
37 | compose true
38 | }
39 | composeOptions {
40 | kotlinCompilerExtensionVersion '1.5.1'
41 | }
42 | packaging {
43 | resources {
44 | excludes += '/META-INF/{AL2.0,LGPL2.1}'
45 | }
46 | }
47 | }
48 |
49 | dependencies {
50 |
51 | implementation libs.androidx.core.ktx
52 | implementation libs.androidx.lifecycle.runtime.ktx
53 | implementation libs.androidx.activity.compose
54 | implementation platform(libs.androidx.compose.bom)
55 | implementation libs.androidx.ui
56 | implementation libs.androidx.ui.graphics
57 | implementation libs.androidx.ui.tooling.preview
58 | implementation libs.androidx.material3
59 | implementation libs.androidx.appcompat
60 | testImplementation libs.junit
61 | androidTestImplementation libs.androidx.junit
62 | androidTestImplementation libs.androidx.espresso.core
63 | androidTestImplementation platform(libs.androidx.compose.bom)
64 | androidTestImplementation libs.androidx.ui.test.junit4
65 | debugImplementation libs.androidx.ui.tooling
66 | debugImplementation libs.androidx.ui.test.manifest
67 | // lynx dependencies
68 | implementation "org.lynxsdk.lynx:lynx:3.5.1"
69 | implementation "org.lynxsdk.lynx:lynx-jssdk:3.5.1"
70 | implementation "org.lynxsdk.lynx:lynx-trace:3.5.1"
71 | implementation "org.lynxsdk.lynx:primjs:2.15.1"
72 |
73 | // integrating image-service
74 | implementation "org.lynxsdk.lynx:lynx-service-image:3.5.1"
75 |
76 | // image-service dependencies, if not added, images cannot be loaded; if the host APP needs to use other image libraries, you can customize the image-service and remove this dependency
77 | implementation "com.facebook.fresco:fresco:2.3.0"
78 | implementation "com.facebook.fresco:animated-gif:2.3.0"
79 | implementation "com.facebook.fresco:animated-webp:2.3.0"
80 | implementation "com.facebook.fresco:webpsupport:2.3.0"
81 | implementation "com.facebook.fresco:animated-base:2.3.0"
82 |
83 | implementation "com.squareup.okhttp3:okhttp:4.9.0"
84 |
85 | // integrating log-service
86 | implementation "org.lynxsdk.lynx:lynx-service-log:3.5.1"
87 |
88 | // integrating http-service
89 | implementation "org.lynxsdk.lynx:lynx-service-http:3.5.1"
90 |
91 | // add devtool's dependencies
92 | implementation "org.lynxsdk.lynx:lynx-devtool:3.5.1"
93 | implementation "org.lynxsdk.lynx:lynx-service-devtool:3.5.1"
94 |
95 | // add xelement's dependencies
96 | implementation "org.lynxsdk.lynx:xelement:3.5.1"
97 | implementation "org.lynxsdk.lynx:xelement-input:3.5.1"
98 | }
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.android.application)
3 | alias(libs.plugins.jetbrains.kotlin.android)
4 | }
5 |
6 | android {
7 | namespace = "com.lynx.kotlinemptyproject"
8 | compileSdk = 34
9 |
10 | defaultConfig {
11 | applicationId = "com.lynx.kotlinemptyproject"
12 | minSdk = 24
13 | targetSdk = 34
14 | versionCode = 1
15 | versionName = "1.0"
16 |
17 | testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
18 | vectorDrawables {
19 | useSupportLibrary = true
20 | }
21 | }
22 |
23 | buildTypes {
24 | release {
25 | isMinifyEnabled = false
26 | proguardFiles(
27 | getDefaultProguardFile("proguard-android-optimize.txt"),
28 | "proguard-rules.pro"
29 | )
30 | }
31 | }
32 | compileOptions {
33 | sourceCompatibility = JavaVersion.VERSION_1_8
34 | targetCompatibility = JavaVersion.VERSION_1_8
35 | }
36 | kotlinOptions {
37 | jvmTarget = "1.8"
38 | }
39 | buildFeatures {
40 | compose = true
41 | }
42 | composeOptions {
43 | kotlinCompilerExtensionVersion = "1.5.1"
44 | }
45 | packaging {
46 | resources {
47 | excludes += "/META-INF/{AL2.0,LGPL2.1}"
48 | }
49 | }
50 | }
51 |
52 | dependencies {
53 |
54 | implementation(libs.androidx.core.ktx)
55 | implementation(libs.androidx.lifecycle.runtime.ktx)
56 | implementation(libs.androidx.activity.compose)
57 | implementation(platform(libs.androidx.compose.bom))
58 | implementation(libs.androidx.ui)
59 | implementation(libs.androidx.ui.graphics)
60 | implementation(libs.androidx.ui.tooling.preview)
61 | implementation(libs.androidx.material3)
62 | testImplementation(libs.junit)
63 | androidTestImplementation(libs.androidx.junit)
64 | androidTestImplementation(libs.androidx.espresso.core)
65 | androidTestImplementation(platform(libs.androidx.compose.bom))
66 | androidTestImplementation(libs.androidx.ui.test.junit4)
67 | debugImplementation(libs.androidx.ui.tooling)
68 | debugImplementation(libs.androidx.ui.test.manifest)
69 |
70 | // lynx dependencies
71 | implementation("org.lynxsdk.lynx:lynx:3.5.1")
72 | implementation("org.lynxsdk.lynx:lynx-jssdk:3.5.1")
73 | implementation("org.lynxsdk.lynx:lynx-trace:3.5.1")
74 | implementation("org.lynxsdk.lynx:primjs:2.15.1")
75 |
76 | // integrating image-service
77 | implementation("org.lynxsdk.lynx:lynx-service-image:3.5.1")
78 |
79 | // image-service dependencies, if not added, images cannot be loaded; if the host APP needs to use other image libraries, you can customize the image-service and remove this dependency
80 | implementation("com.facebook.fresco:fresco:2.3.0")
81 | implementation("com.facebook.fresco:animated-gif:2.3.0")
82 | implementation("com.facebook.fresco:animated-webp:2.3.0")
83 | implementation("com.facebook.fresco:webpsupport:2.3.0")
84 | implementation("com.facebook.fresco:animated-base:2.3.0")
85 |
86 | // integrating log-service
87 | implementation("org.lynxsdk.lynx:lynx-service-log:3.5.1")
88 |
89 | // integrating http-service
90 | implementation("org.lynxsdk.lynx:lynx-service-http:3.5.1")
91 |
92 | implementation("com.squareup.okhttp3:okhttp:4.9.0")
93 |
94 | // add devtool's dependencies
95 | implementation ("org.lynxsdk.lynx:lynx-devtool:3.5.1")
96 | implementation ("org.lynxsdk.lynx:lynx-service-devtool:3.5.1")
97 |
98 | // add xelement's dependencies
99 | implementation ("org.lynxsdk.lynx:xelement:3.5.1")
100 | implementation ("org.lynxsdk.lynx:xelement-input:3.5.1")
101 | }
--------------------------------------------------------------------------------
/harmony/HarmonyEmptyProject/entry/oh-package-lock.json5:
--------------------------------------------------------------------------------
1 | {
2 | "meta": {
3 | "stableOrder": true,
4 | "enableUnifiedLockfile": false
5 | },
6 | "lockfileVersion": 3,
7 | "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
8 | "specifiers": {
9 | "@lynx/lynx@3.5.1": "@lynx/lynx@3.5.1",
10 | "@lynx/lynx_base@3.5.1": "@lynx/lynx_base@3.5.1",
11 | "@lynx/lynx_devtool@3.5.1": "@lynx/lynx_devtool@3.5.1",
12 | "@lynx/lynx_devtool_service@3.5.1": "@lynx/lynx_devtool_service@3.5.1",
13 | "@lynx/lynx_http_service@3.5.1": "@lynx/lynx_http_service@3.5.1",
14 | "@lynx/lynx_log_service@3.5.1": "@lynx/lynx_log_service@3.5.1",
15 | "@lynx/primjs@2.15.1": "@lynx/primjs@2.15.1",
16 | "@ohos/gpu_transform@^1.0.2": "@ohos/gpu_transform@1.0.4",
17 | "@ohos/imageknife@3.2.6": "@ohos/imageknife@3.2.6",
18 | "liblynx.so@../oh_modules/.ohpm/@lynx+lynx@3.5.1/oh_modules/@lynx/lynx/src/main/ets/tasm/types/liblynx": "liblynx.so@../oh_modules/.ohpm/@lynx+lynx@3.5.1/oh_modules/@lynx/lynx/src/main/ets/tasm/types/liblynx",
19 | "liblynxbase.so@../oh_modules/.ohpm/@lynx+lynx_base@3.5.1/oh_modules/@lynx/lynx_base/src/cpp/types/liblynxbase": "liblynxbase.so@../oh_modules/.ohpm/@lynx+lynx_base@3.5.1/oh_modules/@lynx/lynx_base/src/cpp/types/liblynxbase",
20 | "liblynxdevtool.so@../oh_modules/.ohpm/@lynx+lynx_devtool@3.5.1/oh_modules/@lynx/lynx_devtool/src/main/ets/types": "liblynxdevtool.so@../oh_modules/.ohpm/@lynx+lynx_devtool@3.5.1/oh_modules/@lynx/lynx_devtool/src/main/ets/types"
21 | },
22 | "packages": {
23 | "@lynx/lynx@3.5.1": {
24 | "name": "",
25 | "version": "3.5.1",
26 | "integrity": "sha512-fZOAoWXhGFUIVO+xaoVNPhDGZbA2z9MtWa8o7Nj5cCzk/pmo4B2cn1c/VnB4SisZQ28zaKN0g+7OyJ8NJ0zgwg==",
27 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx/-/lynx-3.5.1.har",
28 | "registryType": "ohpm",
29 | "dependencies": {
30 | "liblynx.so": "file:./src/main/ets/tasm/types/liblynx",
31 | "@lynx/lynx_base": "3.5.1"
32 | }
33 | },
34 | "@lynx/lynx_base@3.5.1": {
35 | "name": "",
36 | "version": "3.5.1",
37 | "integrity": "sha512-s/ctWy1bIhlKZi89qGevD+d83BdzaAzEk7VA/jLXlJlXUU8rPdLJF9dnVz5C0O1LIKBH1FXhq6qtHlnABJDBVQ==",
38 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx_base/-/lynx_base-3.5.1.har",
39 | "registryType": "ohpm",
40 | "dependencies": {
41 | "liblynxbase.so": "file:./src/cpp/types/liblynxbase"
42 | }
43 | },
44 | "@lynx/lynx_devtool@3.5.1": {
45 | "name": "",
46 | "version": "3.5.1",
47 | "integrity": "sha512-9E2Ts5aslFppPsxJJPEKf3noepFkkGhPNfzBeahr9L+Ebft695i4Ch0TYzZRU5Xgv8FSfaHq8OYiI8uoQtSVoQ==",
48 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx_devtool/-/lynx_devtool-3.5.1.har",
49 | "registryType": "ohpm",
50 | "dependencies": {
51 | "@lynx/lynx": "3.5.1",
52 | "@lynx/lynx_base": "3.5.1",
53 | "liblynxdevtool.so": "file:./src/main/ets/types/"
54 | }
55 | },
56 | "@lynx/lynx_devtool_service@3.5.1": {
57 | "name": "",
58 | "version": "3.5.1",
59 | "integrity": "sha512-0zM2LHr72ZhPGl7p7C1JEv8qPO7dVVJJkBBL7IhkWbUQajjbvCsxlRZJsQAocHMDyto9ZPoy/4H5eCBQZuAv6Q==",
60 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx_devtool_service/-/lynx_devtool_service-3.5.1.har",
61 | "registryType": "ohpm",
62 | "dependencies": {
63 | "@lynx/lynx": "3.5.1"
64 | }
65 | },
66 | "@lynx/lynx_http_service@3.5.1": {
67 | "name": "",
68 | "version": "3.5.1",
69 | "integrity": "sha512-sFgJxNev/i/Z2h30UicPKjl/5cHijzsW6GY79JSQ6EU0LzTXhCjHiddMeFv0FmdvgVktJ9iEj0YFF1nmScxfRg==",
70 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx_http_service/-/lynx_http_service-3.5.1.har",
71 | "registryType": "ohpm",
72 | "dependencies": {
73 | "@lynx/lynx": "3.5.1"
74 | }
75 | },
76 | "@lynx/lynx_log_service@3.5.1": {
77 | "name": "",
78 | "version": "3.5.1",
79 | "integrity": "sha512-wFZMxuBrgKbD/g6DGBpRpwoXALHgoKdDqRLL6IAMxdWhM8hCb/7ctcGXPHAINVmLh5anChZLqyZEB68K7h1m/A==",
80 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/lynx_log_service/-/lynx_log_service-3.5.1.har",
81 | "registryType": "ohpm",
82 | "dependencies": {
83 | "@lynx/lynx_base": "3.5.1"
84 | }
85 | },
86 | "@lynx/primjs@2.15.1": {
87 | "name": "",
88 | "version": "2.15.1",
89 | "integrity": "sha512-Aztmb1VGbfl5Zi9PFvcz+bd+xojtnDpw2SQ/vIuNOFJ6kFwFooblLfd1qRDHxkFFJLEIROvfcs6bF1Gnd+KJNg==",
90 | "resolved": "https://ohpm.openharmony.cn/ohpm/@lynx/primjs/-/primjs-2.15.1.har",
91 | "registryType": "ohpm"
92 | },
93 | "@ohos/gpu_transform@1.0.4": {
94 | "name": "",
95 | "version": "1.0.4",
96 | "integrity": "sha512-PrKlOK66kzObw/ANIzt55YMrOLLmtrhmAZIE2c/60GBoTl7+NLxONeHA2NsDZuiW+A0KnD4QylDYWH4/yo8T0w==",
97 | "resolved": "https://ohpm.byted.org/repository/ohpm-open/@ohos/gpu_transform/-/gpu_transform-1.0.4.har",
98 | "registryType": "ohpm"
99 | },
100 | "@ohos/imageknife@3.2.6": {
101 | "name": "",
102 | "version": "3.2.6",
103 | "integrity": "sha512-GdT4L8XKAjKuwi3MVeoa0VdWc3P1GD1AeGqwelm1uJSuo0OWLRWkcnXKzemunypL3pvvDCicPNXbz7nb8otwAw==",
104 | "resolved": "https://ohpm.byted.org/repository/ohpm-open/@ohos/imageknife/-/imageknife-3.2.6.har",
105 | "registryType": "ohpm",
106 | "dependencies": {
107 | "@ohos/gpu_transform": "^1.0.2"
108 | }
109 | },
110 | "liblynx.so@../oh_modules/.ohpm/@lynx+lynx@3.5.1/oh_modules/@lynx/lynx/src/main/ets/tasm/types/liblynx": {
111 | "name": "liblynx.so",
112 | "version": "0.0.1",
113 | "resolved": "",
114 | "registryType": "local"
115 | },
116 | "liblynxbase.so@../oh_modules/.ohpm/@lynx+lynx_base@3.5.1/oh_modules/@lynx/lynx_base/src/cpp/types/liblynxbase": {
117 | "name": "liblynxbase.so",
118 | "version": "0.0.1",
119 | "resolved": "",
120 | "registryType": "local"
121 | },
122 | "liblynxdevtool.so@../oh_modules/.ohpm/@lynx+lynx_devtool@3.5.1/oh_modules/@lynx/lynx_devtool/src/main/ets/types": {
123 | "name": "liblynxdevtool.so",
124 | "version": "0.0.0",
125 | "resolved": "",
126 | "registryType": "local"
127 | }
128 | }
129 | }
--------------------------------------------------------------------------------
/android/JavaEmptyProject/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/android/JavaEmptyProject/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/android/KotlinEmptyProject/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/ios/HelloLynxSwift/Hello-Lynx.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 56;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 2B94A3C92D6613730060892C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3C82D6613730060892C /* AppDelegate.swift */; };
11 | 2B94A3CB2D6613730060892C /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3CA2D6613730060892C /* SceneDelegate.swift */; };
12 | 2B94A3CD2D6613730060892C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3CC2D6613730060892C /* ViewController.swift */; };
13 | 2B94A3D02D6613730060892C /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3CF2D6613730060892C /* Base */; };
14 | 2B94A3D22D6613740060892C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3D12D6613740060892C /* Assets.xcassets */; };
15 | 2B94A3D52D6613740060892C /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 2B94A3D42D6613740060892C /* Base */; };
16 | 2B94A3DD2D6614980060892C /* DemoLynxProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */; };
17 | 2BE49E032D7720F0000D068C /* main.lynx.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2BE49E022D7720F0000D068C /* main.lynx.bundle */; };
18 | 63972E0D34F86B0706325BCE /* libPods-Hello-Lynx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXFileReference section */
22 | 2B94A3C52D6613730060892C /* Hello-Lynx.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Hello-Lynx.app"; sourceTree = BUILT_PRODUCTS_DIR; };
23 | 2B94A3C82D6613730060892C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
24 | 2B94A3CA2D6613730060892C /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
25 | 2B94A3CC2D6613730060892C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
26 | 2B94A3CF2D6613730060892C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
27 | 2B94A3D12D6613740060892C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
28 | 2B94A3D42D6613740060892C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
29 | 2B94A3D62D6613740060892C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
30 | 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoLynxProvider.swift; sourceTree = ""; };
31 | 2B94A3DE2D6614DC0060892C /* Hello-Lynx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Hello-Lynx-Bridging-Header.h"; sourceTree = ""; };
32 | 2BE49E022D7720F0000D068C /* main.lynx.bundle */ = {isa = PBXFileReference; lastKnownFileType = file; path = main.lynx.bundle; sourceTree = ""; };
33 | 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Hello-Lynx.release.xcconfig"; path = "Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx.release.xcconfig"; sourceTree = ""; };
34 | 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Hello-Lynx.debug.xcconfig"; path = "Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx.debug.xcconfig"; sourceTree = ""; };
35 | C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Hello-Lynx.a"; sourceTree = BUILT_PRODUCTS_DIR; };
36 | /* End PBXFileReference section */
37 |
38 | /* Begin PBXFrameworksBuildPhase section */
39 | 2B94A3C22D6613730060892C /* Frameworks */ = {
40 | isa = PBXFrameworksBuildPhase;
41 | buildActionMask = 2147483647;
42 | files = (
43 | 63972E0D34F86B0706325BCE /* libPods-Hello-Lynx.a in Frameworks */,
44 | );
45 | runOnlyForDeploymentPostprocessing = 0;
46 | };
47 | /* End PBXFrameworksBuildPhase section */
48 |
49 | /* Begin PBXGroup section */
50 | 2B94A3BC2D6613730060892C = {
51 | isa = PBXGroup;
52 | children = (
53 | 2BE49E022D7720F0000D068C /* main.lynx.bundle */,
54 | 2B94A3C72D6613730060892C /* Hello-Lynx */,
55 | 2B94A3C62D6613730060892C /* Products */,
56 | C6D18F00D0E7395AB3C4C81F /* Pods */,
57 | 7225697D323AB6B76668D385 /* Frameworks */,
58 | );
59 | sourceTree = "";
60 | };
61 | 2B94A3C62D6613730060892C /* Products */ = {
62 | isa = PBXGroup;
63 | children = (
64 | 2B94A3C52D6613730060892C /* Hello-Lynx.app */,
65 | );
66 | name = Products;
67 | sourceTree = "";
68 | };
69 | 2B94A3C72D6613730060892C /* Hello-Lynx */ = {
70 | isa = PBXGroup;
71 | children = (
72 | 2B94A3C82D6613730060892C /* AppDelegate.swift */,
73 | 2B94A3CA2D6613730060892C /* SceneDelegate.swift */,
74 | 2B94A3CC2D6613730060892C /* ViewController.swift */,
75 | 2B94A3CE2D6613730060892C /* Main.storyboard */,
76 | 2B94A3D12D6613740060892C /* Assets.xcassets */,
77 | 2B94A3D32D6613740060892C /* LaunchScreen.storyboard */,
78 | 2B94A3D62D6613740060892C /* Info.plist */,
79 | 2B94A3DC2D6614980060892C /* DemoLynxProvider.swift */,
80 | 2B94A3DE2D6614DC0060892C /* Hello-Lynx-Bridging-Header.h */,
81 | );
82 | path = "Hello-Lynx";
83 | sourceTree = "";
84 | };
85 | 7225697D323AB6B76668D385 /* Frameworks */ = {
86 | isa = PBXGroup;
87 | children = (
88 | C4B67B2104D0445A811952B8 /* libPods-Hello-Lynx.a */,
89 | );
90 | name = Frameworks;
91 | sourceTree = "";
92 | };
93 | C6D18F00D0E7395AB3C4C81F /* Pods */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */,
97 | 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */,
98 | );
99 | path = Pods;
100 | sourceTree = "";
101 | };
102 | /* End PBXGroup section */
103 |
104 | /* Begin PBXNativeTarget section */
105 | 2B94A3C42D6613730060892C /* Hello-Lynx */ = {
106 | isa = PBXNativeTarget;
107 | buildConfigurationList = 2B94A3D92D6613740060892C /* Build configuration list for PBXNativeTarget "Hello-Lynx" */;
108 | buildPhases = (
109 | 1A6D9ADAF68CC04F0BA85760 /* [CP] Check Pods Manifest.lock */,
110 | 2B94A3C12D6613730060892C /* Sources */,
111 | 2B94A3C22D6613730060892C /* Frameworks */,
112 | 2B94A3C32D6613730060892C /* Resources */,
113 | AB185E27E0CB58373A5099D9 /* [CP] Copy Pods Resources */,
114 | );
115 | buildRules = (
116 | );
117 | dependencies = (
118 | );
119 | name = "Hello-Lynx";
120 | productName = "Hello-Lynx";
121 | productReference = 2B94A3C52D6613730060892C /* Hello-Lynx.app */;
122 | productType = "com.apple.product-type.application";
123 | };
124 | /* End PBXNativeTarget section */
125 |
126 | /* Begin PBXProject section */
127 | 2B94A3BD2D6613730060892C /* Project object */ = {
128 | isa = PBXProject;
129 | attributes = {
130 | BuildIndependentTargetsInParallel = 1;
131 | LastSwiftUpdateCheck = 1530;
132 | LastUpgradeCheck = 1530;
133 | TargetAttributes = {
134 | 2B94A3C42D6613730060892C = {
135 | CreatedOnToolsVersion = 15.3;
136 | };
137 | };
138 | };
139 | buildConfigurationList = 2B94A3C02D6613730060892C /* Build configuration list for PBXProject "Hello-Lynx" */;
140 | compatibilityVersion = "Xcode 14.0";
141 | developmentRegion = en;
142 | hasScannedForEncodings = 0;
143 | knownRegions = (
144 | en,
145 | Base,
146 | );
147 | mainGroup = 2B94A3BC2D6613730060892C;
148 | productRefGroup = 2B94A3C62D6613730060892C /* Products */;
149 | projectDirPath = "";
150 | projectRoot = "";
151 | targets = (
152 | 2B94A3C42D6613730060892C /* Hello-Lynx */,
153 | );
154 | };
155 | /* End PBXProject section */
156 |
157 | /* Begin PBXResourcesBuildPhase section */
158 | 2B94A3C32D6613730060892C /* Resources */ = {
159 | isa = PBXResourcesBuildPhase;
160 | buildActionMask = 2147483647;
161 | files = (
162 | 2BE49E032D7720F0000D068C /* main.lynx.bundle in Resources */,
163 | 2B94A3D22D6613740060892C /* Assets.xcassets in Resources */,
164 | 2B94A3D52D6613740060892C /* Base in Resources */,
165 | 2B94A3D02D6613730060892C /* Base in Resources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXShellScriptBuildPhase section */
172 | 1A6D9ADAF68CC04F0BA85760 /* [CP] Check Pods Manifest.lock */ = {
173 | isa = PBXShellScriptBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | );
177 | inputFileListPaths = (
178 | );
179 | inputPaths = (
180 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
181 | "${PODS_ROOT}/Manifest.lock",
182 | );
183 | name = "[CP] Check Pods Manifest.lock";
184 | outputFileListPaths = (
185 | );
186 | outputPaths = (
187 | "$(DERIVED_FILE_DIR)/Pods-Hello-Lynx-checkManifestLockResult.txt",
188 | );
189 | runOnlyForDeploymentPostprocessing = 0;
190 | shellPath = /bin/sh;
191 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
192 | showEnvVarsInLog = 0;
193 | };
194 | AB185E27E0CB58373A5099D9 /* [CP] Copy Pods Resources */ = {
195 | isa = PBXShellScriptBuildPhase;
196 | buildActionMask = 2147483647;
197 | files = (
198 | );
199 | inputFileListPaths = (
200 | "${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources-${CONFIGURATION}-input-files.xcfilelist",
201 | );
202 | name = "[CP] Copy Pods Resources";
203 | outputFileListPaths = (
204 | "${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources-${CONFIGURATION}-output-files.xcfilelist",
205 | );
206 | runOnlyForDeploymentPostprocessing = 0;
207 | shellPath = /bin/sh;
208 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Hello-Lynx/Pods-Hello-Lynx-resources.sh\"\n";
209 | showEnvVarsInLog = 0;
210 | };
211 | /* End PBXShellScriptBuildPhase section */
212 |
213 | /* Begin PBXSourcesBuildPhase section */
214 | 2B94A3C12D6613730060892C /* Sources */ = {
215 | isa = PBXSourcesBuildPhase;
216 | buildActionMask = 2147483647;
217 | files = (
218 | 2B94A3DD2D6614980060892C /* DemoLynxProvider.swift in Sources */,
219 | 2B94A3CD2D6613730060892C /* ViewController.swift in Sources */,
220 | 2B94A3C92D6613730060892C /* AppDelegate.swift in Sources */,
221 | 2B94A3CB2D6613730060892C /* SceneDelegate.swift in Sources */,
222 | );
223 | runOnlyForDeploymentPostprocessing = 0;
224 | };
225 | /* End PBXSourcesBuildPhase section */
226 |
227 | /* Begin PBXVariantGroup section */
228 | 2B94A3CE2D6613730060892C /* Main.storyboard */ = {
229 | isa = PBXVariantGroup;
230 | children = (
231 | 2B94A3CF2D6613730060892C /* Base */,
232 | );
233 | name = Main.storyboard;
234 | sourceTree = "";
235 | };
236 | 2B94A3D32D6613740060892C /* LaunchScreen.storyboard */ = {
237 | isa = PBXVariantGroup;
238 | children = (
239 | 2B94A3D42D6613740060892C /* Base */,
240 | );
241 | name = LaunchScreen.storyboard;
242 | sourceTree = "";
243 | };
244 | /* End PBXVariantGroup section */
245 |
246 | /* Begin XCBuildConfiguration section */
247 | 2B94A3D72D6613740060892C /* Debug */ = {
248 | isa = XCBuildConfiguration;
249 | buildSettings = {
250 | ALWAYS_SEARCH_USER_PATHS = NO;
251 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
252 | CLANG_ANALYZER_NONNULL = YES;
253 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
254 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
255 | CLANG_ENABLE_MODULES = YES;
256 | CLANG_ENABLE_OBJC_ARC = YES;
257 | CLANG_ENABLE_OBJC_WEAK = YES;
258 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
259 | CLANG_WARN_BOOL_CONVERSION = YES;
260 | CLANG_WARN_COMMA = YES;
261 | CLANG_WARN_CONSTANT_CONVERSION = YES;
262 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
263 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
264 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
265 | CLANG_WARN_EMPTY_BODY = YES;
266 | CLANG_WARN_ENUM_CONVERSION = YES;
267 | CLANG_WARN_INFINITE_RECURSION = YES;
268 | CLANG_WARN_INT_CONVERSION = YES;
269 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
270 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
271 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
272 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
273 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
274 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
275 | CLANG_WARN_STRICT_PROTOTYPES = YES;
276 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
277 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
278 | CLANG_WARN_UNREACHABLE_CODE = YES;
279 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
280 | COPY_PHASE_STRIP = NO;
281 | DEBUG_INFORMATION_FORMAT = dwarf;
282 | ENABLE_STRICT_OBJC_MSGSEND = YES;
283 | ENABLE_TESTABILITY = YES;
284 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
285 | GCC_C_LANGUAGE_STANDARD = gnu17;
286 | GCC_DYNAMIC_NO_PIC = NO;
287 | GCC_NO_COMMON_BLOCKS = YES;
288 | GCC_OPTIMIZATION_LEVEL = 0;
289 | GCC_PREPROCESSOR_DEFINITIONS = (
290 | "DEBUG=1",
291 | "$(inherited)",
292 | );
293 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
294 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
295 | GCC_WARN_UNDECLARED_SELECTOR = YES;
296 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
297 | GCC_WARN_UNUSED_FUNCTION = YES;
298 | GCC_WARN_UNUSED_VARIABLE = YES;
299 | IPHONEOS_DEPLOYMENT_TARGET = 17.4;
300 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
301 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
302 | MTL_FAST_MATH = YES;
303 | ONLY_ACTIVE_ARCH = YES;
304 | SDKROOT = iphoneos;
305 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
306 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
307 | };
308 | name = Debug;
309 | };
310 | 2B94A3D82D6613740060892C /* Release */ = {
311 | isa = XCBuildConfiguration;
312 | buildSettings = {
313 | ALWAYS_SEARCH_USER_PATHS = NO;
314 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
315 | CLANG_ANALYZER_NONNULL = YES;
316 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
317 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
318 | CLANG_ENABLE_MODULES = YES;
319 | CLANG_ENABLE_OBJC_ARC = YES;
320 | CLANG_ENABLE_OBJC_WEAK = YES;
321 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
322 | CLANG_WARN_BOOL_CONVERSION = YES;
323 | CLANG_WARN_COMMA = YES;
324 | CLANG_WARN_CONSTANT_CONVERSION = YES;
325 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
326 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
327 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
328 | CLANG_WARN_EMPTY_BODY = YES;
329 | CLANG_WARN_ENUM_CONVERSION = YES;
330 | CLANG_WARN_INFINITE_RECURSION = YES;
331 | CLANG_WARN_INT_CONVERSION = YES;
332 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
333 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
334 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
335 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
336 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
337 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
338 | CLANG_WARN_STRICT_PROTOTYPES = YES;
339 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
340 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
341 | CLANG_WARN_UNREACHABLE_CODE = YES;
342 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
343 | COPY_PHASE_STRIP = NO;
344 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
345 | ENABLE_NS_ASSERTIONS = NO;
346 | ENABLE_STRICT_OBJC_MSGSEND = YES;
347 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
348 | GCC_C_LANGUAGE_STANDARD = gnu17;
349 | GCC_NO_COMMON_BLOCKS = YES;
350 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
351 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
352 | GCC_WARN_UNDECLARED_SELECTOR = YES;
353 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
354 | GCC_WARN_UNUSED_FUNCTION = YES;
355 | GCC_WARN_UNUSED_VARIABLE = YES;
356 | IPHONEOS_DEPLOYMENT_TARGET = 17.4;
357 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
358 | MTL_ENABLE_DEBUG_INFO = NO;
359 | MTL_FAST_MATH = YES;
360 | SDKROOT = iphoneos;
361 | SWIFT_COMPILATION_MODE = wholemodule;
362 | VALIDATE_PRODUCT = YES;
363 | };
364 | name = Release;
365 | };
366 | 2B94A3DA2D6613740060892C /* Debug */ = {
367 | isa = XCBuildConfiguration;
368 | baseConfigurationReference = 72043EE1F9E3529358168057 /* Pods-Hello-Lynx.debug.xcconfig */;
369 | buildSettings = {
370 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
371 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
372 | CODE_SIGN_STYLE = Automatic;
373 | CURRENT_PROJECT_VERSION = 1;
374 | DEVELOPMENT_TEAM = 53DJZDK42H;
375 | ENABLE_USER_SCRIPT_SANDBOXING = NO;
376 | GENERATE_INFOPLIST_FILE = YES;
377 | INFOPLIST_FILE = "Hello-Lynx/Info.plist";
378 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
379 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
380 | INFOPLIST_KEY_UIMainStoryboardFile = Main;
381 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
382 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
383 | LD_RUNPATH_SEARCH_PATHS = (
384 | "$(inherited)",
385 | "@executable_path/Frameworks",
386 | );
387 | MARKETING_VERSION = 1.0;
388 | PRODUCT_BUNDLE_IDENTIFIER = "test.Hello-Lynx";
389 | PRODUCT_NAME = "$(TARGET_NAME)";
390 | SWIFT_EMIT_LOC_STRINGS = YES;
391 | SWIFT_OBJC_BRIDGING_HEADER = "Hello-Lynx/Hello-Lynx-Bridging-Header.h";
392 | SWIFT_VERSION = 5.0;
393 | TARGETED_DEVICE_FAMILY = "1,2";
394 | };
395 | name = Debug;
396 | };
397 | 2B94A3DB2D6613740060892C /* Release */ = {
398 | isa = XCBuildConfiguration;
399 | baseConfigurationReference = 61CE2062BA0F77A3DF32F268 /* Pods-Hello-Lynx.release.xcconfig */;
400 | buildSettings = {
401 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
402 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
403 | CODE_SIGN_STYLE = Automatic;
404 | CURRENT_PROJECT_VERSION = 1;
405 | DEVELOPMENT_TEAM = 53DJZDK42H;
406 | ENABLE_USER_SCRIPT_SANDBOXING = NO;
407 | GENERATE_INFOPLIST_FILE = YES;
408 | INFOPLIST_FILE = "Hello-Lynx/Info.plist";
409 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
410 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
411 | INFOPLIST_KEY_UIMainStoryboardFile = Main;
412 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
413 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
414 | LD_RUNPATH_SEARCH_PATHS = (
415 | "$(inherited)",
416 | "@executable_path/Frameworks",
417 | );
418 | MARKETING_VERSION = 1.0;
419 | PRODUCT_BUNDLE_IDENTIFIER = "test.Hello-Lynx";
420 | PRODUCT_NAME = "$(TARGET_NAME)";
421 | SWIFT_EMIT_LOC_STRINGS = YES;
422 | SWIFT_OBJC_BRIDGING_HEADER = "Hello-Lynx/Hello-Lynx-Bridging-Header.h";
423 | SWIFT_VERSION = 5.0;
424 | TARGETED_DEVICE_FAMILY = "1,2";
425 | };
426 | name = Release;
427 | };
428 | /* End XCBuildConfiguration section */
429 |
430 | /* Begin XCConfigurationList section */
431 | 2B94A3C02D6613730060892C /* Build configuration list for PBXProject "Hello-Lynx" */ = {
432 | isa = XCConfigurationList;
433 | buildConfigurations = (
434 | 2B94A3D72D6613740060892C /* Debug */,
435 | 2B94A3D82D6613740060892C /* Release */,
436 | );
437 | defaultConfigurationIsVisible = 0;
438 | defaultConfigurationName = Release;
439 | };
440 | 2B94A3D92D6613740060892C /* Build configuration list for PBXNativeTarget "Hello-Lynx" */ = {
441 | isa = XCConfigurationList;
442 | buildConfigurations = (
443 | 2B94A3DA2D6613740060892C /* Debug */,
444 | 2B94A3DB2D6613740060892C /* Release */,
445 | );
446 | defaultConfigurationIsVisible = 0;
447 | defaultConfigurationName = Release;
448 | };
449 | /* End XCConfigurationList section */
450 | };
451 | rootObject = 2B94A3BD2D6613730060892C /* Project object */;
452 | }
453 |
--------------------------------------------------------------------------------