• 如何将自己的项目编译到Android系统中,成为应用程序


    1、下载Android系统的源码包(不同手机用的不一样,根据自己的情况合理下载,这不做介绍)

    2、解压下载下来的源码包(若是.tar.gz文件,解压方式如下)

        tar -xzvf 文件名

    3、在解压包的alps/packages/apps下面新建一个文件夹 ***(项目名),将自己的项目的里面的main文件下的数据复制出来放在新建的文件夹下,并将java文件名改为src,最重要的一点是新建一个Android.mk文件,这个文件必须要有,可参照apps/下面的项目里面的.mk编写,最简单的编写是如下:

    LOCAL_PATH:= $(call my-dir)    //Android.mk文件和项目文件在同一个文件里可以这样写

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_SRC_FILES := $(call all-java-files-under, src)

    LOCAL_PACKAGE_NAME := 项目名

    include $(BUILD_PACKAGE)

     

    4、编译整个工程

    ./oneCmdMake  系统项目名  userdebug       //这里可以是userdebug、eng、user

     

    5、单一模块编译

    ./moduleMake userdebug mmm packages/apps/项目名      //注意,这里的编译选项必须一致,不然后面很麻烦

     

    如果编译成功就可以开始刷机了,编译不成功就看error是怎么提示的,如果刷机后,手机上面没有你的项目,就执行  ./moduleMake userdebug snod

    再次刷机,一般这样就可以了

     

     

    整个工程编译成功后以后就不需要在整体编译了,整体编译是一个特别耗时的操作,一般是一个小时左右,但是单一模块编译是很快的,如果以后还需要将自己的项目预置到这个系统中(已经整体编译成功的),只需直接单一模块编译,并用snod进行打包就可以了,这是我认为比较节省时间的方法,另一种方法是将自己的项目名配置到系统配置文件device.mk里面,仿照***PACKAGES+=项目名,再整体编译一次,就不需要打包了。

     

     

     

    模块编译(快速将修改过后的项目push到手机上)

                   source build/envsetup.sh    # source是用来运行shell脚本的,envsetup.sh里面有mm mmm mmmb等一系列可用的命令,但只有运行了该脚本,里面的命令才能使用
                   lunch +平台名                    #加载平台,这可名字可以在out/target/下面看,例如:正确的情况下是没有generic文件夹的

                                                   

     

                   mmm -B  项目名      #编译修改过后的项目,-B 可有可无,这里的项目名要对应所在的路径,编译模块的所有文件,需要-B选项,不加-B 则只编译发生改变的文件

                   adb root                   #获得手机的root权限

                   adb remount            #挂载手机

                   adb push  该项目生成的 .apk 和 .odex文件的位置             对应手机里面的位置            #把修改并编译后生成的push 到手机中

                   adb shell reboot             #重启手机

     对于不能remount的手机,就不能push,可以mmm单一编译后打包make -j16 snod(直接使用),再刷机,选中system下载到手机,可以省很多的时间

     

    阿里最近更新代码后, root 后无法remount需要使用的要做以下处理:
    adb root 之后,进到adb shell 里。执行命令 echo "enable 0;" > /proc/alog 然后就可以了。

     

     

    注:当不确定自己是否push成功的情况下,可以到手机的目录下面去看对应文件的修改时间,如

    ls -l Utk.apk  结果会显示文件的修改时间和权限,权限是666时,才正确,时间为你push的时间

     

    m:编译所有的模块 
    mm:编译当前目录下的模块,当前目录下要有Android.mk文件 
    mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

     

     

    eng:工程版本

    user:最终用户版本

    userdebug:调试测试版本

    tests:测试版本

    一般而言,tests和userdebug两个版本是不能交付给最终用户的。

     

     

    犯过的错误及最后的修改:

    1、整体编译的时候用的是userdebug,单一模块用的是eng,编译的时候没有注意到,后面改成一样的了能生成oat文件了。
    2、自己的游戏项目里面继承是AppCompatActivity,不能被识别,可能是因为包或版本的原因,最后统一改成了Activity.
    3、用./moduleMake userdebug mmmb 改成了./moduleMake userdebug snod编译单一模块并打包就成功了

    4、注释尽量不出现中文,布局里面的text内容最好写在string.xml中,再去调用

    5、./birdCopy 6118SOP_V17_AY_HD_MV1616 userdebug
         ./mk_aliphone.sh bird_6737m_35g_m0 userdebug adb new YUNOS_CARRIER_CUSTOM=CMCC_DEEP_COOP

    这是对于阿里平台的编译,new是每次整体编译都会清掉原来编译过的数据,如果为了编译时间短,可以不要new改成remake

    提高代码的编译速度可参照http://blog.csdn.net/cscrazybing/article/details/50789482

  • 相关阅读:
    redis——事务
    redis——队列
    linux安装mysql5.7
    转载:centos7yum默认为阿里云镜像
    redis——缓存穿透、缓存击穿、缓存雪崩
    redis——持久化
    redis——分布式锁
    并发编程实践
    Java并发包中线程同步器
    并发包中ScheduledThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/xhf-wonder/p/6842925.html
Copyright © 2020-2023  润新知