目的:

  把h5页面,转化成.apk

第一步、安装安卓SDK

网址:

http://www.androiddevtools.cn/

找一个合适的版本下载:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译

 解压:

android sdk apk 编译 apk编辑器sdk_ide_02

 感觉网上说的跟我解压后的不太一样啊。。然后我就试了一下点击.exe 文件 出现一些安装相关的东西,我只改了安装路径。

android sdk apk 编译 apk编辑器sdk_加载_03

finish之后就是下载了这些东西:

android sdk apk 编译 apk编辑器sdk_加载_04

先下载一波后:

android sdk apk 编译 apk编辑器sdk_android_05

第二步、配置IDEA-用ANDROID STUDIO 可忽略这一步.

这里配置一下IDEA 用他做编辑器,也可以用上面的。打开idea:配置 一下

android sdk apk 编译 apk编辑器sdk_ide_06

sdk选择安卓 sdk:找到下好的路径 举例:巴拉巴拉/sdk/mysdk

android sdk apk 编译 apk编辑器sdk_加载_07

这里我选了java 1.8

android sdk apk 编译 apk编辑器sdk_android_08

结果展示:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_09

第三步、开始创建项目:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_10

果断选择安卓:

 

android sdk apk 编译 apk编辑器sdk_android_11

 

next: 这里选了java 、路径改了一下、文件名改一下就OK

android sdk apk 编译 apk编辑器sdk_加载_12

然后就跳到这也页面:

 

android sdk apk 编译 apk编辑器sdk_android_13

 第四步、安装gradle:

安卓代码报红的问题:

 

android sdk apk 编译 apk编辑器sdk_ide_14

试试:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_15

漫长的等待。。

android sdk apk 编译 apk编辑器sdk_ide_16

但是这也太慢了。。。所以我先下了一个zip文件放到对应的包中-》 这个zip是我后放进去的。

android sdk apk 编译 apk编辑器sdk_ide_17

之后重新来一下上面的那步骤restart 一下-》就不报错了!  这是之后的页面。

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_18

怎么看它的路径啊?-》settings 中找到这个位置,这个地方我把jvm 版本也改了一下。后期我把这个路径改了,因为放C盘太占用空间了。

android sdk apk 编译 apk编辑器sdk_ide_19

打包:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_20

这里我用自带的编辑器启动打包也是一样。

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_21

这就是打包后的文件:传到手机里安装测试即可

android sdk apk 编译 apk编辑器sdk_加载_22

 安卓模拟器:

测试的时候不能天天反复装软件啊,为了避免这种麻烦的场景,我们可以装一个模拟器。

这里我们用自带的模拟器:

studio 中右上角:点它

 

android sdk apk 编译 apk编辑器sdk_加载_23

 然后是这个页面:

 

android sdk apk 编译 apk编辑器sdk_ide_24

 选一个合适的设备:下一步

 

android sdk apk 编译 apk编辑器sdk_加载_25

 选操作系统:download

android sdk apk 编译 apk编辑器sdk_ide_26

 同意:下一步等待

 

android sdk apk 编译 apk编辑器sdk_android_27

 finish:

 

android sdk apk 编译 apk编辑器sdk_加载_28

next:

 

android sdk apk 编译 apk编辑器sdk_加载_29

finish:

 

android sdk apk 编译 apk编辑器sdk_android_30

 启动:

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_31

 我们得到了一部手机:^^

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_32

 再加一个:

android sdk apk 编译 apk编辑器sdk_ide_33

启动项目:

首先确保模拟器已经打开。然后点击Run->Debug

android sdk apk 编译 apk编辑器sdk_android_34

 选Activity即可。

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_35

 

修改安卓模拟器位置

安卓模拟器的位置最好做一个修改,要不然占用C盘空间。

第一步、环境变量:ANDROID_SDK_HOME

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_36

 

 第二步、C:\Users\xxx\.android\avd

把整个.android 文件放到刚刚配置的路径里

android sdk apk 编译 apk编辑器sdk_android_37

 

 第三步、进入avd 文件夹,打开ini 文件修改路径

android sdk apk 编译 apk编辑器sdk_ide_38

 

android sdk apk 编译 apk编辑器sdk_加载_39

 

问题: 

问题1:如何去掉标题:

android:theme="@style/Theme.AppCompat.NoActionBar"

android sdk apk 编译 apk编辑器sdk_android_40

问题2:如何改名字:

android sdk apk 编译 apk编辑器sdk_ide_41

 问题3:如何换图标:

 

android sdk apk 编译 apk编辑器sdk_ide_42

 这里自己定义一个图标即可.

 

android sdk apk 编译 apk编辑器sdk_ide_43

 如果还是不行的情况下:

把图片放到drawable 包下,

android sdk apk 编译 apk编辑器sdk_ide_44

 然后:

android sdk apk 编译 apk编辑器sdk_android_45

