Android源码环境下应用程序开发

    在阅读Android源码过程中,有一些逻辑不是很清楚,但是调试源码又太费劲,这时,可以通过编写测试性的应用程序来验证自己的猜想,再钻入源码的海洋可能更有针对性。这里就记录一下如何在Android源码环境下进行应用程序的开发。

     在Android源码根目录下的package子目录可以发现有一个experimental文件夹,我们先看看它的README文件内容:

     

        可以看到,这个目录下是各个测试的应用软件包(package),主要用于测试、开发验证或者娱乐性的目的,而正式发布的app应放在development/samples/目录下。我们的测试APP就放在package/experimental目录下吧,文件也说到,每个包都应包含READMD文件,用于说明这个应用程序的目的,也方便了他人阅读源码时理解其作用。

       首先我们就创建一个包文件夹吧:

       

        按照该目录下其他包的结构,新建如下几个文件:

       

        在src目录下创建一个包cn.linjk.jim,然后新建一个主页面控制器MainActivity.java:

        cd src && mkdir -p cn/linjk/jim && vim cn/linjk/jim/MainActivity.java

       

        新建页面文件main.xml:

        cd ../res && mkdir layout && vim layout/main.xml

       

        新建一个字符串资源文件strings.xml:

        cd ../res && mkdir values && vim values/strings.xml

       

        然后在res目录下创建子目录drawable,里面放一张png图片作为应用程序的图片,也可不放,这就会使用Android默认的应用程序图标。

        接着到了最后关键一步,清单文件AndroidManifast.xml,它配置了Android应用程序的包名和所有组件、服务等:

       

        应用程序开发完了,还需要编写编译规则,这样才可以生成应用程序,这里不是生成APK包,而是把应用程序打包到Android系统镜像里面,这里和通常的Android应用程序开发不一样。编辑Android,mk:

       

        现在可以编译打包Android系统镜像文件system.img了。为了不用再次在源码根目录执行make等待漫长时间,可以单独打包应用程序和生成系统镜像文件system.img而userdata.img和ramdisk.img可以使用原来的,因为我们只新添加了应用程序,重新打包后只有system.img文件发生变化。

        cd ~/Documents/source_code/android-2.3.1,使能单独编译打包命令mmm: source build/envsetup.sh

       

        然后就可使用mmm命令编译单独的应用程序模块了,只需在mmm后面加上模块路径即可:

        (注:上面的xml文件的第一行有误,开始和结尾应使用<?  ... ?> 包起来,这里就不重新截图了)

       

        提示主页的TextView的text属性必须使用资源文件的,我们在strings.xml加入一个字符串然后引用,重新编译:

       

       这里生成的apk路径在out/target/product/generic/system/app下,如果是C可执行文件则在bin目录下,动态链接库在lib目录下,硬件抽象层文件在lib/hw下,有点类似Linux文件系统的文件组织。

       现在生成了应用程序,可以打包system.img文件了:  make snod, 然后使用新的system.img文件启动模拟器:

      

       应用程序 启动后如下:

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值