Android使用WebView打包网页成app
- 2018-01-03 22:46:48
- 工具
- 30
- shevechco
原生app的开发成本和网页相比相对较高,所以越来越多的app使用网页来作为界面,甚至完全将一个网站封装成app,可以提高开发速度,还能基本实现跨平台。
下面以Android为例,在ubuntu-14.04.4-desktop-amd64环境实现一个简单的WebView封装网站成app的过程。
环境准备
开发环境需要Java SDK(官网下载),Android SDK(官网下载)。
Java SDK安装
01.wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz02.tar -x -f jdk-8u91-linux-x64.tar.gz
然后配置PATH路径及JAVA_HOME
01.vi ~/.bashrc
在最后添加
01.export JAVA_HOME=JDK解压目录02.export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib03.export PATH=$PATH:$JAVA_HOME/bin
保存退出vi,刷新配置
01.source ~/.bashrc
Android SDK安装
ps:安装过程中可能需要梯子,请自备。
01.wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz02.tar -x -f android-sdk_r24.4.1-linux.tgz03.cd android-sdk-linux/tools
先看一下有哪些sdk版本可以安装
01../android list sdk
然后安装需要的sdk版本
01../android update sdk --no-ui --filter 用逗号分隔需要安装的序号
项目建立及代码编写
在任意地方新建一个目录,保存这个项目,然后新建一个src目录,用于存放源文件。因为Java有包的概念,所以进入src目录后,根据包名的层次,依次建立相应目录,然后新建Java源程序文件,比如:
复制代码
01.package test.android;02.import android.app.Activity;03.import android.os.Bundle;04.// import android.app.AlertDialog;05.import android.view.Window;06.// import android.view.WindowManager;07.import android.view.KeyEvent;08.import android.webkit.WebView;09.import android.webkit.WebViewClient;10.//import android.webkit.WebChromeClient;11.// import android.webkit.JsResult;12.// import android.content.DialogInterface;13.// import android.content.DialogInterface.OnClickListener; 14.public class Main extends Activity {15. public static final String LOAD_URL = "http://www.baidu.com/";16. 17. private WebView webView = null;18. 19. public void onCreate(Bundle savedInstanceState) {20. super.onCreate(savedInstanceState); 21. //this.requestWindowFeature(Window.FEATURE_NO_TITLE);22. //this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);23. webView = new WebView(this);24. this.setContentView(webView);25. webView.setWebViewClient(new WebViewClient() {26. public void onPageFinished(WebView view, String url) {27. //webView.evaluateJavascript("test();", null);28. }29. });30. /*31. webView.setWebChromeClient(new WebChromeClient() {32. public boolean onJsAlert(WebView view, String url, String message, JsResult result) {33. new AlertDialog.Builder(_this)34. .setMessage(message)35. .setPositiveButton("OK", new DialogInterface.OnClickListener() {36. public void onClick(DialogInterface dialog, int which) {}37. }).show();38. return true;39. }40. });41. */42. webView.getSettings().setJavaScriptEnabled(true);43. webView.addJavascriptInterface(this, "native");44. webView.loadUrl(LOAD_URL);45. }46. 47. // overwrite back button48. public boolean onKeyDown(int keyCode, KeyEvent event) {49. if (KeyEvent.KEYCODE_BACK == keyCode && webView.canGoBack()) {50. webView.goBack();51. return true;52. }53. return super.onKeyDown(keyCode, event);54. } 55.}
将文件保存为Main.java
回到项目根目录,新建另一个文件,保存为AndroidManifest.xml,内容如下:
01.<?xml version="1.0" encoding="utf-8"?>02. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.android">03. <application android:icon="@drawable/icon"04. android:label="@string/app_name">05. <activity android:name=".Main">06. <intent-filter>07. <action android:name="android.intent.action.MAIN" />08. <category android:name="android.intent.category.LAUNCHER" />09. </intent-filter>10. </activity>11. </application>12. <uses-permission android:name="android.permission.INTERNET" />13. </manifest>
在项目根目录新建res目录,在res内新建drawable和values目录。
在values内新建xml文件strings.xml,内容如下:
01.<?xml version="1.0" encoding="utf-8"?>02.<resources>03. <string name="app_name">网页打包</string>04. <string name="web_url">http://www.baidu.com</string>05.</resources>
然后将需要的程序图标拷入drawable目录,文件名为icon.png
编译
先切换到项目目录。
首先要编译资源,在项目根目录创建gen目录,保存生成的R.java资源编号,在控制台输入以下命令:
01./opt/android-sdk-linux/build-tools/24.0.0/aapt package -f -m -J gen -S res -I /opt/android-sdk-linux/platforms/android-24/android.jar -M AndroidManifest.xml
编译java源文件时,加入R.java源文件:
01.javac -encoding utf-8 -source 1.6 -target 1.6 -bootclasspath /opt/android-sdk-linux/platforms/android-24/android.jar -d bin/classes src/test/android/Main.java gen/test/android/R.java
将编译好的文件打包成dex格式
01./opt/android-sdk-linux/build-tools/24.0.0/dx --dex --output=bin/classes.dex bin/classes
将资源文件打包
01./opt/android-sdk-linux/build-tools/24.0.0/aapt package -f -M AndroidManifest.xml -S res -I /opt/android-sdk-linux/platforms/android-24/android.jar -F bin/main.ap_
将所有文件打包成apk
01.java -classpath /opt/android-sdk-linux/tools/lib/sdklib.jar com.android.sdklib.build.ApkBuilderMain main_unsigned.apk -v -u -z bin/main.ap_ -f bin/classes.dex -rf src
生成签名文件
01.keytool -genkey -alias my.keystore -keyalg RSA -validity 20000 -keypass 123456 -storepass 123456 -keystore my.keystore
生成签名文件时,提示输入姓名单位之类都可以直接回车忽略,最后输入y确认即可
对apk文件签名
01.jarsigner -verbose -keystore my.keystore -keypass 123456 -storepass 123456 -signedjar main.apk main_unsigned.apk my.keystore
接下来就可以安装测试了
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.sulao.cn/post/449