前端项目打包成APK

1.前端项目打包:yarn build 或者 npm run build

2.安装Cordova安卓项目生成工具

npm install -g cordova
//检查是否安装成功
cordova -v

3.创建安卓项目:cordova create myApp com.example.myApp MyApp

4.将前端打包好的build放进刚刚用cordova创建好的项目中的www文件中,将www里面的文件删除,将build包中的文件复制到www文件中

5.添加安卓平台

cordova platform add android

6.安装javaJDK和Android Studio编辑器 ,去官网下载即可

7.用Android Studio编辑器打开cordova项目中platforms文件中的android文件(android是生成的安卓项目)

1.打开android文件开始自动构建
2.构建失败报错,如果是skd版本太高或者太小就下载对于的sdk版本.(打开设置,找到Android SDK,选择SDK Platforms下载对于的版本,其他报错将SDK Tools中的所有全部下载)
3、编译通过先本地运行一下,找到app文件中的src->main->java->MainActivity这个文件运行一下
看是否能正常运行

8.在导航栏中到构建选择Generate Signed Bundle or APK

1.选择apk,点击下一步
2.创建密钥,内容随便输入,完成后点击下一步
3.选择release点击创建
4.构建完成后再app->release文件中的apk文件

9.cordova高版本如法使用http请求的问题

产生的原因:安卓9.0以上版本对http请求有限制,cordova默认虚拟成https容器,不能访问http,cordova默认localhost访问静态资源文件,会造成跨域问题

解决方案:

方法1.放开安卓9.0以上版本对http的限制

src/main/AndroidManifest.xml中manifest/application节点加上android:usesCleartextTraffic="true"

方法2.通过配置使用file///形式访问静态资源

src/main/res/xml/config.xml中widget节点下添加
<preference name="AndroidInsecureFileModeEnabled" value="true" />

方法3:找到org.apache.cordova.ConfigXmlParser源码,将https改成http(暴力解决,不推荐)

private static String SCHEME_HTTP = "http";
private static String SCHEME_HTTPS = "https"; // 文章作者是粗暴的将此处改成http
private static String DEFAULT_HOSTNAME = "localhost";


private String getLaunchUrlPrefix() {
        if (prefs.getBoolean("AndroidInsecureFileModeEnabled", false)) {
            return "file:///android_asset/www/";
        } else {
            // 从配置文件中获取scheme配置的值,
            // 如果没有配置,则默认返回SCHEME_HTTPS,即https
            String scheme = prefs.getString("scheme", SCHEME_HTTPS).toLowerCase();
            String hostname = prefs.getString("hostname", DEFAULT_HOSTNAME);

            if (!scheme.contentEquals(SCHEME_HTTP) && !scheme.contentEquals(SCHEME_HTTPS)) {
                LOG.d(TAG, "The provided scheme \"" + scheme + "\" is not valid. " +
                    "Defaulting to \"" + SCHEME_HTTPS + "\". " +
                    "(Valid Options=" + SCHEME_HTTP + "," + SCHEME_HTTPS + ")");

                scheme = SCHEME_HTTPS;
            }
            // 组合成url前面部分,默认返回https://localhost/
            return scheme + "://" + hostname + '/';
        }
    }

方法4:修改src/main/res/xml/config.xml,在widget节点下添加(亲测有效,推荐使用)

<preference name="scheme" value="http" />

方法5:修改src/main/res/xml/config.xml,在widget节点下添加

<preference name="AndroidInsecureFileModeEnabled" value="true" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值