当前位置:   article > 正文

Android 的manifest解析,超强Android进阶路线知识图谱

Android 的manifest解析,超强Android进阶路线知识图谱
  1. * {@link PackageManager#GET_INSTRUMENTATION} was set.

  2. */

  3. public InstrumentationInfo[] instrumentation;

  4. /**

  5. Array of all {@link android.R.styleable#AndroidManifestPermission

  6. * } tags included under ,

  7. * or null if there were none.  This is only filled in if the flag

  8. * {@link PackageManager#GET_PERMISSIONS} was set.

  9. */

  10. public PermissionInfo[] permissions;

  11. /**

  12. * Array of all {@link android.R.styleable#AndroidManifestUsesPermission

  13. * } tags included under ,

  14. * or null if there were none.  This is only filled in if the flag

  15. * {@link PackageManager#GET_PERMISSIONS} was set.  This list includes

  16. * all permissions requested, even those that were not granted or known

  17. * by the system at install time.

  18. */

  19. public String[] requestedPermissions;

  20. /**

  21. * Array of flags of all {@link android.R.styleable#AndroidManifestUsesPermission

  22. * } tags included under ,

  23. * or null if there were none.  This is only filled in if the flag

  24. * {@link PackageManager#GET_PERMISSIONS} was set.  Each value matches

  25. * the corresponding entry in {@link #requestedPermissions}, and will have

  26. * the flags {@link #REQUESTED_PERMISSION_REQUIRED} and

  27. * {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate.

  28. */

  29. public int[] requestedPermissionsFlags;

  30. /**

  31. * Flag for {@link #requestedPermissionsFlags}: the requested permission

  32. * is required for the application to run; the user can not optionally

  33. * disable it.  Currently all permissions are required.

  34. */

  35. public static final int REQUESTED_PERMISSION_REQUIRED = 1<<0;

  36. /**

  37. * Flag for {@link #requestedPermissionsFlags}: the requested permission

  38. * is currently granted to the application.

  39. */

  40. public static final int REQUESTED_PERMISSION_GRANTED = 1<<1;

  41. /**

  42. * Array of all signatures read from the package file.  This is only filled

  43. * in if the flag {@link PackageManager#GET_SIGNATURES} was set.

  44. */

  45. public Signature[] signatures;

  46. /**

  47. * Application specified preferred configuration

  48. * {@link android.R.styleable#AndroidManifestUsesConfiguration

  49. * } tags included under ,

  50. * or null if there were none. This is only filled in if the flag

  51. * {@link PackageManager#GET_CONFIGURATIONS} was set.

  52. */

  53. public ConfigurationInfo[] configPreferences;

  54. /**

  55. * The features that this application has said it requires.

  56. */

  57. public FeatureInfo[] reqFeatures;

  58. /**

  59. * Constant corresponding to auto in

  60. * the {@link android.R.attr#installLocation} attribute.

  61. * @hide

  62. */

  63. public static final int INSTALL_LOCATION_UNSPECIFIED = -1;

  64. /**

  65. * Constant corresponding to auto in

  66. * the {@link android.R.attr#installLocation} attribute.

  67. * @hide

  68. */

  69. public static final int INSTALL_LOCATION_AUTO = 0;

  70. /**

  71. * Constant corresponding to internalOnly in

  72. * the {@link android.R.attr#installLocation} attribute.

  73. * @hide

  74. */

  75. public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1;

  76. /**

  77. * Constant corresponding to preferExternal in

  78. * the {@link android.R.attr#installLocation} attribute.

  79. * @hide

  80. */

  81. public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2;

  82. /**

  83. * The install location requested by the activity.  From the

  84. * {@link android.R.attr#installLocation} attribute, one of

  85. * {@link #INSTALL_LOCATION_AUTO},

  86. * {@link #INSTALL_LOCATION_INTERNAL_ONLY},

  87. * {@link #INSTALL_LOCATION_PREFER_EXTERNAL}

  88. * @hide

  89. */

  90. public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY;

  91. public PackageInfo() {

  92. }

  93. public String toString() {

  94. return “PackageInfo{”

  95. + Integer.toHexString(System.identityHashCode(this))

  96. + " " + packageName + “}”;

  97. }

  98. public int describeContents() {

  99. return 0;

  100. }

  101. public void writeToParcel(Parcel dest, int parcelableFlags) {

  102. dest.writeString(packageName);

  103. dest.writeInt(versionCode);

  104. dest.writeString(versionName);

  105. dest.writeString(sharedUserId);

  106. dest.writeInt(sharedUserLabel);

  107. if (applicationInfo != null) {

  108. dest.writeInt(1);

  109. applicationInfo.writeToParcel(dest, parcelableFlags);

  110. } else {

  111. dest.writeInt(0);

  112. }

  113. dest.writeLong(firstInstallTime);

  114. dest.writeLong(lastUpdateTime);

  115. dest.writeIntArray(gids);

  116. dest.writeTypedArray(activities, parcelableFlags);

  117. dest.writeTypedArray(receivers, parcelableFlags);

  118. dest.writeTypedArray(services, parcelableFlags);

  119. dest.writeTypedArray(providers, parcelableFlags);

  120. dest.writeTypedArray(instrumentation, parcelableFlags);

  121. dest.writeTypedArray(permissions, parcelableFlags);

  122. dest.writeStringArray(requestedPermissions);

  123. dest.writeIntArray(requestedPermissionsFlags);

  124. dest.writeTypedArray(signatures, parcelableFlags);

  125. dest.writeTypedArray(configPreferences, parcelableFlags);

  126. dest.writeTypedArray(reqFeatures, parcelableFlags);

  127. dest.writeInt(installLocation);

  128. }

  129. public static final Parcelable.Creator CREATOR

  130. = new Parcelable.Creator() {

  131. public PackageInfo createFromParcel(Parcel source) {

  132. return new PackageInfo(source);

  133. }

  134. public PackageInfo[] newArray(int size) {

  135. return new PackageInfo[size];

  136. }

  137. };

  138. private PackageInfo(Parcel source) {

  139. <span style=“color:#3333ff;”> packageName = source.readString();

  140. versionCode = source.readInt();

  141. versionName = source.readString();

  142. sharedUserId = source.readString();

  143. sharedUserLabel = source.readInt();

  144. int hasApp = source.readInt();

  145. if (hasApp != 0) {

  146. applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source);

  147. }

  148. <span style=“color:#333399;”>firstInstallTime = source.readLong();

  149. lastUpdateTime = source.readLong();

  150. gids = source.createIntArray();

  151. activities = source.createTypedArray(ActivityInfo.CREATOR);

  152. receivers = source.createTypedArray(ActivityInfo.CREATOR);

  153. services = source.createTypedArray(ServiceInfo.CREATOR);

  154. providers = source.createTypedArray(ProviderInfo.CREATOR);

  155. instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR);

  156. permissions = source.createTypedArray(PermissionInfo.CREATOR);

  157. requestedPermissions = source.createStringArray();

  158. requestedPermissionsFlags = source.createIntArray();

  159. signatures = source.createTypedArray(Signature.CREATOR);

  160. configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);

  161. reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);

  162. installLocation = source.readInt();

  163. }

  164. }

