我可以使用以下方法检索包名:
Context.getPackageName()
Run Code Online (Sandbox Code Playgroud)
要么
BuildConfig.APPLICATION_ID
Run Code Online (Sandbox Code Playgroud)
这两种方式有什么区别吗?在特定情况下,是否优先考虑另一个?假设他们总是给出相同的结果是否安全?
基本上哪一个更好?
AL.*_*AL. 24
从 Android Studio 3.5 开始,BuildConfig.APPLICATION_ID已弃用并替换为BuildConfig.LIBRARY_PACKAGE_NAME.
来自Android 谷歌源:
BuildConfig:弃用库中的 APPLICATION_ID。
它充其量具有误导性,因此将其标记为已弃用并由 LIBRARY_PACKAGE_NAME 替换。
BuildConfig由...提供Gradle.如果您没有使用构建,Gradle则无法使用访问包名称BuildConfig.
使用Context获得包名,如果没有语境或上下文为null可能并不适用于时间,这样的话你可以使用BuildConfig.APPLICATION_ID.
我会使用Context.getPackageName()因为结果是从操作系统提供的,而不是构建参数中的常量.
Context.getPackageName()将返回您在清单文件中设置为“package”的应用程序包名称:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxx"
...
Run Code Online (Sandbox Code Playgroud)
BuildConfig.APPLICATION_ID将返回BuildConfig您在 gradle 文件中设置的字段值作为“applicationId”:
defaultConfig {
applicationId "com.xxx"
Run Code Online (Sandbox Code Playgroud)
另请注意,BuildConfig.APPLICATION_ID已弃用并替换为BuildConfig.LIBRARY_PACKAGE_NAME
我之前使用过 getPackageName() - 但仅使用 BuildConfig.APPLICATION_ID ,因为它可用。应该更快,因为它只是一个变量,没有调用 - 但应该不重要。此外,在库中可能仍然需要使用 getPackageName()。
| 归档时间: |
|
| 查看次数: |
4534 次 |
| 最近记录: |