uniapp下载apk并且安装(uniapp打包后apk白屏)

本文使用cli方式一、Android原生配置官方文档0安装开发环境必备软件:AndroidStudioHBuilderX小程序Android离线sdk,下载版本sdk(一般是最新版。版本要与HBuilderX版本一致,检查版本的方法看下面导出App资源小节)申请Appkey登录开发者中心。如果没有账号,就注册一个。申请Appkey需要进行邮箱和手机号的实名认证。在左侧菜单中选择我创建的应用,点击应用左侧选择离线打包Key管理,选择对应平台iOSAndroid

大家好,又见面了,我是你们的朋友全栈君。

本文使用cli 方式

一、Android原生配置

官方文档

0 安装开发环境

必备软件:

申请 Appkey

  • 登录开发者中心。如果没有账号,就注册一个。申请Appkey需要进行邮箱和手机号的实名认证。
  • 在左侧菜单中选择我创建的应用,点击应用
  • 左侧选择离线打包Key管理,选择对应平台 iOS Android,输入包名和SHA1 (包名是自定义的,SHA1获取),确认无误点击保存,即可获取到对应平台的App.

替换 xxx为你的名称

// 生成 keystore 签名文件
keytool -genkey -alias xxx -keyalg RSA -keysize 2048 -validity 36500 -keystore xxx.keystore

// 查看 SHA1 信息
keytool -list -v -keystore xxx.keystore  

-alias xxx : xxx是别名
xxx.keystore : 文件名
在这里插入图片描述

配置

Android
打开Android项目,配置主APP的Androidmanifest.xml文件, 导航到Application节点,创建meta-data节点,name为dcloud_appkey,value为申请的AppKey如下:

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

iOS
点击链接参考IOS平台的配置Appkey章节.

二、导出App资源

查看版本

!!! 首先请确保uni-app编译器的版本号和离线 SDK 的版本号一致。
如果版本不一致,app启动时会弹出版本不一致的提示框

  1. 通过 HBuilder X 创建的项目
    帮助 —— 关于
    在这里插入图片描述
  2. 通过 Vue Cli 创建的项目
    cmd命令行 cd 到项目的根目录,执行 npm run info
    在这里插入图片描述
    3.1.18是它的版本, 那么在上面下载小程序sdk版本时,也要选择3.1.18的版本。
    在这里插入图片描述

三、生成本地打包 APP 资源

1. 通过 HBuilderX 创建的项目

选择项目 -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源
在这里插入图片描述

2. 通过 vue-cli 创建的项目

命令行 cd 到项目根目录,执行 npm run build:app-plus,会在 项目目录/dist/build/app-plus 下生成app打包资源。

在项目根目录新建一个文件夹,以 src/manifest.json 中的 appid 字段为文件名,然后在文件夹中创建一个 www 目录,将 app-plus 文件夹下的资源拷贝到 www 目录中。
在这里插入图片描述
如果 manifest.json 中appid 字段为空,需要将项目拖进 HBuilderX 中重新获取一个 appid。注意:appid不能随便填写,必须重新获取。

HBuilderX 重新获取 appid 的方法:

  1. 打开 HBuilderX ,文件 —— 导入 —— 从本地目录导入,将项目导入进来
    在这里插入图片描述
  2. 打开 src 目录,点击 manifest.json,点击基础配置右边的重新获取
    在这里插入图片描述
    登录开发者中心,查看AppKey是否生成了,以及包名是否为空。如果没有AppKey,那么要填写下面的内容,生成。
    在这里插入图片描述
    重新运行npm run build:app-plus,生成新的app-plus内容,替换之前的www文件夹里的内容,并且打开里面的manifest.json 应该能看到id已经变成重新获取的appid了。
    在这里插入图片描述

四、导入Android Studio

0 新建Android项目

官网开发环境文档
如果之前没有新建Android项目,那么要先创建一个空项目,如果已创建,可忽略此步骤。
填写 Package Name
Language 选择 Java ,因为小程序离线打包sdk不支持kotlin.
minSdkVersion最低支持21,小于21在部分5.0以下机型上将无法正常使用。
在这里插入图片描述
图片上的Mini SDK是19,实际要选21.

导入SDK libs

在步骤1.0里我们下载了小程序SDK,解压包,打开sdk/libs , 拷贝以下文件到libs目录下

lib.5plus.base-release.aar
android-gif-drawable-release@1.2.17.aar
uniapp-v8-release.aar
oaid_sdk_1.0.25.aar

