项目中的bug

    xiaoxiao2025-07-22  12

    总结是一个很好的习惯,但是出问题也别全靠别人,看好异常信息,你就能解决问题。

    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操作,中文更新后在数据库就连接正常了。

    转载请注明原文地址: https://ju.6miu.com/read-1300953.html
    最新回复(0)