无论是什么样的编程开发,良好的 ide 能带给我良好的开发体验。之前开发 android 用过 eclipse,后来由于谷歌青睐 Idea,于是开始转向使用 android studio 。
使用起来感觉基本比 eclipse 要好,唯一的致命缺陷,就是导入别人的开源项目,尤其是那些没有提供通过 grade 的 implementation 方式导入的开源项目,就得手动打开文件选择对话框,选择开源项目的 build.gradle 并打开进行加载,这个期间可能会爆出各种错误,要能成功编译运行,根据百度的教程就得改一堆东西,改了还不一定能成功,就因为这个情况导致学习一些别人的开源项目,连编译运行连跑都跑不起来,很郁闷。
不知道各位有没有这种糟糕的使用经历,各位是如何打开别人的开源的 android 项目,并成功编译运行的?提供一下正确的打开方式
1
nicocho 2020-10-12 16:29:53 +08:00
开 VPN,提示下载就下,主要还是 build.gradle 里的版本不匹配问题。
还有,建议 android studio 版本最好不要用最新的, 多整几次,习惯就简单了~ |
2
tctc4869 OP @nicocho 我说的,不是梯子的问题,是用 android studio 导入别人的开源项目的使用体验问题,我没用新版本,用的是 android studio 3.4
|
4
winterbells 2020-10-12 16:39:02 +08:00 via Android
没有 gradle 的项目是多老的。。
|
6
tctc4869 OP @winterbells 不一定,有 gradle 的开源项目,打开加载也有报错的可能。我最烦这种情况,而且改 grade 版本也不一定会有效果
|
7
winterbells 2020-10-12 17:59:40 +08:00 via Android
@tctc4869 有些直接下载的我会手动改 lib 版本
但一般都是在线看看关键地方,编译跑一个没有必要 |
8
Anarchy 2020-10-12 18:59:09 +08:00 via Android
导入项目首先不要提示升级 gradle 版本就点了,当然有的 gradle 版本太老就没办法了一点一点改问题了。
|
9
StonyGround 2020-10-12 21:34:33 +08:00
导入之前,先手动改 gradle 、sdk 版本,改成自己电脑上有的
|
10
shiguiyou 2020-10-12 21:55:41 +08:00 1
将项目文件夹下面的 build.gradle 里面的 google()改为阿里云的地址就行了,速度很快
|
11
Daming 2020-10-12 22:50:08 +08:00
千万不要手欠升级 gradle!!
"Android Gradle Plugin is ready to update." 无视掉 |
12
Hallujah 2020-10-12 22:51:05 +08:00 via Android
兴趣使然用过一阵,导入 GitHub 三五个项目,挨个改错误,百度下都是需要我改 gradle 版本的,改了也不行,改了好几处都不行,遂卸载。
|
14
chenjiajia9411 2020-10-13 09:08:36 +08:00
如果你说的是开源库的话,你可以自己打成 aar 包然后 implementation 进来,甚至直接用 jitpack 之类的。
即使没法打包,那也应该导入模块而不是导入 gradle 。 如果是完整项目的话,直接打开一般不会有什么问题,有问题跟着报错对应修改就行了。 |
15
tctc4869 OP @winterbells
@chenjiajia9411 一般有一些开源项目,用 android studio 打开,以“android”视角看待,会有一个 app 文件夹,和一个 library 文件夹,这个 library 文件夹的内容,会不会就是核心内容,但是如果要拿出来放到我的项目,要怎么弄? |
17
chenjiajia9411 2020-10-13 15:09:58 +08:00
@tctc4869 #15 两种方式随你喜好:
1.项目打开之后直接 Make Project (或者你知道 module 是什么的话,Make module "library"更快),然后在项目根目录 /library/build/outputs/aar 下会出现一个 aar 文件,把它复制到你的项目的 lib 文件夹下,再以 implementation (name: 文件名不带扩展名, ext: 'aar')引入即可。 2.直接在你的项目里 File-New-Import Module,选择你要的项目里的 library 文件夹并改一个你需要的模块名,finish 之后再以 implementation project(':模块名')引入(并且要在 setting.gradle 内添加 include:':模块名')。 但是说真的,一般开源项目都会发布到 jcenter 之类的,再不济用 jitpack 自己打个包,要你自己编译的是个什么项目我想见识一下。(或者一般这种是作者还没有写好不方便发布版本,这种情况下你下下来应该也是不能用的) |
18
winterbells 2020-10-13 15:19:19 +08:00 via Android
|
19
tctc4869 OP @chenjiajia9411 我是 Yasea 吧,github 上有,就是国人开源的著名 rtmp 推流项目,算是比较老的开源项目,用我电脑上的 android studio 3.4 打开,改了 project 的 grade 版本到是能跑起来运行,我没有找到没有 implementation 导入方式或你所说的 arr 文件,
|
21
chenjiajia9411 2020-10-13 16:19:13 +08:00
@tctc4869 #19
https://jitpack.io/#begeekmyfriend/yasea/-SNAPSHOT `implementation 'com.github.begeekmyfriend:yasea:-SNAPSHOT'` Jitpack 是可以用的啊。 |
22
tctc4869 OP 谢谢,我其实没用过 Jitpack
|
23
tctc4869 OP @chenjiajia9411 谢谢提供,其实另外还有问题,用 implementation 导入一些资源会出现如下错误“
ERROR: Failed to resolve: com.github.begeekmyfriend:yasea:-SNAPSHOT Show in Project Structure dialog Affected Modules: app ” grade project 里,我是怎么写的 repositories { google() maven { url "https://jitpack.io" } jcenter() } 这个错误我不太明白怎么解决,你能指点一下么 |
24
chenjiajia9411 2020-10-13 16:37:09 +08:00
@tctc4869 #23 你是不是写在了 buildscript 的 repositories 里?应该把 jitpack 目录写进 allprojects 的 repositories 里。
像这样: ```` buildscript { repositories { google() mavenCentral() gradlePluginPortal() maven { url 'https://storage.googleapis.com/r8-releases/raw' } maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } maven { url 'https://kotlin.bintray.com/kotlinx' } maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } mavenLocal() } dependencies { //gradle plugin // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() mavenCentral() maven { url 'https://jitpack.io' } maven { url 'https://repo.spring.io/snapshot' } maven { url 'https://oss.jfrog.org/libs-snapshot' } maven { url 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' } maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } maven { url 'https://kotlin.bintray.com/kotlinx' } maven { url 'https://maven.aliyun.com/repository/releases' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } maven { url 'https://repository.apache.org/content/groups/snapshots' } flatDir { dirs 'libs' } mavenLocal() } } ```` |
25
tctc4869 OP @chenjiajia9411 明白了,谢谢指导
|
26
silencelixing 2020-10-13 19:27:21 +08:00
当然是用梯子,用梯子可以大大提高成功率
|