项目调试

1.AnyRTC-RTMP项目调试

项目调试_第1张图片
image.png

2.凡信3.1项目调试

运行报错:


image.png

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

项目调试_第2张图片
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.动画文件路径错误:如图
项目调试_第3张图片
image.png
项目调试_第4张图片
image.png

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

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

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


项目调试_第5张图片
image.png
3.jar包重复添加错误:

错误信息如下:

Error:Execution failed for task ':transformClassesWithJarMergingForRelease'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException

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


项目调试_第6张图片
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')删除即可,因为上面已经添加了此依赖。

你可能感兴趣的:(项目调试)