Android.mk 中覆盖应用包名

项目场景:

一般来讲应用包名都是配置在 AndroidManifest.xml 中的,但遇到特殊情况,需要修改源码中应用包名

通常都会先去改 AndroidManifest.xml package 但改为后编译发现一顿错误,原因是 java 类中已经指定了 R 文件包名,

几百个都去替换那岂不是一堆文件需要 add,所以想找找有没有快捷方法,还真被我找到了。

解决方案:

通过配置 LOCAL_AAPT_FLAGS := rename-manifest-package "com.android.camera" 就可以

毕竟在 AS 中通过 gradle 配置 applicationId 就可以修改包名,想来 mk 中也是有的,不常用而已。

一开始发现 mk 中可以修改应用的版本号,那么猜测是不是也可以修改包名。

LOCAL_AAPT_FLAGS := --version-name "$(version_name_package)"
LOCAL_AAPT_FLAGS := --version-code "$(version_code_package)"

通过以上配置可以修改应用版本号,我就顺手配了个 LOCAL_AAPT_FLAGS := --package “com.android.camera”

编译小试一下,报错提示如下

aapt2 link [options] -o arg --manifest arg files…
Options:
-o arg Output path.
–manifest arg Path to the Android manifest to build.
-I arg Adds an Android APK to link against.
-A arg An assets directory to include in the APK. These are unprocessed.
-R arg Compilation unit to link, using overlay semantics.
The last conflicting resource given takes precedence.
–package-id arg Specify the package ID to use for this app. Must be greater or equal to
0x7f and can’t be used with --static-lib or --shared-lib.
–java arg Directory in which to generate R.java.
–proguard arg Output file for generated Proguard rules.
–proguard-main-dex arg Output file for generated Proguard rules for the main dex.
–proguard-conditional-keep-rules Generate conditional Proguard keep rules.
–proguard-minimal-keep-rules Generate a minimal set of Proguard keep rules.
–no-auto-version Disables automatic style and layout SDK versioning.
–no-version-vectors Disables automatic versioning of vector drawables. Use this only
when building with vector drawable support library.
–no-version-transitions Disables automatic versioning of transition resources. Use this only
when building with transition support library.
–no-resource-deduping Disables automatic deduping of resources with
identical values across compatible configurations.
–no-resource-removal Disables automatic removal of resources without
defaults. Use this only when building runtime resource overlay packages.
–enable-sparse-encoding This decreases APK size at the cost of resource retrieval performance.
-x Legacy flag that specifies to use the package identifier 0x01.
-z Require localization of strings marked ‘suggested’.
-c arg Comma separated list of configurations to include. The default
is all configurations.
–preferred-density arg Selects the closest matching density and strips out all others.
–product arg Comma separated list of product names to keep
–output-to-dir Outputs the APK contents to a directory specified by -o.
–no-xml-namespaces Removes XML namespace prefix and URI information
from AndroidManifest.xml and XML binaries in res/*.
–min-sdk-version arg Default minimum SDK version to use for AndroidManifest.xml.
–target-sdk-version arg Default target SDK version to use for AndroidManifest.xml.
–version-code arg Version code (integer) to inject into the AndroidManifest.xml if none is
present.
–version-code-major arg Version code major (integer) to inject into the AndroidManifest.xml if none is
present.
–version-name arg Version name to inject into the AndroidManifest.xml if none is present.
–revision-code arg Revision code (integer) to inject into the AndroidManifest.xml if none is
present.
–replace-version If --version-code, --version-name, and/or --revision-code are specified, these
values will replace any value already in the manifest. By
default, nothing is changed if the manifest already defines
these attributes.
–compile-sdk-version-code arg Version code (integer) to inject into the AndroidManifest.xml if none is
present.
–compile-sdk-version-name arg Version name to inject into the AndroidManifest.xml if none is present.
–shared-lib Generates a shared Android runtime library.
–static-lib Generate a static Android library.
–proto-format Generates compiled resources in Protobuf format.
Suitable as input to the bundle tool for generating an App Bundle.
–no-static-lib-packages Merge all library resources under the app’s package.
–non-final-ids Generates R.java without the final modifier. This is implied when
–static-lib is specified.
–no-proguard-location-reference Keep proguard rules files from having a reference to the source file
–stable-ids arg File containing a list of name to ID mapping.
–emit-ids arg Emit a file at the given path with a list of name to ID mappings,
suitable for use with --stable-ids.
–private-symbols arg Package name to use when generating R.java for private symbols.
If not specified, public and private symbols will use the application’s
package name.
–custom-package arg Custom Java package under which to generate R.java.
–extra-packages arg Generate the same R.java but with different package names.
–add-javadoc-annotation arg Adds a JavaDoc annotation to all generated Java classes.
–output-text-symbols arg Generates a text file containing the resource symbols of the R class in
the specified folder.
–allow-reserved-package-id Allows the use of a reserved package ID. This should on be used for
packages with a pre-O min-sdk

–auto-add-overlay Allows the addition of new resources in overlays without
tags.
–override-styles-instead-of-overlaying Causes styles defined in -R resources to replace previous definitions
instead of merging into them

–rename-manifest-package arg Renames the package in AndroidManifest.xml.
–rename-resources-package arg Renames the package in resources table
–rename-instrumentation-target-package arg Changes the name of the target package for instrumentation. Most useful
when used in conjunction with --rename-manifest-package.
–rename-overlay-target-package arg Changes the name of the target package for overlay. Most useful
when used in conjunction with --rename-manifest-package.
-0 arg File suffix not to compress.
–no-compress Do not compress any resources.
–keep-raw-values Preserve raw attribute values in xml files.
–no-compress-regex arg Do not compress extensions matching the regular expression. Remember to
use the ‘$’ symbol for end of line. Uses a case-sensitive ECMAScriptregular expression grammar.
–warn-manifest-validation Treat manifest validation errors as warnings.
–split arg Split resources matching a set of configs out to a Split APK.
Syntax: path/to/output.apk:[,[…]].
On Windows, use a semicolon ‘;’ separator instead.
–exclude-configs arg Excludes values of resources whose configs contain the specified qualifiers.
–debug-mode Inserts android:debuggable=“true” in to the application node of the
manifest, making the application debuggable even on production devices.
–strict-visibility Do not allow overlays with different visibility levels.
–exclude-sources Do not serialize source file information when generating resources in
Protobuf format.
–trace-folder arg Generate systrace json trace fragment to specified folder.
–merge-only Only merge the resources, without verifying resource references. This flag
should only be used together with the --static-lib flag.
-v Enables verbose logging.
-h Displays this help menu

可以看到完整的使用提示 ,在其中就可以找到 --rename-manifest-package arg Renames the package in AndroidManifest.xml.

参考文章

Android应用编译时自动生成版本号

猜你喜欢

转载自blog.csdn.net/u012932409/article/details/134032949