Vin*_*tti 14 android android-manifest
我有一个问题,是否可以在AndroidManifest.xml中读取包名称
我的意思是
我有一个AndroidManifest.xml如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackagename"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0" >
....
</manifest>
Run Code Online (Sandbox Code Playgroud)
现在我必须添加一个权限(用于GCM)
<permission
android:name="MYPACKAGENAME.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)
是否可以在上述权限标记中动态地用com.mypackagename替换MYPACKAGENAME.
mik*_*iko 24
您可以删除名称的包名称部分:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackagename">
...
<permission
android:name=".permission.C2D_MESSAGE"
android:protectionLevel="signature" />
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
当您使用时启动您的权限名称.它自动以包名称为前缀.
您无法动态更改包名称,但您可以通过在build.gradle中定义applicationId然后使用$ {applicationId}在android清单中为名称添加前缀来执行某些操作.
在build.gradle中:
android {
compileSdkVersion 19
buildToolsVersion "19.0.2"
productFlavors {
development {
applicationId = "com.mypackage.development"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的AndroidManifest.xml中有:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackagename">
...
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到更多信息:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
稍后的方法将允许您并排运行您的应用程序的开发风格.我希望这有帮助.
您可以使用${applicationId}替换您的包名称,例如。
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)
此处尚未发布的替代方案是"${packageName}"。这很有用,例如,如果您正在开发具有特定包名称的库,但使用该库的应用程序将具有不同的包名称和/或应用程序 ID:"${packageName}"在库的清单中将扩展为库的包姓名。
CRU*_*DER -3
你的答案是否定的..
一旦发布应用程序,您就无法更改包名称。包名称定义了您的应用程序的身份,因此如果您更改它,则它会被视为不同的应用程序,并且以前版本的用户无法更新到新版本。
换句话说
Android 将不同包名的应用程序视为不同的应用程序
编辑:
是Context.getPackageName()你要找的吗