hbuildx打包app

hbuildx打包app安装后不弹权限框,电脑端是可以的
点击对讲按钮会弹出需要麦克风权限,但是手机端没弹,
hbuildx勾选了
-----
-----
但是不起作用,

img


img

你指的手机端是真机吧,电脑端指的是模拟器,如果我理解的没错的话。为什么在模拟器中会弹出权限申请呢,而在真机上却不会弹出权限申请。据我猜测,应该是安卓版本的问题,在安卓后期的版本中,申请权限需要在代码中写,而不是只在配置文件中申明,你可以比较下,看下你的电脑端和手机端的安卓版本分别是多少。

新年快乐🎉,望采纳,谢谢!
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算法;
  
validity10000 表示证书的有效期是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;