• Stars
    star
    177
  • Rank 215,985 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android offline package solution for H5

license release Platform API

HLLOfflineWebView is a lightweight and high-performance hybrid framework developed by HUOLALA mobile team, which is intended to improve the load speed of websites on mobile phone. It base on WebView at Android system.
HLLOfflineWebView can cache html, css, js, png and other static resource on the disk. When the app load the web page, it directly load the resource from disk and reduce network request.

Before VS After Using HLLOfflineWebView

Before Using HLLOfflineWebVC After Using HLLOfflineWebVC
Movie

Features

  • Safe and reliable: no hook and no private API,  three degrade strategy.
  • Easy to maintain: three layer structure and modular design.
  • Fully functional: it contains H5 offline resource managing, url and offline resource mapping config, data reporting.

How To Use

If you want to bring the code into your project, you need to do the following:

Develop A HTTP Service

parameter name parameter meaning note
clientType operating system type iOS,Android
clientVersion app version eg: 1.0
bisName unique identifier of your offline web page eg: act3-offline-package-test
offlineZipVer the local offline web file version 0 means no offline web cache

 respond data format is a json,parameters description:

parameter name parameter meaning note
bisName unique identifier of your offline web page eg: act3-offline-package-test
result query result -1: disable offline web, 0: no update, 1: has new version
url zip file download url if no update, the url is null
refreshMode notify client how to update 0:update next(default) 1:update immediately
version offline web pages version eg: 25609-j56gfa
  • Cross Origin When an offline web page make a network request, the origin is null,should modify your gateway or server to support.

  • Set up a local service

    1.Set LOCALHOST in ServerConstant to your IP 2.Run HttpServerStarter with Coverage 3.Test in the chrome http://127.0.0.1:8888/offweb?bisName=act3-2108-turntable&offlineZipVer=ab http://127.0.0.1:8888/package?bisName=act3-2108-turntable

    requestServer(new DefaultLocalRequest())
    
  • Modify HTML And JS File use relative path, no absolute path. cookie、local storage should support the situation that host is null. add a file to describe the offline web version .the file name is ".offweb.json" and the content is: { "bisName": "xxx", "ver": "xxx" }

Getting Started

  1. Simple init HLLOfflineWebView
OfflineConfig offlineConfig = new OfflineConfig.Builder(true)
        //.addDisable("act3-2109-turntable")//disable package
        .addPreDownload("uappweb-offline")//PreDownload the package
        .build();
OfflineWebClient.init(context.getApplicationContext(),
        new OfflineParams()
                .config(offlineConfig)
                .requestServer(new DefaultLocalRequest())
                //.requestServer(new DefaultRequest())
                .isDebug(BuildConfig.DEBUG)
    );
  1. Full init HLLOfflineWebView
OfflineWebClient.init(context.getApplicationContext(),
        new OfflineParams()
                //need config
                .config(offlineConfig)
                //need network request
                .requestServer(new DefaultLocalRequest())
                //need Debug mode
                .isDebug(BuildConfig.DEBUG)
                //Optional DownLoader
                .downloader(new IDownLoader() {})
                //Optional rule
                .addRule("act3-2108-turntable", host, path, fragment)
                //Optional Rules in Json format
                .setRule(Constants.RULE_CONFIG)
                //Optional Rules Config
                .setRule(offlineRuleConfig)
                //Optional Logger
                .logger(new Logger() {})
                //Optional Url Matcher
                .matcher(new DefaultMatcher())
                //Optional ExecutorService
                .executorServiceProvider(new IExecutorServiceProvider() {})
                //Optional WebMonitor
                .monitor(new IEnhWebMonitor() {})
                //Optional Interceptor
                .interceptor(new IInterceptor() {})
                //Optional update callback
                .flowResultHandleStrategy(new IFlowResultHandleStrategy() {})

    );

Communication

  • If you find a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Blog

货拉拉安卓端H5离线包原理与实践

Author

HUOLALA mobile technology team.

License

HLLOfflineWebView is released under the Apache 2.0 license. See LICENSE for details.

More Repositories

1

page-spy-web

Debug remotely and easily like chrome devtools.
TypeScript
4,192
star
2

hll-wp-therouter-android

A framework for assisting in the renovation of Android componentization(帮助 App 进行组件化改造的动态路由框架)
Kotlin
1,086
star
3

hll-wp-glog

Glog is a cross platform high-performance log library developed by Huolala.
PHP
319
star
4

HLLOfflineWebVC-iOS

iOS offline package solution for H5
Objective-C
232
star
5

page-spy

📦 The platform SDKs for PageSpy
TypeScript
193
star
6

hll-popupsmanager-ios

Objective-C
94
star
7

page-spy-api

Go
33
star
8

hll-wp-therouter-ios

A framework for assisting in the renovation of iOS componentization
Objective-C
29
star
9

hll-harmony-component

Batchfile
27
star
10

hll-wp-guldan-ios

OC Method Time Cost Tool
Objective-C
14
star
11

react-pull-to-refreshify

A simple react pull-to-refresh component with 0 dependencies.
TypeScript
9
star
12

i-devices

A device that achieves various device style effects such as smartphones (iPhone series, Google series) and computers (MacBook, SurfaceBook series) through pure CSS code
JavaScript
8
star
13

hll-cocoapods-podspec-binary

Ruby
7
star
14

nad

A solution that bridges language boundaries.
TypeScript
5
star
15

preload-js

TypeScript
3
star
16

nad-java-core

This library is for collecting all Spring Web routes as a serializable data structure.
Java
3
star
17

word-to-vue

A tool that converts Word documents into Vue template.
JavaScript
2
star
18

page-spy-extension

JavaScript
2
star
19

hll-dynamic-res-plugin

Resource Dynamization Solution For Android
Java
2
star
20

react-json-view

<ReactJsonView /> is a react component for displaying serializable data.
TypeScript
2
star
21

batteryfinder-android

A detection tool of Android App power consumption
Kotlin
1
star
22

hll-safetyairbag-ios

Objective-C
1
star