libs目录:
点击左上角的Android , 切换到 Project 视图
在这里插入图片描述
就可以看到 app/libs 目录
在这里插入图片描述

build.gradle中添加资源引用

切回Android视图。复制下面的代码到appbuild.gradle 里,
在这里插入图片描述
dependencies 下面添加代码:

 implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
 implementation "com.android.support:support-v4:28.0.0"   //  28.0.0 要替换成你的build tools 版本
 implementation "com.android.support:appcompat-v7:28.0.0"
 implementation 'com.android.support:recyclerview-v7:28.0.0'
 implementation 'com.facebook.fresco:fresco:1.13.0'
 implementation "com.facebook.fresco:animated-gif:1.13.0"
 implementation 'com.github.bumptech.glide:glide:4.9.0'
 implementation 'com.alibaba:fastjson:1.1.46.android'

其中28.0.0 要替换成你的build tools 版本,如图,这里是 30.0.3
在这里插入图片描述
在这里插入图片描述
uni-app配置时需要在build.gradle中添加aaptOptions配置。 往上滑,在 android{} 里添加aaptOptions

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

注意:更新SDK时需要同时更新aar/jar文件和build.gradle配置

点击右上角Sync Now ,同步Gradle配置。
在这里插入图片描述

配置

① 配置 Androidmanifest.xml

打开Androidmanifest.xml,在application节点,创建meta-data节点,name为dcloud_appkey,value为申请的AppKey. 如下:

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

在这里插入图片描述
在这里插入图片描述
配置应用启动页及provider节点
Androidmanifest.xml

  • 删掉自动生成的 MainActivity 节点,如下图部分
    在这里插入图片描述
    同时删除项目里的 MainActivity 类,不需要了。

  • 复制如下代码到 application 节点里

<activity android:name="io.dcloud.PandoraEntry" android:configChanges="orientation|keyboardHidden|keyboard|navigation" android:label="@string/app_name" android:launchMode="singleTask" android:hardwareAccelerated="true" android:theme="@style/TranslucentTheme" android:screenOrientation="user" android:windowSoftInputMode="adjustResize" >
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
  </activity>
  <activity android:name="io.dcloud.PandoraEntryActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard" android:hardwareAccelerated="true" android:permission="com.miui.securitycenter.permission.AppPermissionsEditor" android:screenOrientation="user" android:theme="@style/DCloudTheme" android:windowSoftInputMode="adjustResize">
      <intent-filter>
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <action android:name="android.intent.action.VIEW" />
          <data android:scheme="h56131bcf" />
      </intent-filter>
  </activity>
  <!--provider节点必须添加-->
  <provider android:name="io.dcloud.common.util.DCloud_FileProvider" android:authorities="${apk.applicationId}.dc.fileprovider" android:exported="false" android:grantUriPermissions="true">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/dcloud_file_provider" />
  </provider>

!!! 注意:${apk.applicationId} 必须替换成当前应用的包名. 替换后: android:authorities=“com.carrie.knowpicture.dc.fileprovider”

  • 配置应用名称、图标和启动界面

应用名称
打开 res - values - strings.xml,修改 app_nane 的值。
在这里插入图片描述
应用图标
icon.png为应用的图标。
push.png为推送消息的图标。
splash.png为应用启动页的图标。

打开res目录,新建drawable-xxxhdpi 文件夹,将图标放到 drawable-xxxhdpi 文件夹
在这里插入图片描述
在这里插入图片描述
修改Androidmanifest.xml中application节点的icon属性为@drawable/icon。如下图:
在这里插入图片描述

注意:splash.png在不同设备上显示效果不一样,为防止出现拉伸的状况,建议使用Android studio生成.9.png类型图片

1 导入资源

新建 assets 目录
点击左上角的Android , 切换到 Project 视图
在这里插入图片描述
如下依次点击打开目录,在 main 文件夹右键,新建文件夹,命名为 assets 。固定名称不能更改。
在这里插入图片描述
assets右键新建一个文件夹apps,将 3.2 步骤的appid文件夹整个复制到 apps目录下。(文件夹结构包含 appid 和 www)
在这里插入图片描述
配置资源文件
打开之前下载的小程序SDK文件夹, 打开 SDK - assets 文件夹,复制 data 文件夹到 Android Studio的assets 目录下
在这里插入图片描述
修改dcloud_control.xml文件:

  • 修改appid
  • 生成自定义基座,在hbuilder根节点下添加:
    debug="true" syncDebug="true"
    在这里插入图片描述
    自定义基座支持热更新需要将debug-server-release.aar打入apk中,生成正式包时可以删除。
    详细步骤参考链接

