站内搜索

搜索

手游源码-游戏源码-棋牌源码资源网-亲测源码-游戏搭建-破解游戏-网站源码-qq技术

100金币/天 购买

环境准备开发环境需要JavaSDK(官网下载)_

12

主题

53

帖子

0

金币

普通会员

Rank: 1

积分
305
发表于 2022-3-5 23:01:23 | 显示全部楼层 |阅读模式
原生app的开发成本相对于网页来说是比较高的,所以越来越多的app使用网页作为界面网页打包apk,甚至将一个网站完全封装成一个app,这样可以提高开发速度,基本实现跨平台。 下面是一个例子天外神坛源码网,在-14.04.4--amd64环境下实现一个简单的将网站封装到app中的过程。 环境准备 开发环境需要Java SDK(官网下载)、SDK(官网下载)。 Java SDK 安装

    wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz
tar -x -f
jdk-8u91-linux-x64.tar.gz

然后配置PATH路径和

    vi ~/.bashrc

在末尾添加

    export JAVA_HOME=JDK解压目录
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

保存退出vi,刷新配置

    source ~/.bashrc

SDK 安装 ps:安装时可能需要梯子,请自备。

    wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -x -f android-sdk_r24.4.1-linux.tgz
cd android-sdk-linux/tools

我们来看看可以安装哪些sdk版本

    ./android list sdk

然后安装需要的sdk版本

    ./android update sdk --no-ui --filter 用逗号分隔需要安装的序号

项目创建和代码编写 在任何地方创建一个新目录,保存项目,然后创建一个新的 src 目录来存储源文件。因为Java有包的概念,进入src目录后,根据包名的高低依次创建对应的目录,然后新建一个Java源程序文件,如:

     1 package test.android;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 // import android.app.AlertDialog;
 6 import android.view.Window;
 7 // import android.view.WindowManager;
 8 import android.view.KeyEvent;
 9 import android.webkit.WebView;
10 import android.webkit.WebViewClient;
11 //import android.webkit.WebChromeClient;
12 // import android.webkit.JsResult;
13 // import android.content.DialogInterface;
14 // import android.content.DialogInterface.OnClickListener;
15 
16 public class Main extends Activity {
17   public static final String LOAD_URL = "http://www.baidu.com/";
18 
19   private WebView webView = null;
20 
21   public void onCreate(Bundle savedInstanceState) {
22     super.onCreate(savedInstanceState);
23 
24     //this.requestWindowFeature(Window.FEATURE_NO_TITLE);
25     //this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
26 
27     webView = new WebView(this);
28     this.setContentView(webView);
29     webView.setWebViewClient(new WebViewClient() {
30       public void onPageFinished(WebView view, String url) {
31         //webView.evaluateJavascript("test();", null);
32       }
33     });
34     /*
35     webView.setWebChromeClient(new WebChromeClient() {
36       public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
37 
38         new AlertDialog.Builder(_this)
39         .setMessage(message)
40         .setPositiveButton("OK", new DialogInterface.OnClickListener() {
41           public void onClick(DialogInterface dialog, int which) {}
42         }).show();
43 
44         return true;
45       }
46     });
47     */
48     webView.getSettings().setJavaScriptEnabled(true);
49     webView.addJavascriptInterface(this, "native");
50     webView.loadUrl(LOAD_URL);
51   }
52 
53   // overwrite back button
54   public boolean onKeyDown(int keyCode, KeyEvent event) {
55     if (KeyEvent.KEYCODE_BACK == keyCode && webView.canGoBack()) {
56       webView.goBack();
57       return true;
58     }
59 
60     return super.onKeyDown(keyCode, event);
61   }
62 
63 }

将文件另存为 Main.java 回到项目根目录,新建一个文件,保存为.xml,内容如下:

     1 xml version="1.0" encoding="utf-8"?>
 2 <manifest  xmlns:android="http://schemas.android.com/apk/res/android" package="test.android">
 3   <application android:icon="@drawable/icon"
 4                android:label="@string/app_name">
 5     <activity android:name=".Main">
 6       <intent-filter>
 7         <action android:name="android.intent.action.MAIN" />
 8         <category android:name="android.intent.category.LAUNCHER" />
 9       intent-filter>
10     activity>
11   application>
12 
13   <uses-permission android:name="android.permission.INTERNET" />
14 
15 manifest>

在项目根目录下创建res目录,在res中新建目录 新建一个xml file.xml,内容如下:

    xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">网页打包string>
  <string name="web_url">http://www.baidu.comstring>
resources>

然后将需要的程序图标复制到目录中,文件名为icon.png 演示示例可以在这里下载 编译 先切换到项目目录 首先编译资源,在项目根目录下创建一个gen目录,保存生成的R.java资源号,在控制台输入如下命令:

    /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源文件:

    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格式

    /opt/android-sdk-linux/build-tools/24.0.0/dx --dex --output=bin/classes.dex bin/classes

打包资源文件

    /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

    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

生成签名文件

    1 keytool -genkey -alias my.keystore -keyalg RSA -validity 20000 -keypass 123456 -storepass 123456 -keystore my.keystore

生成签名文件时,如果提示输入名称或单位网页打包apk,直接回车忽略即可,最后输入y确认。 签署apk文件

    jarsigner -verbose -keystore my.keystore -keypass 123456 -storepass 123456 -signedjar main.apk main_unsigned.apk my.keystore

然后就可以安装测试了
【天外神坛】免责声明及帮助
1.重要:如果遇到隐藏内容回复后显示为代码状态,直接刷新一下页面即可解决此问题。
2.本文部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
3.若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4.如果本站有侵犯、不妥之处的资源,请在网站右边客服联系我们。将会第一时间解决!
5.本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。
6.本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

老群被封加此新群不迷路。
上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群
上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群

QQ|Archiver|小黑屋|天外神坛

湘ICP备2021015333号

Powered by 天外神坛 X3.4 © 2020-2022 天外神坛