首页 > 移动平台 > 详细

Unity 应用内安装app

时间:2020-09-19 20:54:15      阅读:128      评论:0      收藏:0      [点我收藏+]

Android端的Gradle打包

  Unity2019的导出(构建为Gradle包)

如果Unity端更改了C#代码,需要重新导入assets 部分的代码.实际上,在代码逻辑层,在Unity项目中的Assets正常路径中的脚本文件(会编译到Assembly-CSharp.dll,Assembly-CSharp-firstpass.dll)详实参考网上编译顺序.

技术分享图片

 

 

 

 

 

 

当前的操作遇到的情况就是,如果讲asset的所有文件覆盖,对应的dll没有更新到,解决方法是讲对应的两个dl覆盖进来,Unity那边的C#改动就同步过来了.(实际操作看当时实际情况)

Android Studio(以后文档简称它为AS)下,参看对应的文件位置:

 

Unity端的改动具体会影响到的Gradle项目位置大体看流程图:

技术分享图片

 

 

 

热更对应看版本号

应用内安装aap和增量热更其实都是应用升级,手游项目一般会把安装app叫做强更.在代码热更使用ToLua的情况下,没有HotFix,那么C#版本的更新必须用到强更,那么项目中构建好"应用内安装app"的功能就非常必要

技术分享图片

 

 

 

 

应用内下载安装重要条件

      1.得到用户主动许可的权限

      2.Android端 使用 FileProvider(必要且重要)

       

理论上,满足了以上的条件就能唤起应用的下载与安装.

清单配置里面的权限声明:

//android 8.0安装apk需要请求未知来源权限:

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

//Android6.0权限适配之SD卡写入

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

//Android6.0权限适配之进行访问sd卡

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

// 允许一个程序安装packages

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

 

以上是安卓系统主动请求用户的相关权限,在用户不主动接受的时候,可以无法进行后面的安装操作.

清单内的权限声明:

技术分享图片

 

 

 

 

动态地申请权限,调用时机在Android启动的时候就开始赋权

技术分享图片

 

 

 

 

技术分享图片

 

 

 

 

 

另外注意安卓的SDK版本问题:(以下是居于FileProvider的讨论)

本地测试的时候,用的SDK是7以上的版本(Android 8.0)

技术分享图片

 

 

 

 

 

技术分享图片

 

 

 

 

Android 7.0的新特性规定,对于android 7.0应用(仅仅对于android 7.0版本的sdk而言,若是编译版本低于25仍然不会受到影响),android框架使用StrictMode Api禁止我们的应用对外部(跨越应用分享)公开file://,若使用file://格式共享文件则会报FileUriExposedException异常,android 7.0应用间的文件共享需要使用content://类型的URI分享,并且需要为其提供临时的文件访问权限

(Intent.FLAG_GRANT_READ_URI_PERMISSION和Intent.FLAG_GRANT_WRITE_URI_PERMISSION),对此,官方给我们的建议是使用FileProvider类进行分享。

(作者:_凌浩雨

链接:https://www.jianshu.com/p/f0b2cf0e0353

来源:简书)

 

 

对于FileProvider进行的数据读取共响,网上的方案很多,但是坑点在这里:

<!-- Caused by: java.lang.ClassNotFoundException:

 Didn‘t find class "android.support.v4.content.FileProvider" -->

android:name="android.support.v4.content.FileProvider"

======================================================

<!-- Didn‘t find class "androidx.core.content.FileProvider"  -->

android:name= "androidx.core.content.FileProvider"

也就是说,AS可能获取不到这个两个类,

解决方法在此:

dependecies{

    //android.support.v4.content.FileProvider需要依赖的包

    implementation ‘com.android.support:design:26.+‘

  

    //androidx.core.content.FileProvider需要依赖的包

    implementation "androidx.contentpager:contentpager:1.0.0"

}

当前项目用的是 implementation "androidx.contentpager:contentpager:1.0.0",使用的FileProvider是"androidx.core.content.FileProvider".

技术分享图片

 

 

 

 

 

最后的坑点

     最后系统已经能拉起来新包了,但是新包覆盖不成功,显示安装失败,就是包的签名不对应,所以注意包的签名,版本等问题

 

Unity 应用内安装app

原文:https://www.cnblogs.com/Langzigui/p/13697331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!