ApplicationInfo.java源码:

[java]  view plain copy 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. /*

  2. * Copyright © 2007 The Android Open Source Project

  3. *

  4. * Licensed under the Apache License, Version 2.0 (the “License”);

  5. * you may not use this file except in compliance with the License.

  6. * You may obtain a copy of the License at

  7. *

  8. *      http://www.apache.org/licenses/LICENSE-2.0

  9. *

  10. * Unless required by applicable law or agreed to in writing, software

  11. * distributed under the License is distributed on an “AS IS” BASIS,

  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  13. * See the License for the specific language governing permissions and

  14. * limitations under the License.

  15. */

  16. package android.content.pm;

  17. import android.content.pm.PackageManager.NameNotFoundException;

  18. import android.content.res.Resources;

  19. import android.graphics.drawable.Drawable;

  20. import android.os.Parcel;

  21. import android.os.Parcelable;

  22. import android.util.Printer;

  23. import java.text.Collator;

  24. import java.util.Comparator;

  25. /**

  26. * Information you can retrieve about a particular application.  This

  27. * corresponds to information collected from the AndroidManifest.xml’s

  28. *  tag.

  29. */

  30. public class ApplicationInfo extends PackageItemInfo implements Parcelable {

  31. /**

  32. * Default task affinity of all activities in this application. See

  33. * {@link ActivityInfo#taskAffinity} for more information.  This comes

  34. * from the “taskAffinity” attribute.

  35. */

  36. public String taskAffinity;

  37. /**

  38. * Optional name of a permission required to be able to access this

  39. * application’s components.  From the “permission” attribute.

  40. */

  41. public String permission;

  42. /**

  43. * The name of the process this application should run in.  From the

  44. * “process” attribute or, if not set, the same as

  45. packageName.

  46. */

  47. public String processName;

  48. /**

  49. * Class implementing the Application object.  From the “class”

  50. * attribute.

  51. */

  52. public String className;

  53. /**

  54. * A style resource identifier (in the package’s resources) of the

  55. * description of an application.  From the “description” attribute

  56. * or, if not set, 0.

  57. */

  58. public int descriptionRes;

  59. /**

  60. * A style resource identifier (in the package’s resources) of the

  61. * default visual theme of the application.  From the “theme” attribute

  62. * or, if not set, 0.

  63. */

  64. public int theme;

  65. /**

  66. * Class implementing the Application’s manage space

  67. * functionality.  From the “manageSpaceActivity”

  68. * attribute. This is an optional attribute and will be null if

  69. * applications don’t specify it in their manifest

  70. */

  71. public String manageSpaceActivityName;

  72. /**

  73. * Class implementing the Application’s backup functionality.  From

  74. * the “backupAgent” attribute.  This is an optional attribute and

  75. * will be null if the application does not specify it in its manifest.

  76. *

  77. If android:allowBackup is set to false, this attribute is ignored.

  78. */

  79. public String backupAgentName;

  80. /**

  81. * The default extra UI options for activities in this application.

  82. * Set from the {@link android.R.attr#uiOptions} attribute in the

  83. * activity’s manifest.

  84. */

  85. public int uiOptions = 0;

  86. /**

  87. * Value for {@link #flags}: if set, this application is installed in the

  88. * device’s system image.

  89. */

  90. public static final int FLAG_SYSTEM = 1<<0;

  91. /**

  92. * Value for {@link #flags}: set to true if this application would like to

  93. * allow debugging of its

  94. * code, even when installed on a non-development system.  Comes

  95. * from {@link android.R.styleable#AndroidManifestApplication_debuggable

  96. * android:debuggable} of the  tag.

  97. */

  98. public static final int FLAG_DEBUGGABLE = 1<<1;

  99. /**

  100. * Value for {@link #flags}: set to true if this application has code

  101. * associated with it.  Comes

  102. * from {@link android.R.styleable#AndroidManifestApplication_hasCode

  103. * android:hasCode} of the  tag.

  104. */

  105. public static final int FLAG_HAS_CODE = 1<<2;

  106. /**

  107. * Value for {@link #flags}: set to true if this application is persistent.

  108. * Comes from {@link android.R.styleable#AndroidManifestApplication_persistent

  109. * android:persistent} of the  tag.

  110. */

  111. public static final int FLAG_PERSISTENT = 1<<3;

  112. /**

  113. * Value for {@link #flags}: set to true if this application holds the

  114. * {@link android.Manifest.permission#FACTORY_TEST} permission and the

  115. * device is running in factory test mode.

  116. */

  117. public static final int FLAG_FACTORY_TEST = 1<<4;

  118. /**

  119. * Value for {@link #flags}: default value for the corresponding ActivityInfo flag.

  120. * Comes from {@link android.R.styleable#AndroidManifestApplication_allowTaskReparenting

  121. * android:allowTaskReparenting} of the  tag.

  122. */

  123. public static final int FLAG_ALLOW_TASK_REPARENTING = 1<<5;

  124. /**

  125. * Value for {@link #flags}: default value for the corresponding ActivityInfo flag.

  126. * Comes from {@link android.R.styleable#AndroidManifestApplication_allowClearUserData

  127. * android:allowClearUserData} of the  tag.

  128. */

  129. public static final int FLAG_ALLOW_CLEAR_USER_DATA = 1<<6;

  130. /**

  131. * Value for {@link #flags}: this is set if this application has been

  132. * install as an update to a built-in system application.

  133. */

  134. public static final int FLAG_UPDATED_SYSTEM_APP = 1<<7;

  135. /**

  136. * Value for {@link #flags}: this is set of the application has specified

  137. * {@link android.R.styleable#AndroidManifestApplication_testOnly

  138. * android:testOnly} to be true.

  139. */

  140. public static final int FLAG_TEST_ONLY = 1<<8;

  141. /**

  142. * Value for {@link #flags}: true when the application’s window can be

  143. * reduced in size for smaller screens.  Corresponds to

  144. * {@link android.R.styleable#AndroidManifestSupportsScreens_smallScreens

  145. * android:smallScreens}.

  146. */

  147. public static final int FLAG_SUPPORTS_SMALL_SCREENS = 1<<9;

  148. /**

  149. * Value for {@link #flags}: true when the application’s window can be

  150. * displayed on normal screens.  Corresponds to

  151. * {@link android.R.styleable#AndroidManifestSupportsScreens_normalScreens

  152. * android:normalScreens}.

  153. */

  154. public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1<<10;

  155. /**

  156. * Value for {@link #flags}: true when the application’s window can be

  157. * increased in size for larger screens.  Corresponds to

  158. * {@link android.R.styleable#AndroidManifestSupportsScreens_largeScreens

  159. * android:largeScreens}.

  160. */

  161. public static final int FLAG_SUPPORTS_LARGE_SCREENS = 1<<11;

  162. /**

  163. * Value for {@link #flags}: true when the application knows how to adjust

  164. * its UI for different screen sizes.  Corresponds to

  165. * {@link android.R.styleable#AndroidManifestSupportsScreens_resizeable

  166. * android:resizeable}.

  167. */

  168. public static final int FLAG_RESIZEABLE_FOR_SCREENS = 1<<12;

  169. /**

  170. * Value for {@link #flags}: true when the application knows how to

  171. * accomodate different screen densities.  Corresponds to

  172. * {@link android.R.styleable#AndroidManifestSupportsScreens_anyDensity

  173. * android:anyDensity}.

  174. */

  175. public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 1<<13;

  176. /**

  177. * Value for {@link #flags}: set to true if this application would like to

  178. * request the VM to operate under the safe mode. Comes from

  179. * {@link android.R.styleable#AndroidManifestApplication_vmSafeMode

  180. * android:vmSafeMode} of the  tag.

  181. */

  182. public static final int FLAG_VM_SAFE_MODE = 1<<14;

  183. /**

  184. * Value for {@link #flags}: set to false if the application does not wish

  185. * to permit any OS-driven backups of its data; true otherwise.

  186. *

  187. Comes from the

  188. * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}

  189. * attribute of the  tag.

  190. */

  191. public static final int FLAG_ALLOW_BACKUP = 1<<15;

  192. /**

  193. * Value for {@link #flags}: set to false if the application must be kept

  194. * in memory following a full-system restore operation; true otherwise.

  195. * Ordinarily, during a full system restore operation each application is shut down

  196. * following execution of its agent’s onRestore() method.  Setting this attribute to

  197. false prevents this.  Most applications will not need to set this attribute.

  198. *

  199. If

  200. * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}

  201. * is set to false or no

  202. * {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent}

  203. * is specified, this flag will be ignored.

  204. *

  205. Comes from the

  206. * {@link android.R.styleable#AndroidManifestApplication_killAfterRestore android:killAfterRestore}

  207. * attribute of the  tag.

  208. */

  209. public static final int FLAG_KILL_AFTER_RESTORE = 1<<16;

  210. /**

  211. * Value for {@link #flags}: Set to true if the application’s backup

  212. * agent claims to be able to handle restore data even “from the future,”

  213. * i.e. from versions of the application with a versionCode greater than

  214. * the one currently installed on the device.  Use with caution!  By default

  215. * this attribute is false and the Backup Manager will ensure that data

  216. * from “future” versions of the application are never supplied during a restore operation.

  217. *

  218. If

  219. * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}

  220. * is set to false or no

  221. * {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent}

  222. * is specified, this flag will be ignored.

  223. *

  224. Comes from the

  225. * {@link android.R.styleable#AndroidManifestApplication_restoreAnyVersion android:restoreAnyVersion}

  226. * attribute of the  tag.

  227. */

  228. public static final int FLAG_RESTORE_ANY_VERSION = 1<<17;

  229. /**

  230. * Value for {@link #flags}: Set to true if the application is

  231. * currently installed on external/removable/unprotected storage.  Such

  232. * applications may not be available if their storage is not currently

  233. * mounted.  When the storage it is on is not available, it will look like

  234. * the application has been uninstalled (its .apk is no longer available)

  235. * but its persistent data is not removed.

  236. */

  237. public static final int FLAG_EXTERNAL_STORAGE = 1<<18;

  238. /**

  239. * Value for {@link #flags}: true when the application’s window can be

  240. * increased in size for extra large screens.  Corresponds to

  241. * {@link android.R.styleable#AndroidManifestSupportsScreens_xlargeScreens

  242. * android:xlargeScreens}.

  243. */

  244. public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 1<<19;

  245. /**

  246. * Value for {@link #flags}: true when the application has requested a

  247. * large heap for its processes.  Corresponds to

  248. * {@link android.R.styleable#AndroidManifestApplication_largeHeap

  249. * android:largeHeap}.

  250. */

  251. public static final int FLAG_LARGE_HEAP = 1<<20;

  252. /**

  253. * Value for {@link #flags}: true if this application’s package is in

  254. * the stopped state.

  255. */

  256. public static final int FLAG_STOPPED = 1<<21;

  257. /**

  258. * Value for {@link #flags}: true  when the application is willing to support

  259. * RTL (right to left). All activities will inherit this value.

  260. *

  261. * Set from the {@link android.R.attr#supportsRtl} attribute in the

  262. * activity’s manifest.

  263. *

  264. * Default value is false (no support for RTL).

  265. */

  266. public static final int FLAG_SUPPORTS_RTL = 1<<22;

  267. /**

  268. * Value for {@link #flags}: true if the application is currently

  269. * installed for the calling user.

  270. */

  271. public static final int FLAG_INSTALLED = 1<<23;

  272. /**

  273. * Value for {@link #flags}: true if the application only has its

  274. * data installed; the application package itself does not currently

  275. * exist on the device.

  276. */

  277. public static final int FLAG_IS_DATA_ONLY = 1<<24;

  278. /**

  279. * Value for {@link #flags}: Set to true if the application has been

  280. * installed using the forward lock option.

  281. *

  282. * NOTE: DO NOT CHANGE THIS VALUE!  It is saved in packages.xml.

  283. *

  284. * {@hide}

  285. */

  286. public static final int FLAG_FORWARD_LOCK = 1<<29;

  287. /**

  288. * Value for {@link #flags}: set to true if the application

  289. * has reported that it is heavy-weight, and thus can not participate in

  290. * the normal application lifecycle.

  291. *

  292. Comes from the

  293. * {@link android.R.styleable#AndroidManifestApplication_cantSaveState android:cantSaveState}

  294. * attribute of the  tag.

  295. *

  296. * {@hide}

  297. */

  298. public static final int FLAG_CANT_SAVE_STATE = 1<<28;

  299. /**

  300. * Flags associated with the application.  Any combination of

  301. * {@link #FLAG_SYSTEM}, {@link #FLAG_DEBUGGABLE}, {@link #FLAG_HAS_CODE},

  302. * {@link #FLAG_PERSISTENT}, {@link #FLAG_FACTORY_TEST}, and

  303. * {@link #FLAG_ALLOW_TASK_REPARENTING}

  304. * {@link #FLAG_ALLOW_CLEAR_USER_DATA}, {@link #FLAG_UPDATED_SYSTEM_APP},

  305. * {@link #FLAG_TEST_ONLY}, {@link #FLAG_SUPPORTS_SMALL_SCREENS},

  306. * {@link #FLAG_SUPPORTS_NORMAL_SCREENS},

  307. * {@link #FLAG_SUPPORTS_LARGE_SCREENS}, {@link #FLAG_SUPPORTS_XLARGE_SCREENS},

  308. * {@link #FLAG_RESIZEABLE_FOR_SCREENS},

  309. * {@link #FLAG_SUPPORTS_SCREEN_DENSITIES}, {@link #FLAG_VM_SAFE_MODE},

  310. * {@link #FLAG_INSTALLED}.

  311. */

  312. public int flags = 0;

  313. /**

  314. * The required smallest screen width the application can run on.  If 0,

  315. * nothing has been specified.  Comes from

  316. * {@link android.R.styleable#AndroidManifestSupportsScreens_requiresSmallestWidthDp

  317. * android:requiresSmallestWidthDp} attribute of the  tag.

  318. */

  319. public int requiresSmallestWidthDp = 0;

  320. /**

  321. * The maximum smallest screen width the application is designed for.  If 0,

  322. * nothing has been specified.  Comes from

  323. * {@link android.R.styleable#AndroidManifestSupportsScreens_compatibleWidthLimitDp

  324. * android:compatibleWidthLimitDp} attribute of the  tag.

  325. */

  326. public int compatibleWidthLimitDp = 0;

  327. /**

  328. * The maximum smallest screen width the application will work on.  If 0,

  329. * nothing has been specified.  Comes from

  330. * {@link android.R.styleable#AndroidManifestSupportsScreens_largestWidthLimitDp

  331. * android:largestWidthLimitDp} attribute of the  tag.

  332. */

  333. public int largestWidthLimitDp = 0;

  334. /**

  335. * Full path to the location of this package.

  336. */

  337. public String sourceDir;

  338. /**

  339. * Full path to the location of the publicly available parts of this

  340. * package (i.e. the primary resource package and manifest).  For

  341. * non-forward-locked apps this will be the same as {@link #sourceDir).

  342. */

  343. public String publicSourceDir;

  344. /**

  345. * Full paths to the locations of extra resource packages this application

  346. * uses. This field is only used if there are extra resource packages,

  347. * otherwise it is null.

  348. *

  349. * {@hide}

  350. */

  351. public String[] resourceDirs;

  352. /**

  353. * Paths to all shared libraries this application is linked against.  This

  354. * field is only set if the {@link PackageManager#GET_SHARED_LIBRARY_FILES

  355. * PackageManager.GET_SHARED_LIBRARY_FILES} flag was used when retrieving

  356. * the structure.

  357. */

  358. public String[] sharedLibraryFiles;

  359. /**

  360. * Full path to a directory assigned to the package for its persistent

  361. * data.

  362. */

  363. public String dataDir;

  364. /**

  365. * Full path to the directory where native JNI libraries are stored.

  366. */

  367. public String nativeLibraryDir;

  368. /**

  369. * The kernel user-ID that has been assigned to this application;

  370. * currently this is not a unique ID (multiple applications can have

  371. * the same uid).

  372. */

  373. public int uid;

  374. /**

  375. * The minimum SDK version this application targets.  It may run on earlier

  376. * versions, but it knows how to work with any new behavior added at this

  377. * version.  Will be {@link android.os.Build.VERSION_CODES#CUR_DEVELOPMENT}

  378. * if this is a development build and the app is targeting that.  You should

  379. * compare that this number is >= the SDK version number at which your

  380. * behavior was introduced.

  381. */

  382. public int targetSdkVersion;

  383. /**

  384. * When false, indicates that all components within this application are

  385. * considered disabled, regardless of their individually set enabled status.

  386. */

  387. public boolean enabled = true;

  388. /**

  389. * For convenient access to the current enabled setting of this app.

  390. * @hide

  391. */

  392. public int enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;

  393. /**

  394. * For convenient access to package’s install location.

  395. * @hide

  396. */

  397. public int installLocation = PackageInfo.INSTALL_LOCATION_UNSPECIFIED;

  398. public void dump(Printer pw, String prefix) {

  399. super.dumpFront(pw, prefix);

  400. if (className != null) {

  401. pw.println(prefix + “className=” + className);

  402. }

  403. if (permission != null) {

  404. pw.println(prefix + “permission=” + permission);

  405. }

  406. pw.println(prefix + “processName=” + processName);

  407. pw.println(prefix + “taskAffinity=” + taskAffinity);

  408. pw.println(prefix + “uid=” + uid + " flags=0x" + Integer.toHexString(flags)

  409. + " theme=0x" + Integer.toHexString(theme));

  410. pw.println(prefix + “requiresSmallestWidthDp=” + requiresSmallestWidthDp

  411. + " compatibleWidthLimitDp=" + compatibleWidthLimitDp

  412. + " largestWidthLimitDp=" + largestWidthLimitDp);

  413. pw.println(prefix + “sourceDir=” + sourceDir);

  414. if (sourceDir == null) {

  415. if (publicSourceDir != null) {

  416. pw.println(prefix + “publicSourceDir=” + publicSourceDir);

  417. }

  418. } else if (!sourceDir.equals(publicSourceDir)) {

  419. pw.println(prefix + “publicSourceDir=” + publicSourceDir);

  420. }

  421. if (resourceDirs != null) {

  422. pw.println(prefix + “resourceDirs=” + resourceDirs);

  423. }

  424. pw.println(prefix + “dataDir=” + dataDir);

  425. if (sharedLibraryFiles != null) {

  426. pw.println(prefix + “sharedLibraryFiles=” + sharedLibraryFiles);

  427. }

  428. pw.println(prefix + “enabled=” + enabled + " targetSdkVersion=" + targetSdkVersion);

  429. if (manageSpaceActivityName != null) {

  430. pw.println(prefix + “manageSpaceActivityName=”+manageSpaceActivityName);

  431. }

  432. if (descriptionRes != 0) {

  433. pw.println(prefix + “description=0x”+Integer.toHexString(descriptionRes));

  434. }

  435. if (uiOptions != 0) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。

kVersion=" + targetSdkVersion);

  1. if (manageSpaceActivityName != null) {

  2. pw.println(prefix + “manageSpaceActivityName=”+manageSpaceActivityName);

  3. }

  4. if (descriptionRes != 0) {

  5. pw.println(prefix + “description=0x”+Integer.toHexString(descriptionRes));

  6. }

  7. if (uiOptions != 0) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-NJNQOJfl-1711730542297)]
[外链图片转存中…(img-iOQF5jNi-1711730542298)]
[外链图片转存中…(img-3hIDJKuZ-1711730542298)]
[外链图片转存中…(img-hzxq5IoP-1711730542298)]
[外链图片转存中…(img-iQlqe03M-1711730542299)]
[外链图片转存中…(img-2MC2EzA4-1711730542299)]
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-FTs2taTv-1711730542299)]

最后

由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/657870
推荐阅读
相关标签
  

闽ICP备14008679号