m,mm,mmm区别

Android源码目录下的build/envsetup.sh文件,描述编译的命令

  • m: Makes from the top of the tree.
  • mm: Builds all of the modules in the current directory.
  • mmm: Builds all of the modules in the supplied directories.

要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境

m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
mmm 命令只能编译有 Android.mk 文件的目录,比如修改了 android/frameworks/base/core/res/res/layout/ 目录下的布局文件,
而该路径中,base/ 目录和第一个 res/ 目录都包含 Android.mk 文件,这个时候,你只需要编译 res/ 目录,命令如下:
mmm frameworks/base/core/res/

note:
假如编译没问题在测试的时候遇到了崩溃,可能是从新编译的包,其他地方的一些资源引用不成功导致。还是上面的例子,如果你修改了
android/frameworks/base/core/res/res/layout/ 目录下的布局文件,编译完 res/ 目录后,还需要编译 base/ 目录,
然后两次编译生成的 jar 包和 apk 文件,都要推送,才能确保万无一失。

指令不可用错误:需要先source build/envsetup.sh ,然后lunch,才能使用,已经source过就不需要。
原因:初次进入 Ubuntu 系统,或者切换用户后,需要重新配置编译环境.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这道题的意思是求m+mm+mmm+mmmm+...+mmm...mmm(n个m)的和。 其中,mm表示m乘以10再加上m,mmm表示mm乘以10再加上m,以此类推,直到有n个m。 我们可以用一个循环来实现这个求和过程,每次循环都将上一次的结果乘以10再加上m,最后将所有结果相加即可。 具体实现可以参考以下代码: ``` m = int(input("请输入m:")) n = int(input("请输入n:")) result = 0 temp = m for i in range(n): result += temp temp = temp * 10 + m print("m+mm+mmm+mmmm+...+mmm...mmm(n个m)的和为:", result) ``` 希望能对你有所帮助! ### 回答2: 题目中要求求解一个形如:m + mm + mmm + mmmm + ... + mmmmmm(n个m)的和。我们可以通过数学公式来解决这个问题。 我们从最简单的情况开始考虑: 当n=1时,和为 m。 当n=2时,和为 m + mm = m + 10m = 11m。 当n=3时,和为 m + mm + mmm = m + 10m +100m = 111m。 可以发现,当n增加1时,每个加数都会增加10的幂次,而这个幂次恰好是n-1。 基于此,我们可以得到一个公式: m + mm + mmm + mmmm + ... + mmmmmm(n个m)= m(1 + 11 + 111 + 1111 + ... + 111...1(n个1)) 其中,第i项是由i个1组成的数,即: 111...1(i个1)(1 ≤ i ≤ n)。 现在,我们把它转化为一个等比数列求和。其中,首项为1,公比为10,项数为n。 所以,原式可以进一步转化为: m(1 + 11 + 111 + 1111 + ... + 111...1(n个1)) = m(10^n - 1)/9。 因此,我们可以得到最终的答案:m(10^n - 1)/9。 总之,题目中要求我们求解的和可以通过数学公式进行求解,这个公式是m(10^n - 1)/9。 ### 回答3: 首先,我们需要明确题目的意思,题目要求求出这样一组数的和:m + mm + mmm + mmmm + … + m(n个m)。其中,每一项的数字个数不同,而且每个数字都是m。例如,当m为3,n为4时,这组数的和为3 + 33 + 333 + 3333 = 3702。 接下来,我们需要考虑如何求解这组数的和。通常情况下,我们可以使用循环来计算每一项的值,最后将它们加起来。但是,这种方法很容易出错,并且在n很大时效率较低。 相比之下,数学方法可能更加高效。我们可以将每一项拆分成m加上一些后导0的数字,并将它们相加。例如,在上面的例子中,第二项可以拆分成30 + 3,第三项可以拆分成300 + 30 + 3,依此类推。 接下来,我们需要确定每个数字前面有多少个0。我们可以发现,第k项前面的0的个数是k-1个9。例如,在上面的例子中,第一项前面没有0,第二项前面有1个0,第三项前面有2个0,第四项前面有3个0。 现在,我们可以拆分出每个数字,并计算出它们的前导0的个数。然后,我们将它们相加即可得到答案。在代码中,我们可以使用一个循环来计算每个数字的值和前导0的个数,然后将它们相加即可。 以下是Python代码示例: ```python m, n = map(int, input().split()) result = 0 for k in range(1, n+1): # 计算第k项的值和前导0的个数 value = m * (10**(k-1) - 1) // 9 zeros = k - 1 # 将它们相加 result += value * (10**zeros) + m * (10**zeros) print(result) ``` 在这个例子中,我们首先从用户输入中读取m和n的值。然后,我们使用一个循环来计算每个数字的值和前导0的个数。最后,我们将它们相加即可得到答案。 需要注意的是,由于这个求和式的数字个数随着n的增大而指数级增长,因此当n较大时,计算结果可能会非常大,甚至超出计算机的表示范围。在这种情况下,我们可以使用一些高精度计算库来处理结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值