Skip to content

Commit c82a385

Browse files
feat: 更新版本号至 0.1.7,禁用通用 APK 构建,优化 CMake 配置以支持可重现构建
1 parent 81cf2d4 commit c82a385

File tree

3 files changed

+93
-83
lines changed

3 files changed

+93
-83
lines changed

.github/workflows/android-build-release-matrix.yml

Lines changed: 79 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434

3535
- name: Init submodules (llama.cpp)
3636
run: |
37-
git submodule update --init --depth 1
37+
git submodule update --init
3838
3939
- name: Set up JDK 21
4040
uses: actions/setup-java@v4
@@ -101,83 +101,83 @@ jobs:
101101
path: app/build/outputs/apk/foss/release/*.apk
102102
retention-days: 1
103103

104-
build-foss-universal:
105-
name: Build FOSS Universal APK
106-
runs-on: ubuntu-latest
107-
env:
108-
JAVA_HOME_21_X64: /usr/lib/jvm/java-21-openjdk-amd64
109-
steps:
110-
- name: Checkout repository
111-
uses: actions/checkout@v4
112-
113-
- name: Init submodules (llama.cpp)
114-
run: |
115-
git submodule update --init --depth 1
116-
117-
- name: Set up JDK 21
118-
uses: actions/setup-java@v4
119-
with:
120-
java-version: '21'
121-
distribution: 'temurin'
122-
123-
- name: Cache Gradle
124-
uses: actions/cache@v4
125-
with:
126-
path: |
127-
~/.gradle/caches
128-
~/.gradle/wrapper/
129-
key: gradle-cache-${{ runner.os }}-v1
130-
131-
- name: Grant execute permission for gradlew
132-
run: chmod +x ./gradlew
133-
134-
- name: Accept Android SDK licenses
135-
run: |
136-
if [ -f "/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager" ]; then
137-
SDK_MANAGER="/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager"
138-
else
139-
SDK_MANAGER=$(find $ANDROID_HOME -name sdkmanager | head -n 1)
140-
fi
141-
if [ -n "$SDK_MANAGER" ]; then
142-
yes | $SDK_MANAGER --licenses || true
143-
else
144-
yes | sdkmanager --licenses || true
145-
fi
146-
147-
- name: Decode keystore (if provided)
148-
shell: bash
149-
env:
150-
RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }}
151-
run: |
152-
set -euo pipefail
153-
if [ -n "${RELEASE_KEYSTORE_BASE64:-}" ]; then
154-
mkdir -p app/release
155-
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "$PWD/app/release/release-keystore.jks"
156-
chmod 600 "$PWD/app/release/release-keystore.jks"
157-
fi
158-
159-
- name: Build FOSS Universal
160-
env:
161-
RELEASE_KEYSTORE_KEY: ${{ secrets.RELEASE_KEYSTORE_KEY }}
162-
RELEASE_KEYSTORE_SUBKEY: ${{ secrets.RELEASE_KEYSTORE_SUBKEY }}
163-
run: |
164-
set -euo pipefail
165-
export GRADLE_OPTS="-Xmx3g"
104+
# build-foss-universal:
105+
# name: Build FOSS Universal APK
106+
# runs-on: ubuntu-latest
107+
# env:
108+
# JAVA_HOME_21_X64: /usr/lib/jvm/java-21-openjdk-amd64
109+
# steps:
110+
# - name: Checkout repository
111+
# uses: actions/checkout@v4
112+
113+
# - name: Init submodules (llama.cpp)
114+
# run: |
115+
# git submodule update --init --depth 1
116+
117+
# - name: Set up JDK 21
118+
# uses: actions/setup-java@v4
119+
# with:
120+
# java-version: '21'
121+
# distribution: 'temurin'
122+
123+
# - name: Cache Gradle
124+
# uses: actions/cache@v4
125+
# with:
126+
# path: |
127+
# ~/.gradle/caches
128+
# ~/.gradle/wrapper/
129+
# key: gradle-cache-${{ runner.os }}-v1
130+
131+
# - name: Grant execute permission for gradlew
132+
# run: chmod +x ./gradlew
133+
134+
# - name: Accept Android SDK licenses
135+
# run: |
136+
# if [ -f "/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager" ]; then
137+
# SDK_MANAGER="/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager"
138+
# else
139+
# SDK_MANAGER=$(find $ANDROID_HOME -name sdkmanager | head -n 1)
140+
# fi
141+
# if [ -n "$SDK_MANAGER" ]; then
142+
# yes | $SDK_MANAGER --licenses || true
143+
# else
144+
# yes | sdkmanager --licenses || true
145+
# fi
146+
147+
# - name: Decode keystore (if provided)
148+
# shell: bash
149+
# env:
150+
# RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }}
151+
# run: |
152+
# set -euo pipefail
153+
# if [ -n "${RELEASE_KEYSTORE_BASE64:-}" ]; then
154+
# mkdir -p app/release
155+
# echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "$PWD/app/release/release-keystore.jks"
156+
# chmod 600 "$PWD/app/release/release-keystore.jks"
157+
# fi
158+
159+
# - name: Build FOSS Universal
160+
# env:
161+
# RELEASE_KEYSTORE_KEY: ${{ secrets.RELEASE_KEYSTORE_KEY }}
162+
# RELEASE_KEYSTORE_SUBKEY: ${{ secrets.RELEASE_KEYSTORE_SUBKEY }}
163+
# run: |
164+
# set -euo pipefail
165+
# export GRADLE_OPTS="-Xmx3g"
166166

167-
STORE_FILE="$PWD/app/release/release-keystore.jks"
168-
SIGNING_PROPS=""
169-
if [ -f "$STORE_FILE" ] && [ -n "${RELEASE_KEYSTORE_KEY:-}" ] && [ -n "${RELEASE_KEYSTORE_SUBKEY:-}" ]; then
170-
SIGNING_PROPS="-Pandroid.injected.signing.store.file=$STORE_FILE -Pandroid.injected.signing.store.password=${RELEASE_KEYSTORE_KEY} -Pandroid.injected.signing.key.password=${RELEASE_KEYSTORE_SUBKEY} -Pandroid.injected.signing.key.alias=release"
171-
fi
167+
# STORE_FILE="$PWD/app/release/release-keystore.jks"
168+
# SIGNING_PROPS=""
169+
# if [ -f "$STORE_FILE" ] && [ -n "${RELEASE_KEYSTORE_KEY:-}" ] && [ -n "${RELEASE_KEYSTORE_SUBKEY:-}" ]; then
170+
# SIGNING_PROPS="-Pandroid.injected.signing.store.file=$STORE_FILE -Pandroid.injected.signing.store.password=${RELEASE_KEYSTORE_KEY} -Pandroid.injected.signing.key.password=${RELEASE_KEYSTORE_SUBKEY} -Pandroid.injected.signing.key.alias=release"
171+
# fi
172172

173-
./gradlew clean assembleFossRelease $SIGNING_PROPS
173+
# ./gradlew clean assembleFossRelease $SIGNING_PROPS
174174

175-
- name: Upload Artifact
176-
uses: actions/upload-artifact@v4
177-
with:
178-
name: apk-foss-universal
179-
path: app/build/outputs/apk/foss/release/*universal.apk
180-
retention-days: 1
175+
# - name: Upload Artifact
176+
# uses: actions/upload-artifact@v4
177+
# with:
178+
# name: apk-foss-universal
179+
# path: app/build/outputs/apk/foss/release/*universal.apk
180+
# retention-days: 1
181181

182182
build-full:
183183
name: Build Full Flavor APKs
@@ -190,7 +190,7 @@ jobs:
190190

191191
- name: Init submodules (llama.cpp)
192192
run: |
193-
git submodule update --init --depth 1
193+
git submodule update --init
194194
195195
- name: Set up JDK 21
196196
uses: actions/setup-java@v4
@@ -259,7 +259,9 @@ jobs:
259259

260260
release:
261261
name: Create Release
262-
needs: [build-foss-split, build-foss-universal, build-full]
262+
# needs: [build-foss-split, build-foss-universal, build-full]
263+
needs: [build-foss-split, build-full]
264+
263265
runs-on: ubuntu-latest
264266
steps:
265267
- name: Checkout repository

app/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ android {
1818
applicationId = "top.stevezmt.calsync"
1919
minSdk = 23
2020
targetSdk = 36
21-
versionCode = 12
22-
versionName = "0.1.6"
21+
versionCode = 13
22+
versionName = "0.1.7"
2323

2424
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2525

@@ -64,7 +64,7 @@ android {
6464
// Include major architectures and riscv64
6565
include("arm64-v8a", "x86_64", "armeabi-v7a", "x86", "riscv64")
6666
}
67-
isUniversalApk = true
67+
isUniversalApk = false
6868
}
6969
}
7070

app/src/main/cpp/CMakeLists.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,26 @@ project(calsync_llama_jni C CXX)
55
# CMAKE_SOURCE_DIR = app/src/main/cpp
66
set(LLAMA_DIR_RELATIVE "${CMAKE_SOURCE_DIR}/../../../../third_party/llama.cpp")
77
get_filename_component(LLAMA_DIR ${LLAMA_DIR_RELATIVE} ABSOLUTE)
8+
get_filename_component(PROJECT_ROOT "${CMAKE_SOURCE_DIR}/../../../.." ABSOLUTE)
89

910
# Enforce C++17 for the entire project
1011
set(CMAKE_CXX_STANDARD 17)
1112
set(CMAKE_CXX_STANDARD_REQUIRED ON)
12-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -ffile-prefix-map=${LLAMA_DIR}=. -ffile-prefix-map=${CMAKE_BINARY_DIR}=.")
13-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -ffile-prefix-map=${LLAMA_DIR}=. -ffile-prefix-map=${CMAKE_BINARY_DIR}=.")
1413

15-
# Reproducible build fixes
14+
# Reproducible build fixes: map all absolute paths to relative
15+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -ffile-prefix-map=${PROJECT_ROOT}=. -ffile-prefix-map=${LLAMA_DIR}=. -ffile-prefix-map=${CMAKE_BINARY_DIR}=.")
16+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -ffile-prefix-map=${PROJECT_ROOT}=. -ffile-prefix-map=${LLAMA_DIR}=. -ffile-prefix-map=${CMAKE_BINARY_DIR}=.")
17+
18+
add_compile_options("-ffile-prefix-map=${PROJECT_ROOT}=.")
1619
add_compile_options("-ffile-prefix-map=${LLAMA_DIR}=.")
1720
add_compile_options("-ffile-prefix-map=${CMAKE_BINARY_DIR}=.")
1821
add_link_options("LINKER:--build-id=none")
1922

23+
# Force llama.cpp to use fixed build info for reproducibility
24+
set(GIT_EXECUTABLE "false" CACHE FILEPATH "Disable git for reproducible builds" FORCE)
25+
set(BUILD_NUMBER "0" CACHE STRING "Fixed build number" FORCE)
26+
set(BUILD_COMMIT "reproducible" CACHE STRING "Fixed commit hash" FORCE)
27+
2028
if(NOT EXISTS ${LLAMA_DIR})
2129
message(FATAL_ERROR "llama.cpp not found at ${LLAMA_DIR}")
2230
endif()

0 commit comments

Comments
 (0)