将你的网站秒变安卓APP 开源免费 Website-to-APK

Website-to-APK:高效的开源 WebView 应用构建框架

在移动应用开发领域,将现有网站快速封装为原生 Android APK 的需求日益凸显,尤其对于开发者寻求最小化开发周期和资源投入的场景。Website-to-APK 作为一款精炼的开源工具,通过 WebView 组件实现无缝转换,无需 Android Studio 或 Java 编程专长,即可将任意网站转化为功能完整的 APK 包装器。该框架不仅简化了构建流程,还确保了跨设备兼容性和安全性,适用于从静态站点到动态 Web 应用的多种用例。根据 GitHub 数据,该项目已助力数千开发者部署生产级应用,显著降低了移动端转型门槛。

将你的网站秒变APP 开源免费 Website-to-APK-1

 

核心特性

  • 完全免费且开源**:基于 MIT 许可协议,源代码公开透明,用户可自由审查、修改和扩展,确保合规性和可维护性。
  • 直观命令行界面**:采用丰富多彩的输出格式,提供用户友好的交互体验,即使是初学者也能高效导航。
  • 自动化环境依赖**:内置 OpenJDK 17 和 Android SDK 工具的自动下载与安装机制,消除手动配置的复杂性。
  • 完整 APK 生命周期管理**:涵盖签名、构建和测试的全链路自动化,支持生产级部署。
  • 用户脚本集成**:兼容 Tampermonkey 风格的脚本注入,扩展应用功能而无需核心修改。
  • 低资源占用**:优化后的构建过程对系统需求最小化,适用于资源受限的环境。

快速入门

克隆此存储库:

git clone https://github.com/Jipok/website-to-apk
cd website-to-apk

创建配置文件 webapk.conf

id = myapp # Application ID (will be com.myapp.webtoapk)
name = My App Name # Display name of the app
mainURL = https://example.com # Target website URL
icon = example.png # Path to your app icon (PNG format)
allowSubdomains = true # Allow navigation between example.com and sub.example.com
requireDoubleBackToExit = true # Require double back press to exit app
enableExternalLinks = true # Allow external links
openExternalLinksInBrowser = true # If allowed: open external links in browser or WebView
confirmOpenInBrowser = true # Show confirmation before opening external browser
allowOpenMobileApp = false # Block external app links/schemes

生成签名密钥(只需一次,确保生成的文件安全):

./make.sh keygen

应用配置并构建:

./make.sh build

最终的 APK 将在当前目录中创建。

注意:如果构建应用报错的话,请检查配置文件,配置文件的id选项中不能包含“点”。

 YouTube 示例

目录中提供了 YouTube 的预配置配置文件 confs/youtube。要构建 YouTube APK,只需执行以下命令:

./make.sh build confs/youtube/webapk.conf

 

可用命令

./make.sh build [config] - 应用配置并构建
./make.sh keygen - 生成签名密钥
./make.sh test - 在连接的设备上安装并测试 APK
./make.sh clean - 清理构建文件
./make.sh apk - 不使用 apply_config 构建 APK
./make.sh apply_config - 从配置文件应用设置
./make.sh get_java - 在本地下载 OpenJDK 17

应用链接/深层链接

您可以通过在配置文件中设置选项,让您的应用处理指向网站的链接 deep link。设置后,在设备上点击指向您网站的链接将在应用中打开,而不是在浏览器中打开。

例如,如果您的网站是 https://example.com,请设置:

deeplink = example.com

用户脚本支持

该应用程序通过配置选项支持用户脚本(类似于 Tampermonkey/Violentmonkey 脚本) scripts

scripts = scripts/*.js # Load all .js files from scripts directory
# OR
scripts = site-*.js # Load all files matching pattern
# OR
scripts = script1*.js script20.js # Load specific script files

用户脚本如何工作:
- 脚本可以使用 Tampermonkey/Violentmonkey/etc @match そして @run-at 指令,其他的忽略
- 如果没有 @match 指定,脚本将在所有页面上运行
- 仅 GM_addStyle 支持 Greasemonkey API
- 有 toast("short message") 関数
- 可以使用以下方式监视脚本控制台输出(console.log/alert/warn):

./make.sh test

常见用例包括:
- 为网站添加暗模式
- 自定义网站外观
- 添加新功能
- 修复移动兼容性问题

一些有用的脚本示例:
dark-mode.js - 尊重系统偏好的通用暗色主题
instant.js - 当用户点击时预加载页面,加快页面加载速度

附加 WebView 选项

还可以配置以下高级选项:

cookies = "key1=value1; key2=value2" # Cookies for mainURL host
basicAuth = login:password # HTTP Basic Auth credentials for mainURL host
userAgent = "MyCustomUserAgent/1.0" # Custom UserAgent header
JSEnabled = true # Enable JavaScript execution
JSCanOpenWindowsAutomatically = true # Allow JS to open new windows/popups

DomStorageEnabled = true # Enable HTML5 DOM storage
DatabaseEnabled = true # Enable HTML5 Web SQL Database
SavePassword = true # Allow saving passwords in WebView
AllowFileAccess = true
AllowFileAccessFromFileURLs = true
forceLandscapeMode = false # Lock screen orientation to landscape

showDetailsOnErrorScreen = false # Show connection error details for user
confirmOpenExternalApp = true # Show confirmation before opening external app
blockLocalhostRequests = true # Block requests to 127.0.0.1
trustUserCA = false # Allow app to trust user-installed SSL certs
geolocationEnabled = false # Block geolocation API

技术细节

  1. - 目标 Android API:33(Android 13)
  2. - 最低 Android API:24(Android 7.0)
  3. - 构建工具版本:33.0.2
  4. - Gradle 版本:7.4
  5. - 所需 Java 版本:17
  6. - 所有应用程序数据都存储在应用程序的私有目录中
  7. - 密钥库 app/my-release-key.jks 密码默认设置为“123456”

在移动开发工具链中,Website-to-APK 以其模块化和可扩展性脱颖而出,特别适合快速原型迭代或将 Web 资产转化为原生分发包。无论您是独立开发者还是团队协作,该框架都能显著缩短从概念到部署的周期,同时保持高兼容性和安全性。立即克隆仓库,探索其潜力——开源社区的力量,将您的想法转化为现实。

スコア

手紙への返信

メールアドレスが変更されることはありません。 支払い欄に必須の項目は必須です