
Android工程编译顺序是怎么样的?先编译哪个模块,后编译哪个模块由谁来决定的?
我现在遇到一个问题:1、Android工程未编译->将某个应用的源码放入/package/apps/目录下->make整个工程->一分钟左右编译停止->提示编译新应用的时...
我现在遇到一个问题:
1、Android工程未编译 -> 将某个应用的源码放入/package/apps/目录下 -> make整个工程 -> 一分钟左右编译停止 -> 提示编译新应用的时候失败。
2、将放入的应用剪切至工程外 -> make整个工程 -> 两三个小时后编译完成 -> 将那个应用再放回去 -> 进入应用目录下 -> 运行mm命令进行编译 -> 成功编译出apk!
我怀疑该应用依赖于某些模块(比如frameworks)的编译结果,假如能将该应用的编译动作安排到最后,使它最后编译,应该就没有这个问题。
关键是如何左右工程的编译顺序,求大神们帮忙,不胜感激!!!
问题找到原因了:该应用的Android.mk文件写法有问题,导致编译时不能在Android的编译树上生成合理的依赖,因此编译不过。
具体来说,Android在编译的时候,会寻找各个目录下的Android.mk,这些mk文件里会指明当前模块依赖于哪些模块,如果所依赖的那些模块没有编译出来,那么编译系统就会先去编译那些模块,一级级往下找,然后一级级往上返回。这个和递归是一个道理的。
假如一个应用程序里包含jni,当我们手动编译单个应用时,首先会进入jni目录,运行mm,生成jni.so后,再到外面来运行mm,生成apk。
但是,把该应用当成工程的一个模块编译,编译系统会首先执行jni外面的Android.mk,我碰到的这个问题就是外面的这个Android.mk写错了,没有严格的依赖关系,从而导致在全工程编译的时候出错。
虽然1096424240的回答与Android工程的编译顺序没关系,但是还是谢谢你的回答!:) 展开
1、Android工程未编译 -> 将某个应用的源码放入/package/apps/目录下 -> make整个工程 -> 一分钟左右编译停止 -> 提示编译新应用的时候失败。
2、将放入的应用剪切至工程外 -> make整个工程 -> 两三个小时后编译完成 -> 将那个应用再放回去 -> 进入应用目录下 -> 运行mm命令进行编译 -> 成功编译出apk!
我怀疑该应用依赖于某些模块(比如frameworks)的编译结果,假如能将该应用的编译动作安排到最后,使它最后编译,应该就没有这个问题。
关键是如何左右工程的编译顺序,求大神们帮忙,不胜感激!!!
问题找到原因了:该应用的Android.mk文件写法有问题,导致编译时不能在Android的编译树上生成合理的依赖,因此编译不过。
具体来说,Android在编译的时候,会寻找各个目录下的Android.mk,这些mk文件里会指明当前模块依赖于哪些模块,如果所依赖的那些模块没有编译出来,那么编译系统就会先去编译那些模块,一级级往下找,然后一级级往上返回。这个和递归是一个道理的。
假如一个应用程序里包含jni,当我们手动编译单个应用时,首先会进入jni目录,运行mm,生成jni.so后,再到外面来运行mm,生成apk。
但是,把该应用当成工程的一个模块编译,编译系统会首先执行jni外面的Android.mk,我碰到的这个问题就是外面的这个Android.mk写错了,没有严格的依赖关系,从而导致在全工程编译的时候出错。
虽然1096424240的回答与Android工程的编译顺序没关系,但是还是谢谢你的回答!:) 展开
1个回答
展开全部
在ActivityManifest.xml声明的Activity中,含有
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
是最先执行的,其它类就的顺序在这个主函数中先调用或跳转哪个就是哪个了
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
是最先执行的,其它类就的顺序在这个主函数中先调用或跳转哪个就是哪个了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询