总结是一个很好的习惯,但是出问题也别全靠别人,看好异常信息,你就能解决问题。
1.gradle version 问题
导入别人的项目的时候出现版本问题,此刻你只需要修改gradle版本号和自己本地一致就可以运行别人的项目了。
———————————————————————————————————————————————————
2.umeng分享到QQ显示网络异常,分享失败(切记看打印的log)
本来以为是umeng的问题,看了错误才发现是图片配置错误,umeng分享到QQ时如果携带图片,配置的图片路径一定要是对的,否则找不到图片分享就会失败,显示错误如下:
3 android:allowBackup=”true” 数据备份危险
- 在项目节点中存在allowbackup属性,此定义表示允许备份此应用数据,使用备份命令就可以将你该应用的数据备份到电脑端,如果存在重要的信息,建议将其设置为false,具体数据备份命令,请自行查找资料…
- 将其设置成android:allowBackup=”false”,之后,运行可能会出现如下错误:
- 运行之后给出了错误提示,也给出了相应的解决办法。
-添加 tools:replace=”android:allowBackup” 到节点,添加此属性是因为你依赖的项目或者jar包中包含android:allowBackup=”true”,merge的时候会出现失败的情况,使用replace再次运行就会正确。
4 ButterKnife使用NullPointException
小细节很重要,之前使用ButterKnife的时候没有注意到,昨天再次用的时候报NullPointException才发现,Activity中使用
// 查找id,
@BindView(R.id.listview)
public ListView listView;
onCreate方法中绑定ButterKnife
切记ButterKnife.bind(this)在setContentView设置布局方法后使用
5 BuildConfig.DEBUG 返回为false导致使用其判断的log输入打印不出来
log输入项目中是根据BuildConfit.DEBUG 动态识别是否是正式包的,如下:
public class LogUtils {
public static final boolean DEBUG = BuildConfig.DEBUG;
public static void v(String tag, String message) {
if (DEBUG) {
Log.d(tag, message);
}
}
}
可是项目debug模式的情况下获取的DEBUG出现false情况,导致日志打印不出来,解决办法如下:
在项目的build.gradle文件下修改如下:
修改前:
dependencies {
compile project(':ViewPagerIndicator')
}
修改后:
dependencies{
releaseCompile project(path: ':ViewPagerIndicator', configuration: 'release')
debugCompile project(path: ':ViewPagerIndicator', configuration: 'debug')
}
修改的同时需要在你添加依赖的项目包下的 build.gradle文件中修改如下:
android {
//添加下面这句代码
publishNonDefault true
}
然后编译一下,就ok了
6 数据库连接更新时字符乱码
项目中,需要访问数据库,并且更新相对应的字段,set='中文',按照一般的格式直接更新时,数据库在更新成功后,显示的为问号(?),出现此问题的主要原因为字符集不一致的原因。
/**
* 功能:数据库连接
*
* @param DbType
* @return Connection
*/
public static Connection getConn(DbType DbType) {
String driver = null;
String url = null;
String user = null;
String pwd = null;
String maxActive = null;
DruidDataSource dataSource = new DruidDataSource();
switch (DbType) {
case 数据库1:
driver = config.get("数据库1");
url = config.get("数据库1");
user = config.get("数据库1");
pwd = config.get("数据库1");
maxActive = config.get("数据库1");
break;
case 数据库2:
driver = config.get("数据库2");
url = config.get("数据库2");
user = config.get("数据库2");
pwd = config.get("数据库2");
maxActive = config.get("数据库2");
break;
default:
driver = config.get("数据库1");
url = config.get("数据库1");
user = config.get("数据库1");
pwd = config.get("数据库1");
maxActive = config.get("数据库1");
}
try {
dataSource.setDriverClassName(driver);
//之前数据库的url连接方式
//dataSource.setUrl(url);
//添加字符集处理后的url连接方式
dataSource.setUrl(url+"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername(user);
dataSource.setPassword(pwd);
dataSource.setMaxActive(Integer.parseInt(maxActive));
conn = dataSource.getConnection();
System.out.println("MariaDB Connected Successfully!");
} catch (SQLException e) {
System.err.println("SQL Exception:" + e.getMessage());
}
return conn;
}
使用此方式连接后,再次处理update操作,中文更新后在数据库就连接正常了。