• 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应用编译时自动生成版本号

  • 相关阅读:
    MySQL 练习<1>
    IT入门知识大纲(0/10)
    【机器学习】:基于决策树与随机森林对数据分类
    Linxu Java环境配置Tomcat离线安装与启动
    2022年武汉市小微企业服务补贴券签约服务机构申报条件、材料和申报方式
    Redis主从复制/读写分离的配置
    Kubernetes Pod调度:从基础到高级实战技巧
    Scala Iterator(迭代器)
    mp4转gif在线转换,视频转换成gif动图怎么做?
    【python基础】生成式、装饰器、高阶函数
  • 原文地址:https://blog.csdn.net/u012932409/article/details/134032949