HTML5如何让封装成安卓.apk文件?

html-css06

HTML5如何让封装成安卓.apk文件?,第1张

一、Android SDK中的WebView

1.在要Activity中实例化WebView组件:WebView webView = new WebView(this)

2.调用WebView的loadUrl()方法,设置WevView要显示的网页:

互联网用:webView.loadUrl("http://www.31358.com")

本地文件用:webView.loadUrl("file:///android_asset/XX.html")本地文件存放在:assets 文件中

3.调用Activity的setContentView( )方法来显示网页视图

4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。

二、使用PhoneGap

PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用 iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系 人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是免费的,但是它需要特定平台提供的附加软件,例如 iPhone的iPhone SDK,Android的Android SDK等,

详细方法请见:http://phonegap.com/start#android

优点:在Eclipse中加入SDK,编程自由,完美适应不同设备屏幕大小,适合高手使用。

缺点:没有使用布局,直接加载网页,不能添加广告。

三、使用Rexsee在线生成

Rexsee是开源的Android开发平台,支持开发者以标准化Web开发模式,使用HTML5、CSS3、Javascript快速实现移动应用。会 HTML就会Android。你要做的只是将做好的HTML5 应用上传到Rexsee服务器,很快,会编译成标准的APK安装文件。

网站:http://www.rexsee.com

优点:一键生成,适学普通人使用

缺点:直接封装,无法添加广告。

四、appMobi Html5 XDK 在线生成(使用了PhoneGap插件)

http://www.appmobi.com/

Tinker 是微信团队开源的Android热修复解决方案,我们主要将这项技术用于在不发版的情况修复线上app存在的问题.

我们的项目一直使用Jenkins构建来完成上线,在接入Tinker后我们也希望在发布补丁的时候也能通过Jenkins一键构建完成,因此有了这篇文字.第一次写博客,如有不足之处,请多多指正.

Tinker官方 文档 给出了详细的接入教程,然后很多同学在接入上还是觉得太难,太麻烦!我在接入的时候,采取的简单粗暴的方式,直接照搬官方demo tinker-sample-android 来完成接入.由于要在多个项目中使用,因此将其当做一个library提供给多个项目依赖如图:

本文demo地址: TinkerDemo

下面的做法建立在Application改造完成的前提下

1.主工程的 build.gradle 文件添加tinker插件和资源混淆组件(AndResGuard)插件

2.主Module依赖tinkelib

3.拷贝config文件到根目录

4.主Module引入tinker.gradle和resguard.gradle配置

5.TINKER_ID的配置

5.1 build.gradle文件末尾添加,通过git commit来作为TINKER_ID

5.2 主module的defaultConfig中添加

注:当然有人想用app版本号作为TINKER_ID,只要将getTinkerIdValue()改为对应的版本号即可

6.运行 gradle resguardRelease 命令,即可生成发布包(基准包),同时在工程根目录下会自动备份tinker需要的文件(apk、R、mapping、Resource mapping)

图:

7.生成补丁时,只需要执行 gradle tinkerPatchRelease 命令即可

至此,gradle的相关配置就完成了!

Jenkins的搭建及相关用法请自行google.

我们的Jenkins有一个线上job,由于我们使用master分支上线,因此在Jenkins的Branch Specifier中保持master不变

发布版本的时候使用 clean resguardRelease 命令,如图:

发布补丁时将tasks修改为 tinkerPatchRelease 即可

我们的渠道包使用美团的旧版生成方案,这一步工作是在服务器将apk拷入相应文件夹来完成,同时再执行一些其他脚本

TinkerDemo

tinker.gradle中的备份脚本来着 w4lle 的 Gradle模块化配置 感谢w4lle同学