问题4:高版本安卓报错的问题:权限问题

 

android sdk apk 编译 apk编辑器sdk_android_46

 

android:usesCleartextTraffic="true"

 

<uses-permission android:name="android.permission.INTERNET"/>

 

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_47

 问题5:改安装时的名字

android sdk apk 编译 apk编辑器sdk_android sdk apk 编译_48

问题6:logo页面:

思路:先显示一张图片在WebView上,当页面加载完,隐藏图片显示url页面即可

1.找一张图片放到项目里。

android sdk apk 编译 apk编辑器sdk_ide_49

 2.显示图片:覆盖web页面 activity_main.xml

<ImageView
        android:id="@+id/appImage"
        android:src="@mipmap/personal_logo"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3.MainActivity 中控制显示隐藏图片

ImageView img;
//设置WebViewClient类
        mWebview.setWebViewClient(new WebViewClient() {
            //设置加载前的函数
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                System.out.println("开始加载了");
                beginLoading.setText("开始加载了");

            }

            //设置结束加载函数
            @Override
            public void onPageFinished(WebView view, String url) {
                endLoading.setText("结束加载了");
                img.setVisibility(View.INVISIBLE);
            }
        });

问题7:图片铺满屏:

android:scaleType="fitXY"

如:

<ImageView
        android:scaleType="fitXY"
        android:id="@+id/appImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/personal_logo" />

 

代码:

android sdk apk 编译 apk编辑器sdk_加载_50

 代码很多是网上找的。

 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.talentpost"
          android:versionCode="1"
          android:versionName="1.0">
    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="talentApp"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:usesCleartextTraffic="true"
            android:theme="@style/Theme.AppCompat.NoActionBar">
        <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>
MainActivity.java
package com.example.talentpost;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity  {
    WebView mWebview;
    WebSettings mWebSettings;
    TextView beginLoading,endLoading,loading,mtitle;
    ImageView img;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mWebview = (WebView) findViewById(R.id.webView1);
        beginLoading = (TextView) findViewById(R.id.text_beginLoading);
        endLoading = (TextView) findViewById(R.id.text_endLoading);
        loading = (TextView) findViewById(R.id.text_Loading);
        mtitle = (TextView) findViewById(R.id.title);
        img = (ImageView) findViewById(R.id.appImage);
        mWebSettings = mWebview.getSettings();
        //设置WebView属性,能够执行Javascript脚本
        mWebview.getSettings().setJavaScriptEnabled(true);
        mWebview.loadUrl("http://www.baidu.com/");  //设置不用系统浏览器打开,直接显示在当前Webview
        mWebview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        //设置WebChromeClient类
        mWebview.setWebChromeClient(new WebChromeClient() {


            //获取网站标题
            @Override
            public void onReceivedTitle(WebView view, String title) {
                System.out.println("标题在这里");
                mtitle.setText(title);
            }


            //获取加载进度
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if (newProgress < 100) {
                    String progress = newProgress + "%";
                    loading.setText(progress);
                } else if (newProgress == 100) {
                    String progress = newProgress + "%";
                    loading.setText(progress);
                }
            }
        });


        //设置WebViewClient类
        mWebview.setWebViewClient(new WebViewClient() {
            //设置加载前的函数
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                System.out.println("开始加载了");
                beginLoading.setText("开始加载了");

            }

            //设置结束加载函数
            @Override
            public void onPageFinished(WebView view, String url) {
                endLoading.setText("结束加载了");
                img.setVisibility(View.INVISIBLE);
            }
        });
    }

    //点击返回上一页面而不是退出浏览器
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && mWebview.canGoBack()) {
            mWebview.goBack();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

    //销毁Webview
    @Override
    protected void onDestroy() {
        if (mWebview != null) {
            mWebview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
            mWebview.clearHistory();

            ((ViewGroup) mWebview.getParent()).removeView(mWebview);
            mWebview.destroy();
            mWebview = null;
        }
        super.onDestroy();
    }
}

dimens.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">0dp</dimen>
    <dimen name="activity_vertical_margin">0dp</dimen>
</resources>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.talentpost.MainActivity">


    <!-- 获取网站的标题-->
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>

    <!--开始加载提示-->
    <TextView
        android:id="@+id/text_beginLoading"
        android:layout_below="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>

    <!--获取加载进度-->
    <TextView
        android:layout_below="@+id/text_beginLoading"
        android:id="@+id/text_Loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>

    <!--结束加载提示-->
    <TextView
    android:layout_below="@+id/text_Loading"
    android:id="@+id/text_endLoading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""/>

    <!--显示网页区域-->
    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="729dp"
        android:layout_below="@+id/text_endLoading"
        android:layout_marginTop="-76dp" />
    <ImageView
      android:scaleType="fitXY"
        android:id="@+id/appImage"
        android:src="@mipmap/personal_logo"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

 

@

-------博客内容仅用于个人学习总结-------