美文网首页
项目调试

项目调试

作者: Looog | 来源:发表于2017-05-17 14:33 被阅读102次

    1.AnyRTC-RTMP项目调试

    image.png

    2.凡信3.1项目调试

    运行报错:


    image.png

    此错误为安全性报错。在Android6.0之后Android加入的动态权限,除了在清单文件加入权限声明,还要在Java代码中加入相应申请。此错误为缺少读取手机状态权限。报错的位置如下图标记区域:

    image.png

    此处是初始化红包上下文的。因为动态申请权限需要用到activity,而此段代码放在了application下。所以可将此段代码放入MainActivity下。并加入以下代码:

    
         private void checkPermission() {
             if (ContextCompat.checkSelfPermission(this,
                     Manifest.permission.READ_PHONE_STATE)
                     != PackageManager.PERMISSION_GRANTED) {
    
                 if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                         Manifest.permission.READ_PHONE_STATE)) {
    
                 } else {
    
                     ActivityCompat.requestPermissions(this,
                             new String[]{Manifest.permission.READ_PHONE_STATE},
                             1);
                 }
             }else {
                 //red packet code : 初始化红包上下文,开启日志输出开关
                 RedPacket.getInstance().initContext(this);
                 RedPacket.getInstance().setDebugMode(true);
             }
         }
    

    此方法可在onCreate()方法中调用。
    并在加入权限回调方法,如下:

     @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                               @NonNull int[] grantResults) {
            PermissionsManager.getInstance().notifyPermissionsChange(permissions, grantResults);
    
            for (String p : permissions) {
                if (p.equals(Manifest.permission.READ_PHONE_STATE)) {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager
                            .PERMISSION_GRANTED) {
                        //red packet code : 初始化红包上下文,开启日志输出开关
                        RedPacket.getInstance().initContext(MainActivity.this);
                        RedPacket.getInstance().setDebugMode(true);
                    }
                }
            }
        }
    

    注意:其中
    PermissionsManager.getInstance().notifyPermissionsChange(permissions, grantResults);
    这行代码是作者自己写的权限管理类中的方法。是统一处理所有获取的权限。

    此时可以运行项目。但是打包的时候出现很多错误。主要错误:

    1.动画文件路径错误:如图
    image.png image.png

    需要把报错的文件移入到drawable目录下,并把Java代码中引用的路径更正。

    2.国际化文件错误
    image.png

    后来在stackoverflow搜索到添加如下代码忽略翻译即可。
    解决方案:


    image.png
    3.jar包重复添加错误:

    错误信息如下:

    Error:Execution failed for task ':transformClassesWithJarMergingForRelease'.
    
    com.android.build.api.transform.TransformException: java.util.zip.ZipException
    

    Google搜索后在stackoverflow发现有人也需要多同样的问题。此问题


    image.png

    上图为解决此类问题的方案。
    找到build.gradle文件中添加依赖的代码。如下

    dependencies {
        compile project(':redpacketlibrary')
        compile project(':library')
        compile 'com.tencent.bugly:crashreport:2.2.0'
        //ucloud相关
        compile project(':ulive-android-sdk')
        compile 'com.jakewharton:butterknife:7.0.1'
        compile 'com.squareup.okhttp3:okhttp:3.3.1'
        compile fileTree(include: '*.jar', exclude: 'android-support-multidex.jar', dir: 'libs')
        compile project(':easeuilibrary')
        compile files('libs/android-support-multidex.jar')
    }
    

    将最后一行的compile files('libs/android-support-multidex.jar')删除即可,因为上面已经添加了此依赖。

    相关文章

      网友评论

          本文标题:项目调试

          本文链接:https://www.haomeiwen.com/subject/ondrxxtx.html