当前位置: 首页 > news >正文

uni-app之android离线打包

一 AndroidStudio创建项目

1.1,上一节演示了uni-app云打包,下面演示怎样androidStudio离线打包。在AndroidStudio里面新建空项目

1.2,下载uni-app离线SDK,离线SDK主要用于App本地离线打包及扩展原生能力,SDK下载链接https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#

1.3,SDK目录说明

    |-- HBuilder-Hello                App离线打包演示应用
    |-- HBuilder-Integrate-AS        集成uni-app的最简示例
    |-- SDK                            SDK库文件目录
    |-- Feature-Android.xls            Android平台各扩展Feature API对应的详细配置
    |-- Readme.txt                    版本说明文件及注意事项
    |-- UniPlugin-Hello-AS            uni原生插件开发示例

1.4,SDK目录,后面androidStudio需要用到SDK里面资源

1.5, AndroidStudio配置uni-sdk,将uni-sdk基础arr包复制到AndroidStudio的libs目录下

lib.5plus.base-release.aar

android-gif-drawable-release@1.2.23.aar

uniapp-v8-release.aar

oaid_sdk_1.0.25.aar

install-apk-release.aar

breakpad-build-release.aar

1.6,拷贝assets里面的data目录,到androidStudio里面的assets里面

1.7,app目录的build.gradle配置项目依赖dependencies,AndroidX版本需添加如下资源

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.facebook.fresco:fresco:2.5.0'
implementation "com.facebook.fresco:animated-gif:2.5.0"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.2.83'
implementation 'androidx.webkit:webkit:1.3.0'

1.8, uni-app配置时需要在build.gradle中添加aaptOptions配置

aaptOptions {  
    additionalParameters '--auto-add-overlay'  
    ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"  
}  
 

1.9, androidStudio配置支持aar加载,新老gradle构建工具aar配置有所变化

老版本在app的build.gradle中配置

新版本在仓库级别里面配置,项目根目录里面的build.gradle或者settings.gradle

1.10,在app的build.gradle中引用aar

二,uni-app项目打包app资源

2.1 获取appkey,登录开发者平台注册为开发者,https://dev.dcloud.net.cn/

2.2 找到刚创建的uni-app项目

 2.3 创建证书

2.3 查看证书并复制sha1值,离线打包key会用到

2.4 点击离线打包key管理,会跳到各平台信息配置,配置sha1,MD5,SHA256和包名

 appid就是androidStudio项目里面的applicationId

2.5 平台信息提交之后就可以创建key了

创建之后进行查看,AppKey不区分debug和release模式,Andorid如需要调试需要使用申请AppKey时的证书

2.6 打包uni-app资源包,发行-原生app本地打包-生成app资源

 控制台打包进度,成功后打开目录,将ID级的整个目录复制

2.7 androidStudio的assets创建一个apps的目录,将app资源包拷贝到androidStudio项目的assets目录里面,注意:dcloud_control.xml里面的appid要改为对应的id。

2.8 androidStudio项目的app-build.gradle 里面也改为对应的版本

三,androidStudio配置key

3.1 主APP的build.gradle文件的android节点下配置应用的签名信息,先下载证书

3.2 配置正式签名和调试签名

