皮棉报告 "Hardcoded Package in Namespace"
Lint report "Hardcoded Package in Namespace"
今天当我想从我的项目中获得一个版本时,android工作室显示这个错误:
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
所以我打开 lint 的报告文件夹,看到这个错误:
<issue
id="ResAuto"
severity="Fatal"
message="In Gradle projects, always use `http://schemas.android.com/apk/res-auto` for custom attributes"
category="Correctness"
priority="9"
summary="Hardcoded Package in Namespace"
explanation="In Gradle projects, the actual package used in the final APK can vary; for example,you can add a `.debug` package suffix in one version and not the other. Therefore, you should **not** hardcode the application package in the resource; instead, use the special namespace `http://schemas.android.com/apk/res-auto` which will cause the tools to figure out the right namespace for the resource regardless of the actual package used during the build."
errorLine1=" xmlns:app="http://schemas.android.com/apk/res/ir.app.appname">">"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
quickfix="studio">
<location
file="C:\...\app\src\main\res\color\mybutton_backgroundcolor.xml"
line="3"
column="16"/>
</issue>
mybutton_backgroundcolor.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/ir.app.appname">
<item android:state_enabled="true" app:state_read ="false" android:color="@color/backgrpund_button_success"/>
<item android:state_enabled="false" app:state_read ="false" android:color="@color/gray_4"/>
<item app:state_read ="true" android:color="@color/gray_4"/>
</selector>
错误在此 xmlns:app="http://schemas.android.com/apk/res/ir.app.appname"> 行中。
有人可以帮我解决这个问题吗?!
更新:
在我将 com.android.support
库更新到版本 28
后出现此错误
app
命名空间应声明为 xmlns:app="http://schemas.android.com/apk/res-auto"
:
正如 Lint 所说:
In Gradle projects, the actual package used in the final APK can vary;
for you can add a .debug
package suffix in one version and not the
other. Therefore, you should not hardcode the application package in
the resource; instead, use the special namespace
http://schemas.android.com/apk/res-auto
which will cause the tools
to figure out the right namespace for the resource regardless of the
actual package used during the build.
今天当我想从我的项目中获得一个版本时,android工作室显示这个错误:
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
所以我打开 lint 的报告文件夹,看到这个错误:
<issue
id="ResAuto"
severity="Fatal"
message="In Gradle projects, always use `http://schemas.android.com/apk/res-auto` for custom attributes"
category="Correctness"
priority="9"
summary="Hardcoded Package in Namespace"
explanation="In Gradle projects, the actual package used in the final APK can vary; for example,you can add a `.debug` package suffix in one version and not the other. Therefore, you should **not** hardcode the application package in the resource; instead, use the special namespace `http://schemas.android.com/apk/res-auto` which will cause the tools to figure out the right namespace for the resource regardless of the actual package used during the build."
errorLine1=" xmlns:app="http://schemas.android.com/apk/res/ir.app.appname">">"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
quickfix="studio">
<location
file="C:\...\app\src\main\res\color\mybutton_backgroundcolor.xml"
line="3"
column="16"/>
</issue>
mybutton_backgroundcolor.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/ir.app.appname">
<item android:state_enabled="true" app:state_read ="false" android:color="@color/backgrpund_button_success"/>
<item android:state_enabled="false" app:state_read ="false" android:color="@color/gray_4"/>
<item app:state_read ="true" android:color="@color/gray_4"/>
</selector>
错误在此 xmlns:app="http://schemas.android.com/apk/res/ir.app.appname"> 行中。
有人可以帮我解决这个问题吗?!
更新:
在我将 com.android.support
库更新到版本 28
app
命名空间应声明为 xmlns:app="http://schemas.android.com/apk/res-auto"
:
正如 Lint 所说:
In Gradle projects, the actual package used in the final APK can vary; for you can add a
.debug
package suffix in one version and not the other. Therefore, you should not hardcode the application package in the resource; instead, use the special namespacehttp://schemas.android.com/apk/res-auto
which will cause the tools to figure out the right namespace for the resource regardless of the actual package used during the build.