KMP WORDPRESS + ANDROID PARSE · INSTALLATION

WPKit

Klient i UI WordPress KMP oraz adapter Parse/Paging dla Androida.

A KMP WordPress client/UI with the Android Parse/Paging adapter.

Stable 3.0.0 Next 3.0.1-SNAPSHOT

1. Dodaj repozytorium pakietów1. Add the package repository

Dodaj repozytorium do dependencyResolutionManagement w pliku settings.gradle.kts. Dane dostępowe są pobierane wyłącznie ze zmiennych środowiskowych — dokumentacja celowo nie zawiera żadnych wartości kluczy.

Add the repository to dependencyResolutionManagement in settings.gradle.kts. Credentials are read only from environment variables—this documentation intentionally contains no key values.

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://maven.pkg.github.com/nerdrip/wpkit")
            credentials {
                username = providers.environmentVariable("GITHUB_ACTOR").orNull
                password = providers.environmentVariable("GITHUB_TOKEN").orNull
            }
        }
    }
}
Ustaw GITHUB_ACTOR i GITHUB_TOKEN w lokalnym środowisku lub magazynie sekretów CI. Token do pobierania pakietów wymaga uprawnienia read:packages. Nie zapisuj jego wartości w repozytorium. Set GITHUB_ACTOR and GITHUB_TOKEN in your local environment or CI secret store. Package downloads require read:packages. Never store the token value in the repository.

2. Wybierz kanał i dodaj zależność2. Choose a channel and add the dependency

Kotlin Multiplatform Stable 3.x

wpkit-core dodaj do commonMain. Gradle wybierze Ktor Android, CIO dla JVM/Desktop, Darwin dla iOS lub JS dla Wasm. Nie deklaruj ręcznie wygenerowanych współrzędnych -android, -jvm, -ios* ani -wasm-js.

Add wpkit-core to commonMain. Gradle selects Ktor Android, CIO for JVM/Desktop, Darwin for iOS or JS for Wasm. Do not declare generated -android, -jvm, -ios* or -wasm-js coordinates.

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("rip.nerd.wpkit:wpkit-core:3.0.0")
        }
        androidMain.dependencies {
            // Optional legacy Views/Paging/Parse adapter:
            implementation("rip.nerd.wpkit:wpkit:3.0.0")
        }
    }
}
API KMP importuj z rip.nerd.wpkit.multiplatform. Historyczny adapter Android pozostaje w rip.nerd.wpkit.core; rozdzielone namespace pozwalają używać obu artefaktów w jednym APK bez duplikatów klas.Import the KMP API from rip.nerd.wpkit.multiplatform. The legacy Android adapter remains in rip.nerd.wpkit.core; distinct namespaces let both artifacts coexist in one APK without duplicate classes.
Wydania produkcyjne WPKit używają wyłącznie stabilnych wersji KitsuneDB i KitsuneNET. Kanał WPKit Snapshot śledzi odpowiadające mu snapshoty zależności.WPKit production releases consume only stable KitsuneDB and KitsuneNET versions. The WPKit Snapshot channel tracks the matching dependency snapshots.

Snapshot 3.0.1

dependencies {
    implementation("rip.nerd.wpkit:wpkit-core:3.0.1-SNAPSHOT")
    implementation("rip.nerd.wpkit:wpkit:3.0.1-SNAPSHOT") // Android, optional
}
wpkit-core nie zależy od KitsuneDB ani KitsuneNET. Androidowy wpkit 3.0.1-SNAPSHOT używa snapshotów 3.0.1 obu bibliotek i workflow czeka na ich publikację przed testem.wpkit-core has no KitsuneDB or KitsuneNET dependency. The Android wpkit 3.0.1-SNAPSHOT uses both 3.0.1 snapshots and its workflow waits for them before verification.

Katalog artefaktówArtifact catalog

ArtifactFunkcja i zakresFunction and scopePlatforms
wpkit-coreWordPress REST posts, pages, taxonomies and menus; typed Workspace endpoints; bounded media/network decoding; account lifecycle; token leases; outbox/conflicts; webhook verification; and Compose Multiplatform components.Android, JVM, iOS, Wasm
wpkitLegacy Android facade with Views, Paging 3, Parse SDK and KitsuneDB/KitsuneNET integration. It exports wpkit-core for Android consumers.Android only

Magazyny zależne od aplikacji są otwarte przez WPAccountStore, WPTokenStore i WPOutboxStore. Na iOS użyj Keychain dla sesji, na Androidzie szyfrowanego magazynu, a na Web własnej polityki IndexedDB/cookie. WPKit nie zapisuje tokenów do niezabezpieczonego localStorage i nie wymusza jednego dostawcy.

Application-specific persistence is open through WPAccountStore, WPTokenStore and WPOutboxStore. Use Keychain for sessions on iOS, encrypted storage on Android and an application-owned IndexedDB/cookie policy on Web. WPKit does not put tokens in unprotected localStorage or force one provider.

Kompletne przykłady WordPress REST, kont, bezpiecznych magazynów i outbox dla Android/iOS/Desktop/Web: przykłady platformowe HTML.Complete WordPress REST, account, secure-store and outbox examples for Android/iOS/Desktop/Web: HTML platform examples.

