头图

麒麟操作系统 (kylinos) 从入门到精通 - 研发环境 - 第十五篇 Android安卓开发环境的搭建(不完美,但可用)

0.基础环境

类别:笔记本
型号:中国长城 NF14C
硬件平台:飞腾处理器(ArmV8 指令集)
系统:银河麒麟操作系统 V10(SP1)

关键词:
信创,麒麟系统,linux,安卓,android,移动app,飞腾,arm

1.背景描述

前面,我们将java,go,web的环境都搭建好了,但我们日常研发过程中也会涉及到移动app的研发等。Linux X86下的版本,android studio是有官方的包的,而飞腾处理器的ARM架构,在安卓官网并没有直接可用的安装包,包括adb command line tools。
本文通过各类尝试,最终成功完成在国产自主系统和处理器完成安卓APP的研发环境,并将过程记录如下,希望能够给到有相同需要的读者一些启示和帮助。

2.android studio

2.1 前提条件

需要先准备好java,请参见第十篇https://segmentfault.com/a/11...文章内容这装配置好java环境。

2.2 下载

android studio 没有提供arm版本,但考虑到android studio基于idea研发,Java技术系统,所以在官网中下载linux二进制版本
图片.png
下载完成后,解压放到需要的位置,运行bin/studio.sh
设置过程中

2.3设置

2.3.1会提示设置代理

将socks5代理信息填入
图片.png
这里我用的是我V2ray提供的socks5服务,如果你自己没有做代理,也可以用下面的代理解决此问题。
1、东软信息学院
mirrors.neusoft.edu.cn     端口:80
2、北京化工大学
ubuntu.buct.edu.cn/ubuntu.buct.cn  端口:80
3、中国科学院开源协会
mirrors.opencas.cn (mirrors.opencas.org/mirrors.opencas.ac.cn)    端口:80
4、上海GDG镜像服务器
sdk.gdgshanghai.com   端口:8000 
5、电子科技大学
mirrors.dormforce.net  端口:80
其中,强烈推荐电子科技大学的镜像源!

2.3.2 设置studiojdk

设置jdk,不要用自带的jre,用我们安装高的arm版的
图片.png
指定JDK的位置(2021的版本最低要求是11)
/usr/lib/jvm/java-11-openjdk-arm64
图片.png
用户openjdk会出现这个提示,为了可靠,我们可以通过下面的方式更改运行时JDK,我们可以下载oracle jdk11二进制包,解压到指定文件夹
图片.png
菜单Help | Find Action,输入Java Runtime 搜索,选择Boot Java Runtime for the IDE action.
图片.png
图片.png
选择我们解压的Oracle 11 JDK,点确认并重启android studio

2.3.3 设置项目编译使用的jdk

用户openjdk会出现这个提示,为了可靠,我们可以下载oracle jdk11二进制包,解压到指定文件夹,然后在idea里面进行配置
图片.png
在启动的idea里面,点file->settings打开界面如下
设置 JDK 版本:在 Android Studio 中打开您的项目,然后依次选择 File > Settings... > Build, Execution, Deployment > Build Tools > Gradle
图片.png
图片.png
添加刚解压的jdk
图片.png
保存

2.4 安装adb

打开终端

sudo apt-get install adb -y #安装工具,完毕后提示位置在/usr/lib/android-sdk/platform-tools/adb
adb version #确认安装情况

图片.png

2.4.1 USB连接调试

sudo adb devices

手机上要打开开发者模式,插上USB线后,要允许本机连接调试
图片.png

2.4.2 adb wifi无线调试

无线调试前提条件: 同一wifi,andriod 11+,SDK>30+(adb versions),同时手机要打开无线调试
adb pair不可用,需要用adb connect 在v10 sp1上。
注:由于本人网络不是太好,所以简单测试一下,没有搞成功。后面搞通了,再补充

2.5 sdk设置

