來越多的開發者熱衷于使用html5+JavaScript開發移動Web App。不過,HTML5 Web APP的出現能否在未來取代移動應用,就目前來說,還是個未知數。那么,有什么辦法,既可以使用HTMl5開發應 用,又可以將其簡單封裝成APK文件呢?
一、Android SDK中的WebView
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
? 互聯網用:webView.loadUrl("http://www.qietu.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錯誤。
? <uses-permission android:name="android.permission.INTERNET" />
缺點:如果是載入的是普通網頁,沒有什么問題,但如果是html5,封裝后,在android2.3以上才能正常訪問,android2.2及以下,SDK中的WebView還沒完全支持HTML5
下面是具體例子:
MainActivity.java
??? package com.android.webview.activity; ?
??? import android.app.Activity; ?
??? import android.os.Bundle; ?
??? import android.view.KeyEvent; ?
??? import android.webkit.WebView; ?
??? public class MainActivity extends Activity { ?
??????? private WebView webview; ?
??????? @Override
??????? public void onCreate(Bundle savedInstanceState) { ?
??????????? super.onCreate(savedInstanceState); ?
??????????? //實例化WebView對象 ?
??????????? webview = new WebView(this); ?
??????????? //設置WebView屬性,能夠執行Javascript腳本 ?
??????????? webview.getSettings().setJavaScriptEnabled(true); ?
??????????? //加載需要顯示的網頁 ?
??????????? webview.loadUrl("http://www.qietu.com/"); ?
??????????? //設置Web視圖 ?
??????????? setContentView(webview); ?
??????? } ?
??????? @Override
??????? //設置回退 ?
??????? //覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 ?
??????? public boolean onKeyDown(int keyCode, KeyEvent event) { ?
??????????? if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { ?
??????????????? webview.goBack(); //goBack()表示返回WebView的上一頁面 ?
??????????????? return true; ?
??????????? } ?
??????????? return false; ?
??? }
在AndroidManifest.xml文件中添加權限
??? <?xml version="1.0" encoding="utf-8"?>
??? <manifest xmlns:android="http://schemas.android.com/apk/res/android"
????????? package="com.android.webview.activity"
????????? android:versionCode="1"
????????? android:versionName="1.0">
??????? <uses-sdk android:minSdkVersion="10" />
??????? <application android:icon="@drawable/icon" android:label="@string/app_name">
??????????? <activity android:name=".MainActivity"
????????????????????? android:label="@string/app_name">
??????????????? <intent-filter>
??????????????????? <action android:name="android.intent.action.MAIN" />
??????????????????? <category android:name="android.intent.category.LAUNCHER" />
??????????????? </intent-filter>
??????????? </activity>
??????? </application>
??????? <uses-permission android:name="android.permission.INTERNET"/>
??? </manifest>
二、使用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,編程自由,完美適應不同設備屏幕大小,適合高手使用。
缺點:沒有使用布局,直接加載網頁,不能添加廣告。
----------------
切圖網(qietu.com)最早將psd轉html服務模式帶到國內,并首個提供響應式、webapp前端開發的公司。專注web前端開發技術,關注用戶體驗,加我們公眾微信賬號:qietuwang(長按復制)
們已經介紹了如何創建項目和搭建打包apk所需的環境,不清楚的可以看前兩篇文章,現在來進行打包apk文件的操作
項目初始化創建時,項目文件夾內容
運行ionic serve命令后,將自動生成文件(不用運行此命令也能進行打包)
打開cmd,進入項目根目錄,在根目錄輸入ionic cordova platform add android回車,為項目添加安卓平臺,由于網絡原因可能會添加不上無限轉圈,正常情況五分鐘之內即可,超時請換一個時間再試,創建項目后只需添加一次平臺,后續可直接打包(build)
出現下圖所示內容即為添加安卓平臺成功,可以用ionic cordova platform add android@6.0.0命令來指定安卓平臺版本,目前默認添加的是6.2.3版本
添加平臺完成后,在項目中會自動生成platforms、plugins文件夾
輸入ionic cordova build android --prod --release回車進行打包即可,紅框中的路徑即為打包后apk文件所在位置
以上供測試時使用,如果你想把你的應用程序上傳到谷歌商店或其他應用商店,你必須簽署APK文件。要做到這一點,你必須創建一個新的證書。由于這里需要用到java的keytool,請按照第二篇文章配置好java環境。
輸入keytool -genkey -v -keystore [my-release-key].jks -keyalg RSA -keysize 2048 -validity 10000 -alias [my-alias]([my-release-key]:名稱,[my-alias]:別名)回車,
輸入秘鑰口令(自定義,相當于注冊賬號時的密碼,6位以上)回車,再輸入一次回車
按提示輸入,可任意填寫,填寫一個按一下回車,最好截圖保留信息
詢問是否正確,輸入是回車
繼續回車,就會在改目錄下生成一個新的證書,如下圖所示
把打包好的apk文件和證書放到同一目錄,輸入jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [my-release-key.jks] [android-release-unsigned.apk] [my-alias]([my-release-key.jks]:證書文件,[android-release-unsigned.apk]:未簽名apk文件,[my-alias]:別名)回車,輸入之前的秘鑰口令即可為apk簽名
最后放上安裝完成后的效果圖
ionic cordova platform add android(添加安卓平臺)
ionic cordova build android --prod --release(打包apk文件)
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias(新建證書)
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks android-release-unsigned.apk my-alias(簽名apk)
1、安裝JDK,下載地址(可能需要一個oracle賬號,大家百度一下或者自行注冊一個就行。盡可能選擇8或者11,這兩個是長期版本)Java SE | Oracle Technology Network | Oracle
2、安裝NodeJS,下載地址Node.js (nodejs.org)
3、下載安裝Android Studio,下載地址Download Android Studio and SDK tools | Android Developers (google.cn)
4、下載安裝HbuilderX HBuilderX-高效極客技巧 (dcloud.io)
5、申請DCloud開發者賬號,后期會用到
6、下載離線工程:App離線打包SDK (dcloud.net.cn) ,后期會用到
1、 在HbuilderX中新建一個uni-app項目,找到manifset.json這個文件,需要修改的地方
基礎配置:有一個AppID,如果沒有點擊重新獲取,或者去DCloud開發者中心創建一個應用后填寫此處(源碼編輯)
模塊配置:勾選需要的模塊,一般來說需要什么勾選什么即可
權限配置:關于這一塊,大家需要去參考這篇文章(https://ask.dcloud.net.cn/article/36982)
2、去掉HTML5+ Runtime版本提示框,在源碼視圖中添加以下內容
3、附加:如果是要打包成AAB上傳谷歌商店你需要勾選以下內容,同時需要編輯生成的json文件
OK,到這里基礎配置基本結束開始你的業務編寫即可。
1、 打包所需要的資源:在HbuilderX中,發行=》原生APP本地打包=》生成本地打包APP資源,將生成后的目錄(**/APP_ID/www/**)拷貝(選擇到APP_ID這個文件夾即可)
2、 解壓離線工程至某個目錄下,即:**/Android-SDK3.2.12.81096_20211101/HBuilder-Integrate-AS,打開Android Studio,導入此項目(HBuilder-Integrate-AS)
3、 修改simpleDemo/build.gradle配置(密鑰簽名請跳轉第四步驟)
4、 修改simpleDemo/main/AndroidManifest.xml配置,如果是特殊的權限,需要在這個文件中添加對應的權限配置(android key請跳轉第四步驟)
5、 修改simpleDemo/ main/res/values/strings.xml配置
6、 修改simpleDemo/ main/res/drawable配置,替換圖標LOGO、開屏頁
7、 修改simpleDemo/ main/assets/data/dcloud_control.xml配置
8、 修改simpleDemo/ main/assets/data/dcloud_properties.xml配置(去掉HTML5+ Runtime oauth提示)
至此,離線打包項目配置完畢,然后執行:Build=》Build Bundle(s) / APK(s)=》Build APK(s)。打包完畢
簽名生成:
簽名方案一:在Android Studio中依次按照以下截圖即可(我在windows中遇到了無法簽名的情況,Mac正常,如果你也是,請看方案二)
簽名方案二:參考文章(Android平臺簽名證書(.keystore)生成指南 - DCloud問答
)解決windows無法生成簽名的情況,Mac可以直接跳過步驟1
注:如果是windows10,請勿使用cmd,請在系統圖標即WIN上右鍵,運行powershell(管理員),用這個命令窗執行以下命令,否則無效。
1、設置jdk變量 set PATH=%PATH%;"C:\Program Files\Java\jre1.8.0_201\bin"(路徑根據jdk安裝目錄改變,但是必須指定到jre中去)
2、生成簽名文件(如果不是在項目目錄下生成的,需要將生成的文件拷貝到simpleDemo目錄下)
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
3、查看簽名信息 keytool -list -v -keystore test.keystore Enter keystore password: //輸入密碼,回車
4、復制以下兩個信息 Alias name + SHA1
android key生成:
進入dcloud開發者后臺(https://dev.dcloud.net.cn/)登錄自己的賬號
應用管理=》我創建的應用=》應用列表=》點擊應用名稱=》離線打包KEY管理=》填寫保存后,復制android對應的值即可
*請認真填寫需求信息,我們會在24小時內與您取得聯系。