FlowDroid安装及环境配置
作者:互联网
FlowDroid安装
我一定要安装好这个东西,别人的教程并不完全适用于我,这是属于我自己的教程。之前参考了很多很多博客,还是没有运行好。一气之下,重新安装。
准备工作
1、java环境
(jdk_1.8.1_131)
2、maven环境。
(3.6.3)
3、FlowDroid源码下载
下载最新的release版本,哦。也不是非得下最新版的,有的最新版的可能开发人员还在开发,有一些小bug,怎么出错的都不知道。关键是得看项目主页左上方是不是build passing,build failure就不要它了。
4、DroidBench环境变量配置
5、Android_Jar环境变量配置
网上的配置五花八门,变量名有的是ANDROID_JAR,有的是ANDROID_JARS;啊,还有变量值,有的是指定到了目录下固定的android.jar文件,有的是指定为包含android.jar的一个文件夹。是不是很迷?
后来,在运行失败后,我找到了这个官方说法。
相应的环境变量设置如下,然后凑合能跑,虽然还有一堆error。
6、Eclipse 安装
(或Intellij IDEA,这里使用的是Eclipse)
FlowDroid配置
1、导入soot-infoflow和soot-infoflow-android两个项目
(Soot-infoflow是一个Java数据流分析模块,Soot-infoflow-android则是将Android数据流分析转化为Java数据流分析的一个转化模块,均由Java编写)
file->import->general->existing projects into workspace->next->browse...
把那俩导进来就好了。有一堆错误,需要纠错。
别人的博客上说导入以上两个项目,还是会报错哎,当我的eclipse里面只有两个项目的时候。
原来还要把其余的几个项目(soot、heros、jasmin)也导入到eclipse里面。这个在FlowDroid的 issue #79 中有提到。
在项目导入的前期可能会有好多的error提示,不要着急,耐心等待,eclipse还在building。
其中jasmin的pom.xml里的execution有问题,可以直接让eclipse帮我们改。我选了方法1,让它在本pom.xml文件中添加pluginManagement标签。
还有soot的Options.java有问题,不知道为什么git clone的时候没有克隆完全,后面的代码没在里面,我从github项目中对应文件中拷贝了内容,复制到本地。
至此,暂时是个只有warning的世界。
2、更新soot-infoflow和soot-infoflow-android配置
-
pom.xml文件重新配置
检查soot-infoflow和soot-infoflow-android两个项目中的pom.xml文件的配置是否正确。
编译器版本为1.8 ;
maven输出路径改为target/classes和target/testclasses;
3、EasyTaintWrapperSource.txt
soot-infoflow-android缺少的EasyTaintWrapperSource.txt文件可以直接从soot-infoflow文件中直接复制
4、编译soot-infoflow-android
右键soot-infoflow-android项目,选择Run As>Maven build编译项目,这里我直接默认直接下一步,因为我不知道要输入什么。
然后...额,就报错了
No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
于是我添加了这个。
<defaultGoal>compile</defaultGoal>
然后 继续 run as -> maven build 一路next,还是报错了。
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project soot-infoflow-android: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
难道是java的环境没有配好?为什么之前测试maven的时候能运行呢?
参考博客,原因是我的应该指定为jdk的路径我指定为了jre。这俩是什么关系呢?
然后,我编译成功了!哈哈哈,记一下。
5、测试soot-infoflow-android
run as -> maven test,emm...又报错了。
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project soot-infoflow-android: There are test failures.
网上的解决办法是让这个goal跳过test,添加配置
<configuration>
<skipTests>true</skipTests>
</configuration>
重新 maven test,啊妈呀,终于success了,鼓掌。
6、maven install
最后一步啦,run as -> maven install,这次比较顺利,success了。
啊哈哈哈,庆祝一下。
至此,终于把环境调好了,真正的如何使用FlowDroid我还是不知道,慢慢来。
后面要再发几篇技术博客!
参考了很多优秀博客(只记录了一部分):
Windows下eclipse中flowdroid的构建与运行
etc.
标签:FlowDroid,配置,maven,infoflow,soot,test,android,安装 来源: https://blog.csdn.net/clever_boy_123/article/details/117340135