You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Alexey Tsvetkov c1ecbd44ae Use cmake from master again 3 years ago
..
.idea Copy IDEA settings from androidx project (#1455) 3 years ago
.run Change Compose build scripts 3 years ago
buildSrc Add publishing infrastructure for MPP targets 3 years ago
external Add linux-arm64 to the build script, add forgoten tools.jar 4 years ago
frameworks Updated frameworks/support to a fresh mpp branch state 3 years ago
golden@ff549f2541 rebasing to latest compose 3 years ago
gradle/wrapper Switch main components build to Gradle 7.3.3 (#1643) 3 years ago
prebuilts/androidx Update Compose 3 years ago
screenshots Compose as submodule, scripts for build/test Compose (#830) 4 years ago
scripts Use cmake from master again 3 years ago
.gitignore Copy IDEA settings from androidx project (#1455) 3 years ago
README.md Add publishing infrastructure for MPP targets 3 years ago
build.gradle.kts Add publishing infrastructure for MPP targets 3 years ago
gradle.properties Update gradle.properties 3 years ago
gradlew Compose as submodule, scripts for build/test Compose (#830) 4 years ago
gradlew.bat Compose as submodule, scripts for build/test Compose (#830) 4 years ago
settings.gradle.kts Add publishing infrastructure for MPP targets 3 years ago

README.md

Project in Android Studio

Composite build of Compose-jb sources

Download submodules after downloading the main project:

git submodule update --init --recursive

Set this property to always update submodules on git checkout/pull/reset:

git config --global submodule.recurse true

General requirements

  • Java 11 (should be specified in JAVA_HOME)
  • [macOs/Linux] Android SDK downloaded via ./scripts/downloadAndroidSdk
  • [Windows] Android SDK downloaded from Android Studio and specified in ANDROID_SDK_ROOT. Required components:
    • Android 12
    • Build-Tools 30.0.3
    • NDK 21.3.6528147 (in folder $androidSdk/ndk, not in $androidSdk/ndk/$version)
    • CMake 3.10.2.4988404 (in folder $androidSdk/cmake, not in $androidSdk/cmake/$version)

Developing in IDE

  1. Download Android Studio 2021.1.1 Canary 8 (https://developer.android.com/studio/archive) (it is mandatory to use exactly this version!)
  2. Set environment variables:
export ALLOW_PUBLIC_REPOS=1
export JAVA_TOOLS_JAR=$PWD/external/tools.jar
export ANDROIDX_PROJECTS=COMPOSE
export JAVA_HOME=<JDK_home> // it should point to Java 11 and contain /include/jvmti.h
  1. Set gradle properties in ~/.gradle/gradle.properties:
androidx.compose.multiplatformEnabled=true
# note that https://android.googlesource.com/platform/frameworks/support build doesn't work with jetbrains.compose.jsCompilerTestsEnabled)
jetbrains.compose.jsCompilerTestsEnabled=true
androidx.validateProjectStructure=false
  1. Open compose folder in Android Studio (not compose/frameworks/support)
  2. Download a custom Gradle 7.2 and specify it in Settings -> Build, Execution, Deployment -> Build Tools -> Gradle (because Android Studio will pick the wrong Gradle in the subproject instead of the Gradle in the root project)
  3. Specify Gradle JDK 11 in ... -> Build Tools -> Gradle
  4. [macOs/Linux] Specify Android SDK pointed to a folder, downloaded via ./scripts/downloadAndroidSdk

Scripts

Publish artifacts to the local directory out/androidx/build/support_repo/org/jetbrains/compose:

export COMPOSE_CUSTOM_VERSION=0.0.0-custom
./scripts/publish

(on Windows it doesn't build at the moment, the issue is in the line packageInspector(project, project(":compose:ui:ui-inspection") in compose/frameworks/support/compose/ui/ui/build.gradle)

Publish extended icons:

./scripts/publishExtendedIcons

Run tests for Desktop:

./scripts/testDesktop

Run tests for Web:

./scripts/testWeb

Multiplatform build

./scripts/downloadAndroidSdk
export COMPOSE_CUSTOM_VERSION=1.1.0-beta04
./scripts/publishToMavenLocal -Pcompose.platforms=all
./scripts/publishGradlePluginToMavenLocal
./scripts/publishWebComponentsToMavenLocal

-Pcompose.platforms=all could be replace with comma-separated list of platforms, such as js,jvm,androidDebug,androidRelease,macosx64,uikitx64.