uni-app 离线打包安卓APP常见问题汇总

uni-app 离线打包安卓APP常见问题汇总(手机)

uni-app 离线打包总会有各种各样的坑,以下是我的分享:

支付相关

原因为:requestPayment:fail[payment微信:-1]Genernal errors
新建一个同包名的相似应用名称,微信审核成功后,去商户后台关联appid,然后微信开发平台同意授权,后台返回跟之前一样的参数,完美

四、权限问题

官方指导

三、应用管理界面,找不到选择离线打包Key管理

因为应用宝隐私保护审核变严了,之前的uniapp自动会获取mac地址等,用于数据分析,所以要换3.1.10+打包了,要appid了,技术更新得太快了,没很入坑的建议,早点下车。。。找个离线打包Key管理,都疑惑了我大半天。。可能是我太辣鸡了,居然要双击应用名称才出来,选中是没得用的。
在这里插入图片描述

一、播放视频功能

勾选模块

在这里插入图片描述

原生的放包至libs

文件:media-release.aar
在这里插入图片描述

二、应用设置里都显示,相机授权了,调相机也没反应

调相机功能,基座能正常运行,打包,配了权限了,且基座运行时还询问了相机权限,我还授权了,去设置里面看这个app也显示授权了,可是调相机,没有任何反应,试的都要哭了,后面发现是有个包名没有改过来,以下是处理办法:

AndroidManifest.xmlapplication节点下添加修改provider节点,${apk.applicationId}请填写自己的包名,代码和图片如下:

        <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>

在这里插入图片描述

赠品

离线打包的权限

需要在AndroidManifest.xmlapplication节点添加权限,代码和图片如下:

      <uses-feature android:name="android.hardware.camera" />
   <uses-feature android:name="android.hardware.camera.autofocus" />
   <!-- 摄像头权限 -->
   <uses-permission android:name="android.permission.CAMERA" />
   <!-- 开启闪光灯权限 -->
   <uses-permission android:name="android.permission.FLASHLIGHT"/>

在这里插入图片描述

调用相机代码

async appCamera() {
   
       let that = this;
       var cmr = plus.camera.getCamera(1);
       var res = cmr.supportedImageResolutions[0];
       var fmt = cmr.supportedImageFormats[0];
       let funTips = '相机';
       //是不是isAndroidOs,请在APP.vue全局赋值
       //判断是否授权,没授权跳转设置
       var iscan = await permission_app.req_Permit_any(that.isAndroidOs, permission_app.permisionID_anrd.camera,
         permission_app.permisionID_ios.camera, funTips);
       if (iscan) {
   
         
         cmr.captureImage((path) => {
   
             
             that.chooseSuccessMethod([path])
           },
           (error) => {
   
             //alert("Capture image failed: " + error.message);
             console.log('失败!请重新选择');
​
​
           }, {
   
             resolution: res,
             format: fmt
           }
         );
       }},
     async chooseSuccessMethod(filePath) {
   
       let that = this;
       
       let path = filePath[0] ;
       
       return path;
      
     },

引入权限封装的js

	//#ifdef APP-PLUS
 	 import permission_app from "@/permission_app.js";
  // #endif

permission_app.js:此js封装了大部分App权限判断函数,适用安卓和iOS

  /**
 * 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
 */

var isIos
// #ifdef APP-PLUS
isIos = (plus.os.name == "iOS")
// #endif

// 判断推送权限是否开启
function judgeIosPermissionPush() {
   
	var result = false;
	var UIApplication = plus.ios.import("UIApplication");
	var app = UIApplication.sharedApplication();
	var enabledTypes = 0;
	if (app.currentUserNotificationSettings) {
   
		var settings = app.currentUserNotificationSettings();
		enabledTypes = settings.plusGetAttribute("types");
		console.log("enabledTypes1:" + enabledTypes);
		if (enabledTypes == 0) {
   
			console.log("推送权限没有开启");
		} else {
   
			result = true;
			console.log("已经开启推送功能!")
		}
		plus.ios.deleteObject(settings);
	} else {
   
		enabledTypes = app.enabledRemoteNotificationTypes();
		if (enabledTypes == 0) {
   
			console.log("推送权限没有开启!");
		} else {
   
			result = true;
			console.log("已经开启推送功能!")
		}
		console.log("enabledTypes2:" + enabledTypes);
	}
	plus.ios.deleteObject(app);
	plus.ios.deleteObject(UIApplication);
	return result;
}

// 判断定位权限是否开启
function judgeIosPermissionLocation() {
   
	var result = false;
	var cllocationManger = plus.ios.import("CLLocationManager");
	var status = cllocationManger.authorizationStatus();
	result = (status != 2)
	console.log("定位权限开启:" + result);
	// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
	/* var enable = cllocationManger.locationServicesEnabled();
	var status = cllocationManger.authorizationStatus();
	console.log("enable:" + enable);
	console.log("status:" + status);
	if (enable && status != 2) {
		result = true;
		console.log("手机定位服务已开启且已授予定位权限");
	} else {
		console.log("手机系统的定位没有打开或未给予定位权限");
	} */
	plus.ios.deleteObject(cllocationManger);
	return result;
}

// 判断麦克风权限是否开启
function judgeIosPermissionRecord() {
   
	var
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wx_h13813744

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值