Android 问题:Attribute "xxx" has already been defined

在团队合作开发Android应用时,可能出现自定义类属性名重复导致的警告。当两个类定义了相同属性名时,系统警告'Attribute "xxx" has already been defined'。解决方法是在values文件夹的attrs.xml中先声明属性,然后在各个属性集合中引用已声明的属性,避免直接定义。通过此方式,可以解决不同类中相同属性名的冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果从单独开发app的话,可能不会遇到多个自定义类的attribute 的名字重复的问题。但是如果是团队合作开发的话,可能会碰到这样的问题,A和B自定义的两个类都用了同一个名字来定义属性,这时系统会报出警告,Attribute "xxx" has already been defined. A和B又都不想修改自己的名字,这时就很头痛。

下面举个例子,在values文件夹下定义一个上面的attrs.xml的文件,eclipse即会报错:Attribute "icon" has a
{"mysqld_version_id":90200,"dd_version":90200,"sdi_version":80019,"dd_object_type":"Table","dd_object":{"name":"general_log","mysql_version_id":90200,"created":20250525112052,"last_altered":20250525112052,"hidden":1,"options":"avg_row_length=0;key_block_size=0;keys_disabled=0;pack_record=1;stats_auto_recalc=0;stats_sample_pages=0;","columns":[{"name":"event_time","type":18,"is_nullable":false,"is_zerofill":false,"is_unsigned":false,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":1,"char_length":26,"numeric_precision":0,"numeric_scale":0,"numeric_scale_null":true,"datetime_precision":6,"datetime_precision_null":0,"has_no_default":false,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAAAAAA==","default_value_utf8_null":false,"default_value_utf8":"CURRENT_TIMESTAMP(6)","default_option":"CURRENT_TIMESTAMP(6)","update_option":"CURRENT_TIMESTAMP(6)","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"timestamp(6)","elements":[],"collation_id":8,"is_explicit_collation":false},{"name":"user_host","type":25,"is_nullable":false,"is_zerofill":false,"is_unsigned":false,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":2,"char_length":16777215,"numeric_precision":0,"numeric_scale":0,"numeric_scale_null":true,"datetime_precision":0,"datetime_precision_null":1,"has_no_default":true,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAAAAAAAAAAA=","default_value_utf8_null":true,"default_value_utf8":"","default_option":"","update_option":"","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"mediumtext","elements":[],"collation_id":33,"is_explicit_collation":false},{"name":"thread_id","type":9,"is_nullable":false,"is_zerofill":false,"is_unsigned":true,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":3,"char_length":20,"numeric_precision":20,"numeric_scale":0,"numeric_scale_null":false,"datetime_precision":0,"datetime_precision_null":1,"has_no_default":true,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAAAAAAA=","default_value_utf8_null":true,"default_value_utf8":"","default_option":"","update_option":"","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"bigint unsigned","elements":[],"collation_id":33,"is_explicit_collation":false},{"name":"server_id","type":4,"is_nullable":false,"is_zerofill":false,"is_unsigned":true,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":4,"char_length":10,"numeric_precision":10,"numeric_scale":0,"numeric_scale_null":false,"datetime_precision":0,"datetime_precision_null":1,"has_no_default":true,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAA==","default_value_utf8_null":true,"default_value_utf8":"","default_option":"","update_option":"","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"int unsigned","elements":[],"collation_id":33,"is_explicit_collation":false},{"name":"command_type","type":16,"is_nullable":false,"is_zerofill":false,"is_unsigned":false,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":5,"char_length":192,"numeric_precision":0,"numeric_scale":0,"numeric_scale_null":true,"datetime_precision":0,"datetime_precision_null":1,"has_no_default":true,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==","default_value_utf8_null":true,"default_value_utf8":"","default_option":"","update_option":"","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"varchar(64)","elements":[],"collation_id":33,"is_explicit_collation":false},{"name":"argument","type":25,"is_nullable":false,"is_zerofill":false,"is_unsigned":false,"is_auto_increment":false,"is_virtual":false,"hidden":1,"ordinal_position":6,"char_length":16777215,"numeric_precision":0,"numeric_scale":0,"numeric_scale_null":true,"datetime_precision":0,"datetime_precision_null":1,"has_no_default":true,"default_value_null":false,"srs_id_null":true,"srs_id":0,"default_value":"AAAAAAAAAAAAAAA=","default_value_utf8_null":true,"default_value_utf8":"","default_option":"","update_option":"","comment":"","generation_expression":"","generation_expression_utf8":"","options":"interval_count=0;","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","column_key":1,"column_type_utf8":"mediumblob","elements":[],"collation_id":63,"is_explicit_collation":true}],"schema_ref":"mysql","se_private_id":18446744073709551615,"engine":"CSV","last_checked_for_upgrade_version_id":0,"comment":"General log","se_private_data":"","engine_attribute":"","secondary_engine_attribute":"","row_format":2,"partition_type":0,"partition_expression":"","partition_expression_utf8":"","default_partitioning":0,"subpartition_type":0,"subpartition_expression":"","subpartition_expression_utf8":"","default_subpartitioning":0,"indexes":[],"foreign_keys":[],"check_constraints":[],"partitions":[],"collation_id":33}}
最新发布
05-26
### MySQL 9.2.0 `general_log` 表结构及日志文件是否包含登录密码信息 #### 关于 `general_log` 表结构 在 MySQL 数据库中,当启用了通用查询日志(General Query Log)功能后,所有的 SQL 查询语句都会被记录下来。对于基于表的日志存储方式而言,这些数据会被存放在名为 `general_log` 的表当中[^3]。该表位于系统数据库 schema 下面,默认是 performance_schema 或者 mysql 库内视具体情况而定。 以下是典型的 `general_log` 表字段组成描述: | 字段名 | 类型 | 描述 | |----------------|-------------------|----------------------------------------------------------------------| | event_time | TIMESTAMP | 记录发生的时刻 | | user_host | MEDIUMTEXT | 用户名称与主机地址 | | thread_id | BIGINT UNSIGNED | 连接线程 ID | | server_id | INT UNSIGNED | 当前实例的服务编号 | | command_type | VARCHAR(64) | 执行的操作类别 | | argument | LONGTEXT | 实际执行的具体SQL语句 | 请注意以上表格仅为示意性质,并不代表确切版本间的差异;不同发行版之间可能存在细微改动[^1]。 #### 日志文件是否包含登录密码信息 按照标准配置流程来看,在正常运行状态下,无论是通过文件还是表的形式来保存 general query logs ,均不应该显式地展示出用户的明文密码内容。这是因为即使是在初始化阶段产生的随机初始 root 密码也会单独放置于 error log 中而不是常规访问路径之下[^2]。 但是有一种例外情形值得注意——如果开发者自行编写的应用程序代码里面包含了类似 `"SELECT * FROM users WHERE username='admin' AND password='" + userInputPassword +"';"` 这样的拼接逻辑错误做法,则有可能间接导致最终形成的请求串里夹杂着未经处理过的原始输入值从而落入监控范围之内。因此建议始终遵循参数化查询的最佳实践原则以规避此类隐患的发生[^4]。 另外还需强调一点就是即便理论上讲不会轻易暴露敏感资料给外部可见区域,但从最佳安全策略角度出发仍然推荐关闭不必要的追踪选项除非绝对必要时才重新激活它们。 ```sql SHOW VARIABLES LIKE 'general_log%'; SET GLOBAL general_log = 'ON'; DESCRIBE mysql.general_log; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步DEV

如有帮助,那多谢赞助!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值