3. Zsynchronizuj i sprawdź projekt3. Sync and verify the project

Po zmianie zależności wykonaj synchronizację Gradle, a następnie zbuduj wariant debug aplikacji:

After changing the dependency, sync Gradle and build the app's debug variant:

./gradlew :app:assembleDebug

W systemie Windows użyj gradlew.bat zamiast ./gradlew.

On Windows, use gradlew.bat instead of ./gradlew.

Aplikacja demonstracyjna nie przechowuje tokenu w repozytorium. Opcjonalnie ustaw wpkit.workspaceToken=<workspace-token> w ignorowanym local.properties albo zmienną środowiskową WPKIT_WORKSPACE_TOKEN. Bez tokenu demo używa standardowego WordPress REST API.The demo app does not store a token in the repository. Optionally set wpkit.workspaceToken=<workspace-token> in the ignored local.properties file or provide WPKIT_WORKSPACE_TOKEN. Without a token, the demo uses the standard WordPress REST API.

Ręczna publikacja wersjiManual version publishing

Poniższe polecenia są przeznaczone dla opiekuna biblioteki. Wartości poświadczeń pozostają w środowisku lub magazynie sekretów i nie są częścią komendy.

The commands below are for library maintainers. Credential values remain in the environment or secret store and are never part of the command.

Snapshot z gałęzi developSnapshot from the develop branch

./gradlew :wpkit:publishAarPublicationToGitHubPackagesRepository :wpkit-core:publishAllPublicationsToGitHubPackagesRepository -Psnapshot=true --no-daemon

Buduje wariant deweloperski i publikuje wersję z sufiksem -SNAPSHOT.

Builds the development variant and publishes a version carrying the -SNAPSHOT suffix.

Wersja stabilna z main lub taga wydaniaStable version from main or a release tag

./gradlew :wpkit:publishAarPublicationToGitHubPackagesRepository :wpkit-core:publishAllPublicationsToGitHubPackagesRepository -Psnapshot=false --no-daemon

Buduje wariant release bez sufiksu. Uruchamiaj wyłącznie z czystego commita przeznaczonego do wydania.

Builds the release variant without a suffix. Run it only from a clean commit intended for release.

Lokalny snapshot do pracyLocal development snapshot

./gradlew :wpkit:publishAarPublicationToMavenLocal :wpkit-core:publishToMavenLocal -Psnapshot=true --no-daemon

Zadanie Maven Local publikuje linię 3.x z sufiksem -local-SNAPSHOT. POM androidowego adaptera wskazuje wtedy wyłącznie kitsunedb:3.0.1-local-SNAPSHOT i kitsunenet:3.0.1-local-SNAPSHOT, więc test nie miesza lokalnego WPKit ze zdalnymi zależnościami.

The Maven Local task publishes the 3.x line with the -local-SNAPSHOT suffix. The Android adapter POM then references only kitsunedb:3.0.1-local-SNAPSHOT and kitsunenet:3.0.1-local-SNAPSHOT, so the test never mixes local WPKit with remote dependencies.

Lokalna wersja produkcyjnaLocal production build

./gradlew :wpkit:publishAarPublicationToMavenLocal :wpkit-core:publishToMavenLocal -Psnapshot=false --no-daemon

Publikuje wariant release jako rip.nerd.wpkit:wpkit:3.0.0-local. Wersja produkcyjna lokalna nie ma sufiksu -SNAPSHOT.

Publishes the release variant as rip.nerd.wpkit:wpkit:3.0.0-local. A local production build never carries the -SNAPSHOT suffix.

Projekt testowy musi mieć mavenLocal() i używać dokładnej wersji -local. Dzięki osobnym współrzędnym lokalny artefakt nie może zasłonić zdalnego Stable ani Snapshot.The test project must enable mavenLocal() and request the exact -local version. Separate coordinates prevent a local artifact from shadowing remote Stable or Snapshot builds.
repositories { mavenLocal() }

dependencies {
    implementation("rip.nerd.wpkit:wpkit:3.0.1-local-SNAPSHOT")
}

ZasadyRules

  • *MavenLocal* zawsze dodaje -local; opcja -Plocal=true służy tylko do podglądu wersji, np. przez printPublicationVersion.*MavenLocal* always adds -local; -Plocal=true is only needed to inspect the version, for example with printPublicationVersion.
  • Artefaktów -local nie wolno wysyłać do współdzielonego repozytorium; build zdalnej publikacji jest przed tym zabezpieczony.-local artifacts must never be uploaded to a shared repository; remote publishing fails fast if this is attempted.
  • -local-SNAPSHOT jest nadpisywalny. Przed opublikowaniem zmienionej wersji -local bez Snapshot należy podnieść baseVersion.-local-SNAPSHOT is replaceable. Bump baseVersion before publishing changed -local content without Snapshot.
  • Po wydaniu 3.0.0 gałąź develop publikuje 3.0.1-SNAPSHOT; wersje stabilne powstają wyłącznie z tagów wydania.After the 3.0.0 release, develop publishes 3.0.1-SNAPSHOT; stable versions are created only from release tags.