hbuildx打包app安装后不弹权限框,电脑端是可以的
点击对讲按钮会弹出需要麦克风权限,但是手机端没弹,
hbuildx勾选了
-----
-----
但是不起作用,
你指的手机端是真机吧,电脑端指的是模拟器,如果我理解的没错的话。为什么在模拟器中会弹出权限申请呢,而在真机上却不会弹出权限申请。据我猜测,应该是安卓版本的问题,在安卓后期的版本中,申请权限需要在代码中写,而不是只在配置文件中申明,你可以比较下,看下你的电脑端和手机端的安卓版本分别是多少。
新年快乐🎉,望采纳,谢谢!
1、首先检查一下Hbuildx打包的app是否在手机上有权限,如果没有权限,可以尝试在手机上手动开启权限。
2、如果权限已经开启,可以尝试重新打包一下,确保Hbuildx中勾选了麦克风权限。
3、如果以上方法都不起作用,可以尝试在代码中添加对应的权限请求,详情可以参考官方文档。
望采纳!!新年快乐🎉🎉
权限申请的方法工具:
function getPermission(str, callback){
let {Build, Manifest, MainActivity, ArrPermissions} = getPermissions(str);
//如果没有权限,则申请
if (!PermissionChecks(ArrPermissions, Build, MainActivity)) {
PermissionRequest(ArrPermissions, Build, MainActivity, callback);
}else{
return true;
}
}
function PermissionCheck(permission, Build, MainActivity) {
if (Build.VERSION.SDK_INT >= 23) {
if (MainActivity.checkSelfPermission(permission) == -1) {
return false;
}
}
return true;
}
function PermissionChecks(Arr, Build, MainActivity) {
let HasPermission = true;
for (let index in Arr) {
let permission = Arr[index];
//如果此处没有权限,则是用户拒绝了
if (!PermissionCheck(permission, Build, MainActivity)) {
HasPermission = false;
break;
}
}
return HasPermission;
}
function PermissionRequest(Arr, Build, MainActivity, callback) {
if (Build.VERSION.SDK_INT >= 23) {
plus.android.requestPermissions(Arr, function(e){
if(e.granted[0]){//权限获取成功
if(typeof callback == 'function'){ callback() }
}
if(e.deniedPresent[0]){//权限被临时拒绝
}
if(e.deniedAlways[0]){//权限被永久拒绝
Alert('该权限已被永久拒绝,无法使用相关功能。\n若需使用相关功能,请前往手机应用设置打开相关权限。')
}
})
}
}
function getPermissions(arrPermissions){
let Build = plus.android.importClass("android.os.Build");
let Manifest = plus.android.importClass("android.Manifest");
let MainActivity = plus.android.runtimeMainActivity();
return {Build, Manifest, MainActivity, arrPermissions}
}
权限调用使用方法如下:
let Manifest = plus.android.importClass("android.Manifest");
Confirm('为保证您正常、安全地使用,需要获取录音权限使用权限,点击确定继续。', function(){
getPermission([Manifest.permission.RECORD_AUDIO], function(){
//获取授权成功后的操作
});
})
可能是由于手机系统版本过低或者是打包工具的问题。
1.检查手机系统版本是否足够高。在Android 6.0及更高版本中,应用程序需要在运行时请求权限。如果手机系统版本过低,可能导致权限请求失败。
2.检查打包工具是否正确配置。确保已经在打包工具中勾选了麦克风权限,并且配置文件中没有配置错误。
3.尝试重新打包应用程序。
4.如果仍然无法解决问题,可以尝试使用其他打包工具
1.运行HBuilder---百度搜索HBuilder,官网下载安装包,解压,运行HBuilder.exe。注册账号,并登陆
2.新建app---在左边右键,选择新建APP,或者,点击中间的新建app
3.在弹出的窗口,填入应用名称,根据需求选择项目位置,以及模板内容
4.检验app效果----创建好之后,选择刚刚创建好的项目,在顶部选择运行,根据你的情况现在运行方式
5.效果展示---这是我刚刚选择的模板app展示,功能齐全,用着感觉还不错
6.打包成app---选择要打包的项目,在顶部选择运行,发型原生安装包
7.云端打包---在弹出的窗口,选择相应证书,如果参数配置未完成,点击顶部参数配置
8.图标配置---上传图标,如果不想挨个穿图标就点击下方生成并替换
9.参数配置
1,配置相应的app入口位置,app名称,版本
2,配置图标
3,配置启动图片
4,sdk配置(可选,如果需要同步登录,需配置相应的参数,获得相应的参数需到相应的开放平台申请)
10.打包成app---选择要打包的项目,在顶部选择运行,发型原生安装包
11.云端打包---在弹出的窗口,选择相应证书,如果参数配置未完成,点击顶部参数配置,如果配置完成,点击底部打包
12.稍等一会儿
13.如果刚刚不小心关闭了,或者后面某天想找到打包的app,在顶部选择运行,根据需要选择查看。发送到手机上,安装试试
注:使用自有证书
生成Android签名证书,确保电脑上安装了JRE,我们将使用JRE自带的创建和管理数字证书的工具Keytool。使用以下命令生成证书:
Git Bash Here
//生成key
keytool -genkey -alias ship.keystore -keyalg RSA -validity 1000 -keystore ship.keystore
说明:keytool -genkey -alias 别名.keystore -keyalg RSA -validity 有效期限(天数) -keystore 别名.keystore
例如:keytool -genkey -alias hello.keystore -keyalg RSA -validity 1000 -keystore hello.keystore
//签名
jarsigner -verbose -keystore ship.keystore -signedjar ship.apk android-release-unsigned.apk ship.keystore
说明:jarsigner -verbose -keystore 别名.keystore(密钥库位置) -signedjar 签名后产生的文件.apk 要签名的文件.apk 别名.keystore(密钥库)
例如:
jarsigner -verbose -keystore hello.keystore -signedjar hello.apk android-release-unsigned.apk hello.keystore
注意!!!
keystore:helloworld.keystore 表示生成的证书,可以加上路径(默认在用户主目录下);
alias:helloworld 表示证书的别名是helloworld;
keyalg:RSA 表示采用的RSA算法;
validity:10000 表示证书的有效期是10000天。
配置打包信息使用自有证书:
注意事项:
App包名:Android应用包名,推荐使用反向域名风格的字符串,如“com.domainname.appname”;
证书别名:生成证书时使用-alias参数设置的证书别名;
私钥密码:生成证书时使用的keystore密码;
证书文件:生成证书时使用-keystore参数设置的证书保存路径。
查看下你电脑的win7系统上ANDROID_SDK_HOME,命令行 echo %ANDRIOD_SDK_HOME%
查看是否是指向一个不存在的目录。
将电脑环境变量中的ANDRIOD_SDK_HOME删除,重新运行adb devices,手机上出现授权提示,问题解决。
function PermissionCheck(permission, Build, MainActivity) {
if (Build.VERSION.SDK_INT >= 23) {
if (MainActivity.checkSelfPermission(permission) == -1) {
return false;