四时宝库

程序员的知识宝库

使用android-studio移植tf demo到手机的过程

在实践深度学习过程有个感觉,就是把pc上图像识别算法放到手机上运行,不是后端模式,这块相对是一个蓝海。

网上的大都是类似的介绍,主要在Ubuntu上进行环境构建,编译,运行。

但我这希望是windows环境,还有就是不希望去编译tf的so,jar包,尽量简单去完成移植,有更多时间去验证算法,改善算法。

实践过程中也是各种问题。现把实际过程分享给有类似需求的朋友。

过程如下:

1、下载android studio(简称AS),NDK并安装。

这部分简单,但花费时间。我安装的是2.3。NDK也可以在as安装后,启动as后在安装(比较容易)。

步骤是setting->Appearance&Behavior->system setting->android sdk,然后点击sdk tools,看到NDK框,

选择后Apply,就自动下载安装了。(同时最好把cmake也同样步骤安装了)

特别注意的是选用ndk r16b版本,不要用r17版本。这能避免后续很多问题。

2、下载AndroidTensorFlowMachineLearningExample,这是一个网友的开源代码,比较好用。

然后放到本地目录下F:\temp\android-dl\android\。

3、下载编译所需要的android的tf库,有libandroid_tensorflow_inference_java.jar,libtensorflow_demo.so。

下载位置:链接: https://pan.baidu.com/s/1nuQ4UpF 密码: hust(网友贡献的,赞)

注意:libtensorflow_demo.so,用的是x86_64下的(根据os系统来选择)。

4、修改android/下的 build.gradle文件

修改内容,如下:

classpath 'com.android.tools.build:gradle:2.3.0'

compileSdkVersion 27

buildToolsVersion '27.0.3'

。。。

targetSdkVersion 27

这些都是跟as的版本有关的内容。

除此以外,还有有个坑,一定要注意自己的as版本,如果是3.0此代码直接可用,如果是2.3则要把build.gradle文件

中的dependencies部分进行如下修改。(一开始我没注意到,花费了不少时间)

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude group: 'com.android.support', module: 'support-annotations'

})

compile 'com.android.support:appcompat-v7:27.+'

compile 'com.android.support:design:27.+'

//compile 'com.android.support:support-vector-drawable:27.+'

compile 'com.android.support.constraint:constraint-layout:1.0.2'

testCompile 'junit:junit:4.12'

5、把这两个库libandroid_tensorflow_inference_java.jar,libtensorflow_demo.so加入到项目中。

添加的步骤是:

5.1先添加jar包

a.将jar文件复制、粘贴到app->libs目录中;

b.右键点击jar文件,并点击弹出菜单中的“Add As Library”,将jar文件作为类库添加到项目中;

c.选择指定的类库。

5.2再添加so文件

a.将.so文件拷贝到 app/src/main/jniLibs下(jniLibs文件夹若没有则新建)

b. 在as中的build.gradle中就添加如下几行,

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

然后点击as工具栏上的"Sync Project with Gradle files"按钮进行gradle同步。

之后切换到android结构下,你会看到jniLibs中.so已经变成了.jar文件,证明已经成功;

到此为止,完成后的界面如下:

6、点击build apk,生成apk。

7、将手机设置为开发者模式

打开安卓手机,找到 usb debugging 按钮,每个手机可能具体的不太一样。

然后手机通过USB数据线连接电脑,此时手机屏幕会提示:

allow USB debugging?然后点击ok。(之后再连接则不会提示)

8、点击AS下方的 monitor,查看手机是否连接成功。

9、点击AS 的 run ,开始编译和安装。

在手机上找到图标点击运行即可。

至此编译调试完成。

以下列举一些注意的内容。

注意点1;

有时候打开AS时,启动很慢,原因是卡在下载gradle这一步。其下载后保存位置是在如下目录:

C:\Users\neusoft\.gradle\wrapper\dists

当下载完成后,之后在启动会比较快。

注意点2;

编译或gradle同步过程中一定要联网,且网速得比较快点,否则很慢,各种问题。

注意点3:Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDebug'.

> A problem occurred starting process 'command 'D:\gradle\SDK\ndk-bundle\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-strip''

解决方法:如果ndk版本在r17版, 则替换为r16b版本。步骤是;

先清苦sdk/ndk-bundle/ 下的内容。下载16b版本的ndk到本地, 将解压缩后的所有文件拷贝到sdk/ndk-bundle/目录下,再重新build工程。

16b版本的位置是https://developer.android.google.cn/ndk/downloads/older_releases。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接