之前有做一个关于源码层编译的项目,现在有时间了来总结一下,同时方便新手参考
我们做源码编译使用的是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
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地址 链接设备
一般可以通过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会报错
好像说完整个流程了~~就这样吧