Android 错误 'roundIcon' in package 'android'

本文介绍了解决因使用了不兼容版本的roundIcon属性而导致的错误方法。通过调整targetSdkVersion或直接移除无效属性,可以避免低版本Android系统上出现Noresourceidentifier的错误。

Error:No resource identifier found for attribute 'roundIcon' in package 'android'

roundIcon是个高版本里面才有的东东,低版本是没有的,一般是由于调节targetSdkVersion版本造成的

解决办法:

删除清单文件AndroidManifest.xml里的 android:roundIcon="@mipmap/ic_launcher_round" 这句话就OK了

只要看到Error:No resource identifier......,肯定是xml文件里面出问题了,盯着找就好了

如果是in package 'XXX',这个多半就是自己定义的控件在应用的时候出了问题。

Android 中,`package` 具有多方面的重要意义和用途。 ### 包的概念 包在 Android 里是组织代码的基本方式,如同文件系统的目录结构,能够把相关的类和接口归类在一起,避免命名冲突,让代码的逻辑结构更清晰 [^1]。例如 `android.hardware.sensors` 包,`android` 是 Android 系统相关代码的顶级包,`hardware` 代表与硬件相关的代码,`sensors` 则进一步聚焦于传感器相关代码。 ### 包在 Android 开发中的应用 #### 代码组织 在 Android 项目里,开发者会依据功能模块来划分不同的包。比如在一个简单的 Android 应用中,可能会有 `com.example.app.ui` 用于存放界面相关的类,`com.example.app.data` 用于存放数据处理相关的类。 #### 包名与应用标识 每个 Android 应用都有唯一的包名,这个包名在 Google Play 商店等应用市场中充当应用的标识。在 `AndroidManifest.xml` 文件里,`package` 属性会指定应用的包名,示例如下: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <!-- 应用的其他配置信息 --> </manifest> ``` #### 包与权限管理 Android 系统借助包名来进行权限管理。在 `AndroidManifest.xml` 文件中,可以声明应用需要的权限,这些权限与特定的包相关联。示例如下: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <uses-permission android:name="android.permission.INTERNET" /> <!-- 其他权限声明 --> </manifest> ``` #### 包与资源管理 Android 资源(如布局文件、字符串资源等)也和包紧密相关。资源文件会被放置在 `res` 目录下,并且通过包名来引用。例如,在 Java 代码中引用布局文件: ```java package com.example.myapp; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); textView.setText("Hello, World!"); } } ``` ### 包与 Android 系统组件 #### 包与 Activity Activity 是 Android 应用的界面组件,每个 Activity 都属于特定的包。在 `AndroidManifest.xml` 中,需要声明 Activity 所在的包名,示例如下: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> ``` #### 包与 Service Service 是 Android 应用中用于在后台执行长时间运行操作的组件,同样需要在 `AndroidManifest.xml` 中声明其所在的包名,示例如下: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <service android:name=".MyService" /> </application> </manifest> ``` ### 包的安装与管理 在 Android 系统中,APK(Android Package Kit)文件包含了应用的所有代码、资源和清单文件。`PackageInstaller` 负责 APK 的安装工作。在安装过程中,系统会解析 APK 文件中的 `AndroidManifest.xml` 文件,获取应用的包名、权限等信息 [^2][^3]。 ### 包信息的获取 可以通过 `PackageManager` 来获取应用包的相关信息,示例代码如下: ```java import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PackageManager packageManager = getPackageManager(); try { ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); String appName = packageManager.getApplicationLabel(applicationInfo).toString(); TextView textView = findViewById(R.id.textView); textView.setText("App Name: " + appName); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } } } ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值