Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 0 additions & 25 deletions .github/workflows/core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,6 @@ jobs:
echo ${{ secrets.KEY_STORE }} | base64 --decode > key.jks
fi

- name: Checkout libxposed/api
uses: actions/checkout@v6
with:
repository: libxposed/api
path: libxposed/api
ref: 54582730315ba4a3d7cfaf9baf9d23c419e07006

- name: Checkout libxposed/service
uses: actions/checkout@v6
with:
repository: libxposed/service
path: libxposed/service

- name: Setup Java
uses: actions/setup-java@v5
with:
Expand Down Expand Up @@ -84,18 +71,6 @@ jobs:
shell: bash
run: rm -rf $ANDROID_HOME/cmake

- name: Build dependencies
working-directory: libxposed
run: |
echo 'org.gradle.caching=true' >> ~/.gradle/gradle.properties
echo 'org.gradle.parallel=true' >> ~/.gradle/gradle.properties
echo 'org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -XX:+UseParallelGC' >> ~/.gradle/gradle.properties
echo 'android.native.buildOutput=verbose' >> ~/.gradle/gradle.properties
cd api
./gradlew publishToMavenLocal
cd ../service
./gradlew publishToMavenLocal

- name: Build with Gradle
run: |
./gradlew zipAll
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
apache/local/generated
.project
.settings
.cache
Expand All @@ -7,6 +6,6 @@ apache/local/generated
/local.properties
/.idea
.DS_Store
/build
build
/captures
bin/
20 changes: 13 additions & 7 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,21 @@
[submodule "external/fmt"]
path = external/fmt
url = https://github.com/fmtlib/fmt.git
[submodule "patch/libs/manifest-editor"]
path = axml/libs/manifest-editor
url = https://github.com/JingMatrix/ManifestEditor.git
[submodule "external/xz-embedded"]
path = external/xz-embedded
url = https://github.com/tukaani-project/xz-embedded
[submodule "apache/commons-lang"]
path = apache/commons-lang
url = https://github.com/apache/commons-lang
url = https://github.com/tukaani-project/xz-embedded.git
[submodule "external/lsplt"]
path = external/lsplt
url = https://github.com/JingMatrix/LSPlt
[submodule "services/libxposed"]
path = services/libxposed
url = https://github.com/libxposed/service.git
[submodule "xposed/libxposed"]
path = xposed/libxposed
url = https://github.com/libxposed/api.git
[submodule "external/apache/commons-lang"]
path = external/apache/commons-lang
url = https://github.com/apache/commons-lang.git
[submodule "external/axml/manifest-editor"]
path = external/axml/manifest-editor
url = https://github.com/JingMatrix/ManifestEditor.git
1 change: 0 additions & 1 deletion apache/commons-lang
Submodule commons-lang deleted from 623235
1 change: 0 additions & 1 deletion axml/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion axml/libs/manifest-editor
Submodule manifest-editor deleted from c40dc8
7 changes: 3 additions & 4 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,12 @@ copy {
}

dependencies {
api(libs.libxposed.api)
implementation(projects.apache)
implementation(projects.axml)
api(projects.xposed)
implementation(projects.external.apache)
implementation(projects.external.axml)
implementation(projects.hiddenapi.bridge)
implementation(projects.services.daemonService)
implementation(projects.services.managerService)
implementation(projects.xposed)
compileOnly(libs.androidx.annotation)
compileOnly(projects.hiddenapi.stubs)
}
3 changes: 1 addition & 2 deletions daemon/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,8 @@ android.applicationVariants.all {
}