启动android studio,会出现 SDK配置信息(或通过tool工具菜单,找到SDK管理进入)
图片.png
根据向导安装需要的版本,进入IDE后,也可以通过下面的界面配置。
图片.png
下载需要的依赖包(这里为了方便,我个人习惯是把所有的SDK都下了,放在个人主目录Android下面)
安装完毕后的效果如下
图片.png
图片.png

3.项目中的gradle设置

在上面所有的设置完成后,通过向导新建一个测试项目。建完之后,会发现Gradle Sync老是同步不成功的情况, 这主要还是我们现状决定。这里需要在项目的setting里面设定代理信息,通过代理拉取Gradle依赖包。
设置了gradle编译信息(这里不做详细的介绍了,这些和其他平台一样的)
图片.png
将工程中的build.gradle,setting.gradle中的仓库地址全部换成阿里云的。


buildscript {
    repositories {
        mavenLocal()

        maven{ url 'https://maven.aliyun.com/repository/google'}

        maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}

        maven{ url 'https://maven.aliyun.com/repository/public'}

        maven{ url 'https://maven.aliyun.com/repository/jcenter'}

        maven{ url 'https://maven.aliyun.com/repository/center'}
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.0'
        classpath "com.android.databinding:dataBinder:1.0-rc0"
    }
}

allprojects {
    repositories {
        mavenLocal()

        maven{ url 'https://maven.aliyun.com/repository/google'}

        maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}

        maven{ url 'https://maven.aliyun.com/repository/public'}

        maven{ url 'https://maven.aliyun.com/repository/jcenter'}

        maven{ url 'https://maven.aliyun.com/repository/center'}
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

至发稿时,待后续打通的有以下两点(通过有线已可以调试)
1.没有wifi adb
2.没有装成功模拟器,似乎原因在kvm,仓库中也没有找到对应的kvm arm版本。
3.adb可以识别的,但idea的连动基本上是断的。只能通过idea将程序编译好,再通过adb手动安装至手机。这里可能需要官方或者有热情的人员将linux x86的版本重新针对arm编译一次(可能才能达到一体化连动)

麒麟系统专栏:
https://segmentfault.com/blog...
文章发表在SegmentFault
联系邮箱:1179611323@qq.com
群:662512340
发行日志:
20220617 首发


麒麟操作系统
频繁更新,为大家提供麒麟系统在飞腾处理器上使用教程(相类似的版本可参考)。从场景出发,每一篇为一个...

码农极客,2004年接触Linux世界。爱技术的IT的男

53 声望
113 粉丝
0 条评论
推荐阅读
麒麟操作系统 (kylinos) 从入门到精通 - 研发环境 - 第四十九篇 Electron软件打包
类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)系统:银河麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟系统,linux,c++,c,飞腾,arm,electron,npm,nvm,nodejs

码上世界

封面图
程序员英语学习指南
动机为什么程序员要学习英语?工作:我们每天接触的代码都是英文的、包括很多技术文档也是英文的学习:最新最前沿的技术最开始都是只有English版本就业:学好英语让你的就业范围扩大到全球,而不只限于国内目标读...

九旬7阅读 699

安卓逆向之破解某成人APP播放次数限制
某成人水果APP非VIP用户存在播放次数限制,每天只能播放3次。超过3次需要购买VIP。 由于过于贫穷,于是抽空,对其安卓APP进行了逆向分析,最终成功破解了其播放次数限制。

悖论3阅读 1.5k评论 3

封面图
记一次使用gdb诊断gc问题全过程
上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》 然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下: 从这个图中可以发现,我们GC有一些尖峰,...

扣钉日记2阅读 1.1k

封面图
使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳4阅读 789

这一次,解决Flutter Dialog的各种痛点!
4.0版本做了重大调整,迁移请参照: SmartDialog 3.x 迁移 4.0本文内容已更新,文中内容及其代码皆为4.0用法前言Q:你一生中闻过最臭的东西,是什么?A:我那早已腐烂的梦。兄弟萌!!!我又来了!这次,我能自信...

小呆呆6661阅读 3.5k

封面图
网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队2阅读 437

封面图

码农极客,2004年接触Linux世界。爱技术的IT的男

53 声望
113 粉丝
宣传栏