Skip to content

Commit 18cb877

Browse files
committed
feat: 打包 v3.66 三档×双端安装包(.apk/.exe)并挂上官网下载
- 全新构建三档 .apk(原生 WebView 壳,零第三方依赖)与 .exe(Electron 便携版) - 命名 HiCode-v3.66{M,R,X}-android.apk / -win-x64.exe;exe 作为 Release 资产直链 - 官网下载页:平台卡与三版档位卡均挂上 .apk/.exe 直链,清理 v1.00 旧安装包 - 新增 build/pack/:可复现的外壳工程与打包脚本(pack-exe.js / android 工程+pack-apk.sh) - README 补充六件套说明;exe 不入库(约71MB,作 Release 资产)
1 parent 504c64f commit 18cb877

17 files changed

Lines changed: 333 additions & 33 deletions

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 大型本地二进制(exe 约 71MB)不入库,仅作 GitHub Release 资产
2+
download/*-win-x64.exe
3+
# 安卓工程生成产物
4+
build/pack/android/app/build/
5+
/app/build/
6+
# 本地工具缓存
7+
node_modules/
8+
pkg/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ HiCode(简称 **HC**)的诞生源于一个朴素的愿望:**让编程真
5555
## 下载
5656

5757
- 下载页:**[https://HiCodeHC.github.io/download/](https://HiCodeHC.github.io/download/)**
58-
- 可选 **安卓端(.apk)****Windows 电脑端(.exe)****网页端(在线)** 三种形态,每版再分 **M 轻量 / R 标准 / X 全能** 三档(见下载页 / GitHub Releases);本地端基于网页端 IDE 封装的离线运行时,编译更快、体验一致。各版本(M/R/X)打包为 .apk / .exe 的步骤见下载页「打包为 .apk / .exe」指引,可分别产出对应版本的安装包
58+
- 可选 **安卓端(.apk)****Windows 电脑端(.exe)****网页端(在线)** 三种形态,每版再分 **M 轻量 / R 标准 / X 全能** 三档(见下载页 / GitHub Releases);本地端基于网页端 IDE 封装的离线运行时,编译更快、体验一致。各版本(M/R/X)**已打包好安装包** `.apk``.exe`,均作为 GitHub Release 资产直链下载,无需再自行构建;打包工程与脚本见仓库 `build/pack/`(Electron 打包 .exe、原生 WebView 壳打包 .apk)
5959
- **GitHub Releases**:自 v3.01 起,每个新版本均基于 Git Tag 在 **[GitHub Releases](https://github.com/HiCodeHC/HiCodeHC.github.io/releases)** 默认发布(含三档离线单文件版 / 源码 / 原生安装包),可前往查看各版本的发布说明与附件。
6060
- **发布规范**:版本发布流程(三档拆分 → 归档旧版 → 打包 → Tag → Release)见 **[docs/RELEASING.md](docs/RELEASING.md)**,每次发布照此执行。
6161

build/pack/.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 构建中间产物与本地二进制不入库
2+
.pcs/art/installer/*.7z
3+
.buildcache
4+
*/build/
5+
*.exe
6+
*.apk
7+
download/*-win-x64.exe
8+
graphstore.json
9+
.development/
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
plugins {
2+
id 'com.android.application'
3+
}
4+
5+
android {
6+
namespace 'com.hicode.android'
7+
compileSdk 34
8+
9+
defaultConfig {
10+
// 由命令行 -PappId / -PappLabel 注入,逐档打包
11+
applicationId project.findProperty('appId') ?: 'com.hicode.android.x'
12+
minSdk 24
13+
targetSdk 34
14+
versionCode 366
15+
versionName "3.66"
16+
17+
manifestPlaceholders = [
18+
appLabel: project.findProperty('appLabel') ?: 'HiCode'
19+
]
20+
}
21+
22+
buildTypes {
23+
release {
24+
minifyEnabled false
25+
}
26+
}
27+
compileOptions {
28+
sourceCompatibility JavaVersion.VERSION_17
29+
targetCompatibility JavaVersion.VERSION_17
30+
}
31+
packagingOptions {
32+
jniLibs { useLegacyPackaging = true }
33+
}
34+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
<application
5+
android:allowBackup="true"
6+
android:label="${appLabel}"
7+
android:usesCleartextTraffic="true"
8+
android:theme="@android:style/Theme.Material.Light.NoActionBar">
9+
<activity
10+
android:name=".MainActivity"
11+
android:exported="true"
12+
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|keyboard|uiMode">
13+
<intent-filter>
14+
<action android:name="android.intent.action.MAIN" />
15+
<category android:name="android.intent.category.LAUNCHER" />
16+
</intent-filter>
17+
</activity>
18+
</application>
19+
20+
</manifest>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.hicode.android;
2+
3+
import android.app.Activity;
4+
import android.os.Bundle;
5+
import android.webkit.WebSettings;
6+
import android.webkit.WebView;
7+
import android.webkit.WebViewClient;
8+
9+
/**
10+
* HiCode (HIC 语言) 本地开发环境 —— 原生 WebView 壳。
11+
* 零第三方依赖:直接以 file:// 加载 assets/index.html(即对应档位的离线单文件)。
12+
*/
13+
public class MainActivity extends Activity {
14+
15+
private WebView webView;
16+
17+
@Override
18+
protected void onCreate(Bundle savedInstanceState) {
19+
super.onCreate(savedInstanceState);
20+
webView = new WebView(this);
21+
22+
WebSettings s = webView.getSettings();
23+
s.setJavaScriptEnabled(true);
24+
s.setDomStorageEnabled(true);
25+
s.setAllowFileAccess(true);
26+
s.setAllowFileAccessFromFileURLs(true);
27+
s.setAllowUniversalAccessFromFileURLs(true);
28+
s.setMediaPlaybackRequiresUserGesture(false);
29+
s.setLoadWithOverviewMode(true);
30+
s.setUseWideViewPort(false);
31+
32+
webView.setWebViewClient(new WebViewClient());
33+
34+
setContentView(webView);
35+
webView.loadUrl("file:///android_asset/index.html");
36+
}
37+
38+
@Override
39+
public void onBackPressed() {
40+
if (webView != null && webView.canGoBack()) {
41+
webView.goBack();
42+
} else {
43+
super.onBackPressed();
44+
}
45+
}
46+
}