signingConfigs {
    config {
        keyAlias '__uni__ee84bbf'
        keyPassword 'slvjh2d2'
        storeFile file('slvjh2d2.keystore') // 路径为相对路径或绝对路径
        storePassword 'slvjh2d2'
        v1SigningEnabled true //兼容v1
        v2SigningEnabled true //兼容v2
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.config
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug  {
        signingConfig signingConfigs.config
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }

3.3 Androidmanifest.xml配置key

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

    <application
        ...>
        <meta-data
            android:name="dcloud_appkey"
            android:value="替换为自己申请的Appkey" />
</manifest>

3.4 配置清单的application和应用入口,直接用unisdk的资源就行

整个清单文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:name="io.dcloud.application.DCloudApplication"android:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.UniApp"tools:targetApi="31"><!-- 应用入口 --><activityandroid:name="io.dcloud.PandoraEntry"android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale"android:exported="true"android:hardwareAccelerated="true"android:theme="@style/TranslucentTheme"android:windowSoftInputMode="adjustResize"tools:ignore="WrongManifestParent"><intent-filter><data android:scheme="hbuilder" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /></intent-filter><intent-filter><data android:mimeType="image/*" /><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-dataandroid:name="dcloud_appkey"android:value="221fedc4b1f1f2087f96c7120ca8d3b9" /></application>
</manifest>

四 调试运行和打包

4.1 出现主题冲突错误

那就删掉项目中的style.xml ,同时清单文件里面的application的主题也更换为透明主题

修改前

 修改后

再次运行可以安装成功了 

4.2  安装后但运行失败,报找不到activity类错误

然后对比了下SDK的清单,发现确实少注册了一个类,那就注册上

<activityandroid:name="io.dcloud.PandoraEntryActivity"android:launchMode="singleTask"android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"android:hardwareAccelerated="true"android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"android:screenOrientation="user"android:theme="@style/DCloudTheme"android:windowSoftInputMode="adjustResize"android:exported="true"><intent-filter><categoryandroid:name="android.intent.category.DEFAULT" /><categoryandroid:name="android.intent.category.BROWSABLE" /><actionandroid:name="android.intent.action.VIEW" /><dataandroid:scheme=" " /></intent-filter>
</activity>

4.3 再次运行发现可以成功了跑起来了

 4.4 androidStudio选择build-generate signed bundle//Apk,打包apk

4.5 选择证书密钥

4.6 填写签名信息

4.7 选择创建正式包

 4.8 OK,打包成功

 4.9 正式apk安装到手机也可以运行成功,离线打包就完成了

4.10 主要步骤

  • 新建uni项目生成uni-appid
  • 开发者平台生成密钥证书并生成appkey
  • 导出uni项目的app资源
  • 新建androidStudio项目,拷贝aar,新建assets的data
  • 拷贝app资源到androidStudio的apps目录
  • androidStudio项目清单文件配置入口和appkey,并统一appid和版本
  • 调试打包生成正式apk

相关文章:

uni-app之android离线打包

一 AndroidStudio创建项目 1.1&#xff0c;上一节演示了uni-app云打包&#xff0c;下面演示怎样androidStudio离线打包。在AndroidStudio里面新建空项目 1.2&#xff0c;下载uni-app离线SDK&#xff0c;离线SDK主要用于App本地离线打包及扩展原生能力&#xff0c;SDK下载链接h…...

【传输层】TCP -- 三次握手四次挥手 | 可靠性与提高性能策略

超时重传机制连接管理机制三次握手四次挥手滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP应用层协议理解 listen 的第二个参数 超时重传机制 主机A发送数据给B之后&#xff0c;可能因为网络拥堵等原因&#xff0c;数据无法到达主机B&#xff1…...

前端将UTC时间格式转化为本地时间格式~~uniapp写法

UTC时间格式是什么 首先我们先简单的了解一下&#xff1a;UTC时间&#xff08;协调世界时&#xff0c;Coordinated Universal Time&#xff09;使用24小时制&#xff0c;以小时、分钟、秒和毫秒来表示时间 HH:mm:ss.SSSHH 表示小时&#xff0c;取值范围为00到23。mm 表示分钟…...

说说Kappa架构

分析&回答 对于实时数仓而言&#xff0c;Lmabda架构有很明显的不足&#xff0c;首先同时维护两套系统&#xff0c;资源占用率高&#xff0c;其次这两套系统的数据处理逻辑相同&#xff0c;代码重复开发。 能否有一种架构&#xff0c;只需要维护一套系统&#xff0c;就可以…...

项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

在当今数字化社会&#xff0c;即时通讯已成为人们生活中不可或缺的一部分。为了满足这一需求&#xff0c;我开发了一个名为"WeTalk"的聊天室项目&#xff0c;该项目基于Spring Boot、MyBatis、MySQL和WebSocket技术&#xff0c;为用户提供了一个实时交流的平台。在本…...

Vue3 学习 组合式API setup语法糖 响应式 指令 DIFF(一)

文章目录 前言一、Composition Api二、setup语法糖三、响应式refreactive 四、其他一些关键点v-prev-oncev-memov-cloak 五、虚拟Dom五、diff算法 前言 本文用于记录学习Vue3的过程 一、Composition Api 我觉得首先VUE3最大的改变就是对于代码书写的改变&#xff0c;从原来选择…...

一文轻松入门DeepSort

1.背景 Deepsort是目标检测任务的后续任务&#xff0c;得益于Yolo系列的大放异彩&#xff0c;DeepSort目标追踪任务的精度也不断提高&#xff0c;同时&#xff0c;DeepSort属于目标追踪任务中的多目标追踪&#xff0c;即MOT&#xff08;Multiple Object Tracking&#xff0c;M…...

关于linux openssl的自签证书认证与nginx配置

自签文档链接 重点注意这块&#xff0c;不能写一样的&#xff0c;要是一样的话登录界面锁会报不安全 域名这块跟最后发布的一致 nginx配置的话 server {listen 443 ssl; //ssl 说明为https 默认端口为443server_name www.skyys.com; //跟openssl设置的域名保持一致s…...

Mybatis--关联关系映射

目录&#xff1a; 1.什么是关联关系映射&#xff1a; 一对一和多对多的区别 2.mybaits中的一对一&一对多关联关系配置 配置generatoeConfig文件 插件自动生成 ​编辑 写sql语句 创建 Ordermapper类 编写接口类 ​编辑 编写接口实现类 编写测试类 测试结果 一对…...

Golang基本的网络编程

Go语言基本的Web服务器实现 Go 语言中的 http 包提供了创建 http 服务或者访问 http 服务所需要的能力&#xff0c;不需要额外的依赖。 Go语言在Web服务器中主要使用到了 “net/http” 库函数&#xff0c;通过分析请求的URL来实现参数的接收。 下面介绍了http 中Web应用的基本…...

Postgresql的一个bug_涉及归档和pg_wal

故障描述&#xff1a; 服务器ocmpgdbprod1&#xff0c;是流复制主节点&#xff0c;它的从节点是ocmpgdbprod2&#xff0c;两个节点的Postgresql数据库版本都是PostgreSQL 11.6&#xff0c;主节点ocmpgdbprod1配置了pg_wal归档&#xff0c;从节点ocmpgdbprod2没有配置pg_wal归档…...

轻量、便捷、高效—经纬恒润AETP助力车载以太网测试

随着自动驾驶技术和智能座舱的不断发展&#xff0c;高宽带、高速率的数据通信对主干网提出了稳定、高效的传输要求&#xff0c;CAN(FD)、LIN已无法充分满足汽车的通信需求。车载以太网作为一种快速且扩展性好的网络技术&#xff0c;已经逐步成为了汽车主干网的首选。 此外&…...

【跟小嘉学 Rust 编程】二十四、内联汇编(inline assembly)

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

综合实训-------成绩管理系统 V1.1

综合实训-------成绩管理系统 V1.1 1、一维数组数据double 2、我们用元素的位置来当学号。 1、录入数据 【5个数据】或【通过文件的方式取数据】 2、显示数据 3、添加一条记录 4、修改一条记录 5、删除一条记录 6、查找一条记录。【输入学号&#xff0c;显示成绩】 7、统计。【…...

13.108.Spark 优化、Spark优化与hive的区别、SparkSQL启动参数调优、四川任务优化实践:执行效率提升50%以上

13.108.Spark 优化 1.1.25.Spark优化与hive的区别 1.1.26.SparkSQL启动参数调优 1.1.27.四川任务优化实践&#xff1a;执行效率提升50%以上 13.108.Spark 优化&#xff1a; 1.1.25.Spark优化与hive的区别 先理解spark与mapreduce的本质区别&#xff0c;算子之间&#xff08;…...

大模型综述论文笔记6-15

这里写自定义目录标题 KeywordsBackgroud for LLMsTechnical Evolution of GPT-series ModelsResearch of OpenAI on LLMs can be roughly divided into the following stagesEarly ExplorationsCapacity LeapCapacity EnhancementThe Milestones of Language Models Resources…...

树的介绍(C语言版)

前言 在数据结构中树是一种很重要的数据结构&#xff0c;很多其他的数据结构和算法都是通过树衍生出来的&#xff0c;比如&#xff1a;堆&#xff0c;AVL树&#xff0c;红黑色等本质上都是一棵树&#xff0c;他们只是树的一种特殊结构&#xff0c;还有其他比如linux系统的文件系…...

Android studio实现圆形进度条

参考博客 效果图 MainActivity import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView;import java.util.Timer; import java.util.TimerTask;public class MainActivity extends App…...

基于Halcon的喷码识别方法

具体步骤如下: 1. 读入一幅图片(彩色或黑白); 2. 将RGB图像转化为灰度图像; 3. 提取图片中的圆点特征(喷码图片中多是圆点特征),在Halcon中dots_image() 函数非常适合喷码检测; 4. 通过设定阈值,增强明显特征部分; 5. 进行一系列形态学操作(如闭运算等),将…...

【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup

靶机介绍 官方下载地址&#xff1a;https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境&#xff1a; 虚拟机网络设置的是NAT模式 靶机&#xff1a;IP地址&#xff1a;192.168.233.131 攻击机&#xff1a;kali linux&#xff0c;IP地…...

告别模糊边界!用Monodepth2实战KITTI深度估计,详解自动掩码与最小重投影损失

告别模糊边界&#xff01;用Monodepth2实战KITTI深度估计&#xff0c;详解自动掩码与最小重投影损失 深度估计是计算机视觉领域的一项基础任务&#xff0c;它试图从2D图像中恢复出3D场景的几何信息。在自动驾驶、机器人导航、增强现实等应用中&#xff0c;准确的深度感知至关重…...

Android设备指纹采集指南:从get_token协议看短视频SDK如何生成唯一设备ID

Android设备指纹生成机制深度解析&#xff1a;从基础原理到合规实践 在移动应用生态中&#xff0c;设备指纹技术扮演着至关重要的角色。它不仅关系到用户体验的连贯性&#xff0c;更是风控系统的基础支撑。本文将系统性地剖析Android平台下设备指纹的生成逻辑、技术实现方案以及…...

QQ空间记忆备份终极指南:3步永久保存你的数字青春

QQ空间记忆备份终极指南&#xff1a;3步永久保存你的数字青春 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心那些珍贵的QQ空间说说会随着时间消失&#xff1f;那些记录着青春…...

苹果设备激活锁终极解锁指南:5步免费绕开iOS 15-16的iCloud限制

苹果设备激活锁终极解锁指南&#xff1a;5步免费绕开iOS 15-16的iCloud限制 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 还在为忘记Apple ID密码而无法使用自己的iPhone或iPad而烦恼吗&#xff1f;…...

GinCdn内容分发系统V1.0.9更新内容

GinCdn内容分发系统GinCdn是一款基于Go语言Gin框架自研的轻量高效内容分发系统&#xff0c;专为中小型企业/个人搭建CDN打造&#xff0c;采用主控边缘节点分布式架构&#xff0c;实现智能调度、高效缓存、精准监控的一体化解决方案。无需复杂命令行&#xff0c;小白也能轻松上手…...

Ansible Playbook在JumpServer中的高级用法:自动化运维效率提升技巧

Ansible Playbook在JumpServer中的高阶实战&#xff1a;效率倍增的自动化运维策略 开篇&#xff1a;当堡垒机遇上自动化运维 想象一下这样的场景&#xff1a;凌晨三点&#xff0c;服务器突然告警&#xff0c;传统运维需要手动登录每台机器检查状态&#xff0c;而熟练使用Ansibl…...

SenseVoice-Small ONNX开源方案:支持私有化部署的国产语音识别新标杆

SenseVoice-Small ONNX开源方案&#xff1a;支持私有化部署的国产语音识别新标杆 1. 项目简介 SenseVoice-Small ONNX是一个专为普通硬件设计的轻量化语音识别工具。基于FunASR开源框架的SenseVoiceSmall模型&#xff0c;通过Int8量化技术大幅降低资源消耗&#xff0c;让语音…...

Shell脚本编程与自动化运维了解006

一、Shell脚本基础1.1 Bash脚本概述Shell脚本是一种解释型编程语言&#xff0c;用于自动化Linux系统管理任务。Bash&#xff08;Bourne Again SHell&#xff09;是Linux系统中最常用的Shell解释器。脚本基本结构图#!/bin/bash # 这是一个注释 echo "Hello, World!"关…...

TMSpeech:开源本地语音转文字工具的隐私革命

TMSpeech&#xff1a;开源本地语音转文字工具的隐私革命 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 在数字化办公浪潮中&#xff0c;语音转文字工具已成为效率提升的关键助手&#xff0c;但云端处理的隐私泄露风…...

RevokeMsgPatcher 2.1:实用高效的微信QQ防撤回完整解决方案

RevokeMsgPatcher 2.1&#xff1a;实用高效的微信QQ防撤回完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...