android 基础一 <manifest 标签内部属性>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .
</manifest>
1.package
应用程序ID,这个ID必须是惟一的,用来区分不同的APK。
build.gradle文件中的applicationId属性值会覆盖package名称,来作为设备的唯一ID。
如果:
package 为:com.aa.bb
applicationId 为:mm.nn
那么编译之后生产的AndroidManifest.xml文件,package 将自动改成:mm.nn
备注:编译之后的AndroidManifest.xml文件路径:build\intermediates\manifests\full\debug
应用程序ID,这个ID必须是惟一的,用来区分不同的APK。
build.gradle文件中的applicationId属性值会覆盖package名称,来作为设备的唯一ID。
如果:
package 为:com.aa.bb
applicationId 为:mm.nn
那么编译之后生产的AndroidManifest.xml文件,package 将自动改成:mm.nn
备注:编译之后的AndroidManifest.xml文件路径:build\intermediates\manifests\full\debug
2. android:sharedUserId
manifest中的userid就是对应一个分配的Linux用户ID,如果不同的APK使用相同的userid 那么他们就可以同享数据。
那么怎么获取相同userid的其他apk数据呢?
第一步:获取其他apk的Context对象,通过Context对象获取数据
Context ctx = this.createPackageContext("apk包名", Context.CONTEXT_IGNORE_SECURITY);
manifest中的userid就是对应一个分配的Linux用户ID,如果不同的APK使用相同的userid 那么他们就可以同享数据。
那么怎么获取相同userid的其他apk数据呢?
第一步:获取其他apk的Context对象,通过Context对象获取数据
Context ctx = this.createPackageContext("apk包名", Context.CONTEXT_IGNORE_SECURITY);
系统APK的统一userid:
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.system"
3.android:sharedUserLabel
给userid定义了一个可读的标签,string 字符串内容必须使用字符串资源,不能使用原始的字符串。
给userid定义了一个可读的标签,string 字符串内容必须使用字符串资源,不能使用原始的字符串。
4.android:targetSandboxVersion
目标沙箱版本默认是1,可以设置成2,来增加应用程序的安全性。
以下功能可以使用2级沙箱:
<1>不允许共享Uid。
<2>网络安全配置中usesCleartextTraffic的默认值为false。
目标沙箱版本默认是1,可以设置成2,来增加应用程序的安全性。
以下功能可以使用2级沙箱:
<1>不允许共享Uid。
<2>网络安全配置中usesCleartextTraffic的默认值为false。
5.android:versionCode
app版本号只能使用int类型的数字,这个版本号是一个内部版本用户看不到,APP更新的时候会自动判断这个版本号。
app版本号只能使用int类型的数字,这个版本号是一个内部版本用户看不到,APP更新的时候会自动判断这个版本号。
6.android:versionName
显示给用户的版本号,可以是原始的字符串或者字符串资源。此属性只是显示给用户看,没有其他作用
显示给用户的版本号,可以是原始的字符串或者字符串资源。此属性只是显示给用户看,没有其他作用
7.android:installLocation
apk按照位置有以下几个选项:
"internalOnly":apk 只能安装在内部设备,如果没有设置installLocation属性,默认就是这个属性。
"auto":优先安装内部设备,如果内部存储器已满,那么系统将把它安装到外部存储器上
"preferExternal":应用程序更喜欢安装在外部存储(SD卡)。不能保证系统会接受这个请求。如果外部媒体不可用或已满,应用程序可能安装在内部存储上
apk按照位置有以下几个选项:
"internalOnly":apk 只能安装在内部设备,如果没有设置installLocation属性,默认就是这个属性。
"auto":优先安装内部设备,如果内部存储器已满,那么系统将把它安装到外部存储器上
"preferExternal":应用程序更喜欢安装在外部存储(SD卡)。不能保证系统会接受这个请求。如果外部媒体不可用或已满,应用程序可能安装在内部存储上