build/pack/android/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
plugins {
2+
id 'com.android.application' version '8.7.3' apply false
3+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
systemProp.https.nonProxyHosts=localhost|127.0.0.1
2+
3+
org.gradle.jvmargs=-Xmx3g -XX:MaxMetaspaceSize=1g
4+
org.gradle.daemon=false

build/pack/android/pack-apk.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
# 打包三档 apk(原生 WebView 壳)。用法:bash pack-apk.sh
3+
# 前序:ANDROID_HOME 含 build-tools 34.0.0 + platforms;android-34;JAVA_HOME=17
4+
set -euo pipefail
5+
6+
ROOT="${HICODE_SITE:-/workspace/hicodehc-site}"
7+
OFF="$ROOT/download"
8+
SRC="$(dirname "$(readlink -f "$0")")"
9+
OUT_DIR="$SRC/app/build/outputs/apk/debug"
10+
ASSETS="$SRC/app/src/main/assets"
11+
GRADLE_USER_HOME="${GRADLE_USER_HOME:-/workspace/.gradle}"
12+
13+
mkdir -p "$ASSETS"
14+
for KEY in M R X; do
15+
file="HiCode-v3.66${KEY}-offline.html"
16+
[ -f "$OFF/$file" ] || { echo "缺少 $file"; exit 1; }
17+
cp "$OFF/$file" "$ASSETS/index.html"
18+
echo "▶ 构建 $KEY apk …"
19+
( cd "$SRC" && GRADLE_USER_HOME="$GRADLE_USER_HOME" \
20+
/root/.local/share/mise/shims/gradle assembleDebug \
21+
-PappId=com.hicode.android.$(echo $KEY | tr A-Z a-z) \
22+
-PappLabel="HiCode-v3.66${KEY}" )
23+
apk=$(find "$OUT_DIR" -name "app-debug.apk" | head -1)
24+
[ -n "$apk" ] || { echo "$KEY 打包失败:未找到 app-debug.apk"; exit 1; }
25+
cp "$apk" "$OFF/HiCode-v3.66${KEY}-android.apk"
26+
echo "$KEY → HiCode-v3.66${KEY}-android.apk($(du -m "$OFF/HiCode-v3.66${KEY}-android.apk" | cut -f1) MB)"
27+
done
28+
echo "全部 apk 完成:" ; ls -la "$OFF"/HiCode-v3.66?-android.apk

build/pack/android/settings.gradle

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
pluginManagement {
2+
repositories {
3+
google()
4+
mavenCentral()
5+
gradlePluginPortal()
6+
}
7+
}
8+
dependencyResolutionManagement {
9+
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10+
repositories {
11+
google()
12+
mavenCentral()
13+
}
14+
}
15+
rootProject.name = "HiCode"
16+
include ":app"

0 commit comments

Comments
 (0)