精品軟體與實用教程
Website-to-APK:高效的开源 WebView 应用构建框架
在移动应用开发领域,将现有网站快速封装为原生 Android APK 的需求日益凸显,尤其对于开发者寻求最小化开发周期和资源投入的场景。Website-to-APK 作为一款精炼的开源工具,通过 WebView 组件实现无缝转换,无需 Android Studio 或 Java 编程专长,即可将任意网站转化为功能完整的 APK 包装器。该框架不仅简化了构建流程,还确保了跨设备兼容性和安全性,适用于从静态站点到动态 Web 应用的多种用例。根据 GitHub 数据,该项目已助力数千开发者部署生产级应用,显著降低了移动端转型门槛。
核心特性
- 完全免费且开源**:基于 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
技术细节
- - 目标 Android API:33(Android 13)
- - 最低 Android API:24(Android 7.0)
- - 构建工具版本:33.0.2
- - Gradle 版本:7.4
- - 所需 Java 版本:17
- - 所有应用程序数据都存储在应用程序的私有目录中
- - 密钥库
app/my-release-key.jks
密码默认设置为“123456”
在移动开发工具链中,Website-to-APK 以其模块化和可扩展性脱颖而出,特别适合快速原型迭代或将 Web 资产转化为原生分发包。无论您是独立开发者还是团队协作,该框架都能显著缩短从概念到部署的周期,同时保持高兼容性和安全性。立即克隆仓库,探索其潜力——开源社区的力量,将您的想法转化为现实。