2. 配置签名信息

打开 app build.gradle
buildTypes 上面添加如下代码:

signingConfigs { 
   
        config { 
   
            keyAlias 'dnpic'   // 在1.0步骤生成keystore文件时定义的别名
            keyPassword 'carrie'  // keystore 密码
            storeFile file('E:/WebDevelopment/dnpic/dnpic.keystore')  // keystore 本地存储路径,用 斜杠 /
            storePassword 'carrie'  // keystore 密码
        }
    }

修改buildTypes - release :

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

同步 Sync Now

点击 运行 .
在这里插入图片描述

五、打包签名apk

Build – Generate Signed Bundle / Apk
在这里插入图片描述
选择 APK
在这里插入图片描述
在这里插入图片描述
选择release , 选中 V1 V2
在这里插入图片描述
成功后,在 app\release 目录下,看到生成的apk.


(optional) 重写Application

如果集成离线SDK时需要重写application (不需要则跳过这一步),必须继承自DCloudApplication,否则会导致SDK中业务逻辑无法正常运行。

新建一个Java类 MyApplication:

class MyApplication extends DCloudApplication { 
   

    @Override
    public void onCreate() { 
   
        super.onCreate();
    }
}

MyApplication 配置到Androidmanifest.xml中(如下): 在 application 节点中添加代码:

android:name=".MyApplication"
tools:replace="android:name"

tools需要导入。在上面的manifest 里添加:
xmlns:tools="http://schemas.android.com/tools"

name里是MyApplication路径,默认前缀为package
在这里插入图片描述


FAQ

1、项目配置都正确怎么还是提示”未配置AppKey或配置错误”?

安装包的信息与你在申请Appkey填写信息不符导致的。
appid+应用包名+签名sha1三者必须与申请填写的信息一致才可以的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125863.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月18日 上午11:40
下一篇 2022年4月18日 上午11:40


相关推荐

  • 平台开发文档_快速开发平台

    平台开发文档_快速开发平台转自【作者:手机即信息博客:http://canco.javaeye.com】   手机可分为智能手机开发和featherphone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windowsmobile、linux、iPhone、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OTA下载和安装;封闭式平台包括MTK、展讯、

    2022年8月12日
    12
  • AI编程实战:Cursor避坑指南与高效提示词设计

    AI编程实战:Cursor避坑指南与高效提示词设计

    2026年3月16日
    18
  • VUE组件封装_vue使用组件

    VUE组件封装_vue使用组件什么是组件化:组件化就是将一个页面拆分成一个个小的功能模块,每个功能模块完成属于自己这部分独立的功能,使得整个页面的管理和维护变得非常容易。Vue组件化思想 组件化是Vue中的重要思想,当我们对vue的基本知识有了一定的基础就要开始封装组件了 它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用。组件树。组件化思想的应用 1.在项目中充分利用组件化的思想 2.尽可能的将也页面拆分成一个个小的可复用的组件 3.好处:代码更加方便组织和管理,扩展性也更强一.注

    2026年2月20日
    4
  • 用Pycharm 直接下载Pyinstaller,以及使用问题解决

    用Pycharm 直接下载Pyinstaller,以及使用问题解决作为一个学语言学着玩的人,肯定很想把自己的学py文件打包发给别人,Pyinstaller包满足你。因为我一般下载包都是通过Pycharm下载的,有两个方法:一:在Pycharm中你输入:importPyinstaller#会报错只需要按住alt+回车下面就会出现是否安转此包,再回车一下等待就会自动安转完成;二:在Pycharm左上角的File->Setti…

    2022年8月26日
    16
  • ActionList中Action的快捷鍵

    ActionList中Action的快捷鍵nbsp 本文的目的是說明 這里的快捷鍵是如何被觸發的 nbsp nbsp nbsp nbsp nbsp 從控件自身來看 快捷鍵的進入點是在 TWincontrol IsMenuKey 在分析 IsMenuKey 之前 我們先看一下 IsMenuKey 是哪里被調用的 nbsp nbsp nbsp nbsp 搜索 Controls Pas 可以發現 他是在 CNKeyDown 事件里被觸發的 如下 Line13 varMask Integer b

    2026年3月26日
    2
  • java线程间通信的几种方法_socket通信原理 java

    java线程间通信的几种方法_socket通信原理 javaJava线程间通信

    2022年10月7日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号