Android关于控制模块编译的几个问题

本文探讨了Android编译过程中遇到的三个问题:1)如何使应用编译后不显示在Launcher上;2)为什么在packagesapps下编译的应用不自动安装到system/app,以及解决方法;3)LOCAL_MODULE_TAGS的含义及其对编译的影响,如user, eng, tests, optional标签的作用。" 114061548,10543251,Java使用iText+FreeMarker+JFreeChart动态生成PDF,"['Java开发', 'PDF工具', '数据可视化', '图表生成', '模板引擎']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、某个应用可以编译,只是不在Launcher上显示Icon。

只需要修改该应用的AndroidManifest.xml文件。

修改如下:

    <activity
        android:name="com.example.noiconapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!-- 要想在桌面不显示图标,只需注释掉APP入口Activity中的下面这句即可,或者把下面的LAUNCHER改成DEFAULT也行 -->
            <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
        </intent-filter>
    </activity>

一般情况下,当我们的APK在被安装后,系统会自动创建我们的APK程序,系统Launcher(系统桌面应用程序)会自动检测系统已经安装的应用软件的包名,然后把这些APP的图标和名称解析出来后显示在应用程序列表里,一旦我们像上面那样设置不显示APK图标,则APK程序在运行后只会显示在“正在运行”的程序列表中,而不会在桌面上显示图标和名字。

2、将Android应用放在packages\apps\下面一起编译,单独进入应用mm编译,可以安装到out下面的system/app/下面,但是在根目录make却不会。

原因:

LOCAL_MODULE_TAGS := optional 的模块会被编译,但不会安装到image里面。

要想让optional的模块安装的话,需要将模块名加入到相关的product的PRODUCT_PACKAGES里面。

修改方法:

将应用对应的名称加入到PRODUCT_PACKAGES里面。

因此,你不想编译模块进image中,你就在对应product的PRODUCT_PACKAGES := 下的模块名删除就可以了。

一种更暴力更直接的方法:

将packages/apps下对应的该模块直接删除。

或者是,注释掉对应模块下的Android.mk里的内容。

3、LOCAL_MODULE_TAGS

LOCAL_MODULE_TAGS := user eng tests optional

user:指该模块只在user版本下才编译;

eng:指该模块只在eng版本下才编译;

tests:指该模块只在tests版本下才编译;

optional:指该模块在所有版本下都编译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值