dependencies {
implementation(libs.libxposed.`interface`)
implementation(libs.agp.apksig)
implementation(projects.apache)
implementation(projects.external.apache)
implementation(projects.hiddenapi.bridge)
implementation(projects.services.daemonService)
implementation(projects.services.managerService)
Expand Down
14 changes: 6 additions & 8 deletions external/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
project(external)

macro(SET_OPTION option value)
set(${option} ${value} CACHE INTERNAL "" FORCE)
endmacro()
cmake_minimum_required(VERSION 3.10)

SET_OPTION(Plugin.SymbolResolver OFF)
SET_OPTION(FMT_INSTALL OFF)
project(external)

set(XZ_SOURCES
xz_crc32.c
Expand All @@ -19,7 +14,10 @@ add_library(xz_static STATIC ${XZ_SOURCES})
target_compile_options(xz_static PRIVATE -DXZ_USE_CRC64)
target_include_directories(xz_static PRIVATE ${XZ_INCLUDES})

OPTION(LSPLANT_BUILD_SHARED OFF)
option(LSPLANT_BUILD_SHARED OFF)
option(Plugin.SymbolResolver OFF)
option(FMT_INSTALL OFF)

add_subdirectory(dobby)
add_subdirectory(fmt)
add_subdirectory(lsplant/lsplant/src/main/jni)
Expand Down
30 changes: 30 additions & 0 deletions external/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# External Dependencies

This directory contains all the external dependencies required to build the Vector framework.
They are included as git submodules to ensure version consistency and timely updating.

## Native dependencies

- [Dobby](https://github.com/JingMatrix/Dobby):
A lightweight, multi-platform inline hooking framework. It serves as the backend for all native function hooking (`HookInline`).

- [fmt](https://github.com/fmtlib/fmt):
A modern formatting library used for high-performance, type-safe logging throughout the native code.

- [LSPlant](https://github.com/JingMatrix/LSPlant):
A hooking framework for the Android Runtime (ART). It provides the core functionality for intercepting and modifying Java methods.

- [xz-embedded](https://github.com/tukaani-project/xz-embedded):
A lightweight data compression library with a small footprint. It is used by the ELF parser to decompress the `.gnu_debugdata` section of stripped native libraries.

- [LSPlt](https://github.com/JingMatrix/LSPlt):
A library for PLT (Procedure Linkage Table) hooking. It is used in the `dex2oat` sub-project to bypass a detection point. **Note:** This is included as a submodule for project convenience but is not compiled into the `external` C++ library itself.

## Java libraries

- [apache/commons-lang](https://github.com/apache/commons-lang):
A package of Java utility classes for the classes that are in java.lang's hierarchy. Some classes are renamed and then used to implement the `XposedHelpers` API.

- [axml/manifest-editor](https://github.com/JingMatrix/ManifestEditor):
A a tool used to modify Android Manifest binary file. It is to parse manifestation files of Xposed modules.

1 change: 1 addition & 0 deletions external/apache/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
local/generated
File renamed without changes.
1 change: 1 addition & 0 deletions external/apache/commons-lang
Submodule commons-lang added at 675ab0
File renamed without changes.
4 changes: 2 additions & 2 deletions axml/build.gradle.kts → external/axml/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ java {
targetCompatibility = androidTargetCompatibility
sourceSets {
main {
java.srcDirs("libs/manifest-editor/lib/src/main/java")
resources.srcDirs("libs/manifest-editor/lib/src/main")
java.srcDirs("manifest-editor/lib/src/main/java")
resources.srcDirs("manifest-editor/lib/src/main")
}
}
}
1 change: 1 addition & 0 deletions external/axml/manifest-editor
Submodule manifest-editor added at e79724
4 changes: 0 additions & 4 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ agp = "8.13.1"
kotlin = "2.2.21"
nav = "2.9.6"
appcenter = "5.0.5"
libxposed = "100"
glide = "5.0.5"
okhttp = "5.3.2"
ktfmt = "0.25.0"
Expand Down Expand Up @@ -59,6 +58,3 @@ gson = { module = "com.google.code.gson:gson", version = "2.13.2" }
hiddenapibypass = { module = "org.lsposed.hiddenapibypass:hiddenapibypass", version = "6.1" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.10.2" }

libxposed-api = { group = "io.github.libxposed", name = "api", version.ref = "libxposed" }
libxposed-interface = { group = "io.github.libxposed", name = "interface", version.ref = "libxposed" }
8 changes: 8 additions & 0 deletions services/daemon-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,19 @@ android {
}
}

sourceSets {
named("main") {
java.srcDirs("src/main/java", "../libxposed/service/src/main")
aidl.srcDirs("src/main/aidl", "../libxposed/interface/src/main/aidl")
}
}

aidlPackagedList += "org/lsposed/lspd/models/Module.aidl"
aidlPackagedList += "org/lsposed/lspd/models/PreloadedApk.aidl"
namespace = "org.lsposed.lspd.daemonservice"
}

dependencies {
compileOnly(libs.androidx.annotation)
compileOnly(projects.hiddenapi.stubs)
}
1 change: 1 addition & 0 deletions services/libxposed
Submodule libxposed added at 496b76
12 changes: 2 additions & 10 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,17 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
mavenLocal {
content {
includeGroup("io.github.libxposed")
}
}
}
versionCatalogs {
create("libs")
}
}

rootProject.name = "LSPosed"
include(
":apache",
":app",
":axml",
":core",
":daemon",
":dex2oat",
":external:axml",
":external:apache",
":hiddenapi:stubs",
":hiddenapi:bridge",
":magisk-loader",
Expand Down
10 changes: 6 additions & 4 deletions xposed/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,18 @@ plugins {

ktfmt { kotlinLangStyle() }

val versionCodeProvider: Provider<String> by rootProject.extra
val versionNameProvider: Provider<String> by rootProject.extra

android {
namespace = "org.matrix.vector.xposed"

buildFeatures { androidResources { enable = false } }

sourceSets {
named("main") {
java.srcDirs("src/main/kotlin", "libxposed/api/src/main/java")
}
}
}

dependencies {
api(libs.libxposed.api)
compileOnly(libs.androidx.annotation)
}
1 change: 1 addition & 0 deletions xposed/libxposed
Submodule libxposed added at 545827