1.AnyRTC-RTMP项目调试
2.凡信3.1项目调试
运行报错:
此错误为安全性报错。在Android6.0之后Android加入的动态权限,除了在清单文件加入权限声明,还要在Java代码中加入相应申请。此错误为缺少读取手机状态权限。报错的位置如下图标记区域:
此处是初始化红包上下文的。因为动态申请权限需要用到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.动画文件路径错误:如图
需要把报错的文件移入到drawable目录下,并把Java代码中引用的路径更正。
2.国际化文件错误
后来在stackoverflow搜索到添加如下代码忽略翻译即可。
解决方案:
3.jar包重复添加错误:
错误信息如下:
Error:Execution failed for task ':transformClassesWithJarMergingForRelease'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException
Google搜索后在stackoverflow发现有人也需要多同样的问题。此问题
上图为解决此类问题的方案。
找到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')
删除即可,因为上面已经添加了此依赖。