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
 
2. android:sharedUserId 
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"
 
3.android:sharedUserLabel
给userid定义了一个可读的标签,string 字符串内容必须使用字符串资源,不能使用原始的字符串。
 
4.android:targetSandboxVersion 
目标沙箱版本默认是1,可以设置成2,来增加应用程序的安全性。
以下功能可以使用2级沙箱:
<1>不允许共享Uid。
<2>网络安全配置中usesCleartextTraffic的默认值为false。
 
5.android:versionCode
app版本号只能使用int类型的数字,这个版本号是一个内部版本用户看不到,APP更新的时候会自动判断这个版本号。
 
6.android:versionName
显示给用户的版本号,可以是原始的字符串或者字符串资源。此属性只是显示给用户看,没有其他作用
 
7.android:installLocation
apk按照位置有以下几个选项:
"internalOnly":apk 只能安装在内部设备,如果没有设置installLocation属性,默认就是这个属性。
"auto":优先安装内部设备,如果内部存储器已满,那么系统将把它安装到外部存储器上
"preferExternal":应用程序更喜欢安装在外部存储(SD卡)。不能保证系统会接受这个请求。如果外部媒体不可用或已满,应用程序可能安装在内部存储上
 
posted @ 2019-06-23 22:24  zp007  阅读(626)  评论(0编辑  收藏  举报