关于frameworks层源码编译
2017-09-01 17:20
351 查看
1、编译环境以及命令行
之前有做一个关于源码层编译的项目,现在有时间了来总结一下,同时方便新手参考我们做源码编译使用的是Putty没有直接安装linux系统,只需要服务器给我创建一个账户就行
第一次打开putty,然后用服务器给你创建的帐号密码,登录进去,以后会有session记录你的帐号密码不需要每次输入帐号密码;
登录后的界面如下
然后就是cd 命令进入服务器网盘了比如我们的网盘如图:
然后执行初始化的一些命令
先输入 source build/envsetup.sh 然后 lunch 73//73是我们的启动模式,可以改变的
然后就是进入我们要编辑的源码目录如图:
进入项目目录以后,就是编译命令
mm 或者 强制编译mm -b,或者mm -j32 //j32或者j16是多线程编译,会加快编译速度)
编译完成之后我们找到编译好的apk位置,如图
这个apk就可以直接安装到手机,命令行安装到手机之前需要电脑链接手机,安装到手机也可以通过命令行来进行,命令如下
//覆盖安装APK adb push Z:\ot8234G_work\out/target/product/p301/system/app/WalkliveLauncher/WalkliveLauncher.apk //system目录之后的就是系统目录了,也就是framework层 或者使用install命令安装 adb install -r Z:\ot8234G_work\out/target/product/p301/system/app/WalkliveLauncher/WalkliveLauncher.apk && adb shell am start -n com.onething.flowpusher/.ui.MainActivity
然后总结一下几个比较常用的命令
adb devices 1. 安装软件 --将指定的apk文件安装到设备上 adb install <apk文件路径> 2. 卸载软件 adb uninstall <软件名> adb uninstall -k <软件名> 如果加 -k 参数,为卸载软件但是保留配置和缓存文件. 3. 登录设备shell adb shell --这个命令将登录设备的shell. adb shell <command命令> 后面加<command命令>将是直接运行设备命令, 相当于执行远程命令 4. 从电脑上发送文件到设备 --用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机) adb push <本地路径> <远程路径> adb remount ## remount '/system'分区 as read-write 5. 从设备上下载文件到电脑 --用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑 adb pull <远程路径> <本地路径> 6. 显示帮助信息(包括各种命令用法与含义) -- 7.adb help 显示帮助命令 8.adb connect +ip地址 链接设备
2、然后说一下代码编辑器
一般可以通过eclipse直接导入编辑使用Androidstudio也是可以的,我们需要新建一个project,然后把服务器源码拉下来,我这里有个比较简便的方法,只需要修改两个文件
文件修改好以后,还需要点击AS上面的刷新按钮即可拉取服务器源码;
如图
第一个是app目录下面的build.gradle,请参考如下代码修改
apply plugin: 'com.android.application' android { compileSdkVersion Integer.parseInt(COMPILE_SDK_VERSION) buildToolsVersion BUILD_TOOLS_VERSION defaultConfig { applicationId PACKAGE_NAME minSdkVersion Integer.parseInt(MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(TARGET_SDK_VERSION) versionCode Integer.parseInt(VERSION_CODE) versionName VERSION_NAME testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { manifest.srcFile MANIFEST_SRC_FILE java.srcDirs = [JAVA_SRC_DIRS] resources.srcDirs = [RESOURCES_SRC_DIRS] aidl.srcDirs = [AIDL_SRC_DIRS] renderscript.srcDirs = [RENDERSCRIPT_SRC_DIRS] res.srcDirs = [RES_SRC_DIRS] assets.srcDirs = [ASSETS_SRC_DIRS] } } android.applicationVariants.all { variant -> variant.outputs.each { output -> output.processManifest.doLast { def manifestFile = output.processManifest.manifestOutputFile def updatedContent = manifestFile.getText('UTF-8').replaceAll("android:sharedUserId=\"android.uid.system\"", "") manifestFile.write(updatedContent, 'UTF-8') } } } } dependencies { compile fileTree(include: ['*.jar'], dir: LIBS) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12' compile "com.android.support:support-v4:${SUPPORT_LIBRARY_VERSION}" compile "com.android.support:appcompat-v7:${SUPPORT_LIBRARY_VERSION}" }
另一个是gradle.properties文件,参考如下代码修改
VERSION_CODE=1 VERSION_NAME=1.0 PACKAGE_NAME=com.onething.FlowPusherTest.test//包名 MIN_SDK_VERSION=23 //版本可自定定义 COMPILE_SDK_VERSION=25 TARGET_SDK_VERSION=23 BUILD_TOOLS_VERSION=25.0.2 SUPPORT_LIBRARY_VERSION=25.3.0 MANIFEST_SRC_FILE=Z:/ot8234G_work/packages/apps/FlowPusherTest/AndroidManifest.xml//这个是服务器上面的配置文件 JAVA_SRC_DIRS=Z:/ot8234G_work/packages/apps/FlowPusherTest/src//服务器上面代码目录 RESOURCES_SRC_DIRS=Z:/ot8234G_work/packages/apps/FlowPusherTest/src//服务器上面代码目录 AIDL_SRC_DIRS=Z:/ot8234G_work/packages/apps/FlowPusherTest/src//服务器上面代码目录 RENDERSCRIPT_SRC_DIRS=amlogic_6.0/packages/apps/FlowPusherTest/src//服务器上面代码目录 RES_SRC_DIRS=Z:/ot8234G_work/packages/apps/FlowPusherTest/res//服务器上面代码目录的资源文件 ASSETS_SRC_DIRS=Z:/ot8234G_work/packages/apps/FlowPusherTest/assets//服务器上面代码目录的资源文件 LIBS=Z:/ot8234G_work/packages/apps/FlowPusherTest/libs//服务器上面代码目录的lib //如果看不懂的,就用eclipse导入吧
然后代码修改编辑过程中需要注意的是,编辑器里面如果要添加一下compile,需要下载jar包然后添加到服务器,并且在mk文件里面增加依赖,如图
jar包添加到图示的libs目录里面,mk文件里面参考图片代码修改,否则在linux系统下mm会报错
好像说完整个流程了~~就这样吧
相关文章推荐
- 关于网狐棋牌6603源码的整理、编译和搭建
- 关于编译源码时出现Syntax error: "(" unexpected的解决方式
- 关于源码编译每次提示有错误 要make update-api
- 关于Nginx服务器搭建,编译源码安装Nginx的环境
- Android 关于图片文件夹后缀错误,使应用在源码下编译通过却无法运行的错误
- 关于uBuntu下编译Android源码出错
- 关于源码编译apk
- 关于java源码在编译时提示:编码GBK的不可映射字符 的问题
- 关于在android源码编译时引用第三方jar宝--需要在android.mk中配置
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- 关于网狐棋牌6603源码的整理、编译和搭建
- android 源码开发 关于编译等小知识点总结
- 关于网狐棋牌6603源码的整理、编译和搭建
- UNIX环境高级编程-第0章- 关于apue.h和源码编译问题
- 关于JCAPTCHA源码的重新编译
- 关于编译WebRTC Linux/Android版源码的说明
- 关于qemu的二三事(4)————qemu源码的下载与编译,以及fdt
- 关于网狐棋牌6603源码的整理、编译和搭建
- 关于网狐棋牌6603源码的整理、编译和搭建
- 关于flexpaper源码重新编译后样式丢失的问题