V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  Android

使用 android studio ,各位是如何成功导入或打开他人的开源项目并编译运行的?

  •  
  •   tctc4869 · 50 天前 · 1599 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。

    无论是什么样的编程开发,良好的 ide 能带给我良好的开发体验。之前开发 android 用过 eclipse,后来由于谷歌青睐 Idea,于是开始转向使用 android studio 。

    使用起来感觉基本比 eclipse 要好,唯一的致命缺陷,就是导入别人的开源项目,尤其是那些没有提供通过 grade 的 implementation 方式导入的开源项目,就得手动打开文件选择对话框,选择开源项目的 build.gradle 并打开进行加载,这个期间可能会爆出各种错误,要能成功编译运行,根据百度的教程就得改一堆东西,改了还不一定能成功,就因为这个情况导致学习一些别人的开源项目,连编译运行连跑都跑不起来,很郁闷。

    不知道各位有没有这种糟糕的使用经历,各位是如何打开别人的开源的 android 项目,并成功编译运行的?提供一下正确的打开方式

    26 条回复    2020-10-13 19:27:21 +08:00
    nicocho
        1
    nicocho   50 天前
    开 VPN,提示下载就下,主要还是 build.gradle 里的版本不匹配问题。
    还有,建议 android studio 版本最好不要用最新的,
    多整几次,习惯就简单了~
    tctc4869
        2
    tctc4869   50 天前
    @nicocho 我说的,不是梯子的问题,是用 android studio 导入别人的开源项目的使用体验问题,我没用新版本,用的是 android studio 3.4
    yingqi7
        3
    yingqi7   50 天前 via iPhone   ❤️ 1
    @tctc4869 感觉最大的问题是版本兼容和开源项目且胳膊少腿🐶
    winterbells
        4
    winterbells   50 天前 via Android
    没有 gradle 的项目是多老的。。
    tctc4869
        5
    tctc4869   50 天前
    @yingqi7 你说的很对,我现在很郁闷,一些发布日期超过 2 年的开源项目,近年又没更新,打开就可能报错。
    tctc4869
        6
    tctc4869   50 天前
    @winterbells 不一定,有 gradle 的开源项目,打开加载也有报错的可能。我最烦这种情况,而且改 grade 版本也不一定会有效果
    winterbells
        7
    winterbells   50 天前 via Android
    @tctc4869 有些直接下载的我会手动改 lib 版本
    但一般都是在线看看关键地方,编译跑一个没有必要
    Anarchy
        8
    Anarchy   50 天前 via Android
    导入项目首先不要提示升级 gradle 版本就点了,当然有的 gradle 版本太老就没办法了一点一点改问题了。
    StonyGround
        9
    StonyGround   50 天前
    导入之前,先手动改 gradle 、sdk 版本,改成自己电脑上有的
    shiguiyou
        10
    shiguiyou   50 天前   ❤️ 1
    将项目文件夹下面的 build.gradle 里面的 google()改为阿里云的地址就行了,速度很快
    Daming
        11
    Daming   50 天前
    千万不要手欠升级 gradle!!
    "Android Gradle Plugin is ready to update." 无视掉
    Hallujah
        12
    Hallujah   50 天前 via Android
    兴趣使然用过一阵,导入 GitHub 三五个项目,挨个改错误,百度下都是需要我改 gradle 版本的,改了也不行,改了好几处都不行,遂卸载。
    tctc4869
        13
    tctc4869   49 天前
    @shiguiyou 不是墙的问题
    chenjiajia9411
        14
    chenjiajia9411   49 天前
    如果你说的是开源库的话,你可以自己打成 aar 包然后 implementation 进来,甚至直接用 jitpack 之类的。
    即使没法打包,那也应该导入模块而不是导入 gradle 。
    如果是完整项目的话,直接打开一般不会有什么问题,有问题跟着报错对应修改就行了。
    tctc4869
        15
    tctc4869   49 天前
    @winterbells


    @chenjiajia9411

    一般有一些开源项目,用 android studio 打开,以“android”视角看待,会有一个 app 文件夹,和一个 library 文件夹,这个 library 文件夹的内容,会不会就是核心内容,但是如果要拿出来放到我的项目,要怎么弄?
    tctc4869
        16
    tctc4869   49 天前
    @tctc4869 拿出来放到我的项目里,进行使用
    chenjiajia9411
        17
    chenjiajia9411   49 天前
    @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 自己打个包,要你自己编译的是个什么项目我想见识一下。(或者一般这种是作者还没有写好不方便发布版本,这种情况下你下下来应该也是不能用的)
    winterbells
        18
    winterbells   49 天前 via Android
    @tctc4869 和你新建一个模块原理是一样的


    @chenjiajia9411 我们有很多都都是拷源码过来的。一般不更新了,或者更新慢,有些地方要加保护
    tctc4869
        19
    tctc4869   49 天前
    @chenjiajia9411 我是 Yasea 吧,github 上有,就是国人开源的著名 rtmp 推流项目,算是比较老的开源项目,用我电脑上的 android studio 3.4 打开,改了 project 的 grade 版本到是能跑起来运行,我没有找到没有 implementation 导入方式或你所说的 arr 文件,
    tctc4869
        20
    tctc4869   49 天前
    @tctc4869 开头说错了,是 Yasea 吧
    chenjiajia9411
        21
    chenjiajia9411   49 天前
    @tctc4869 #19
    https://jitpack.io/#begeekmyfriend/yasea/-SNAPSHOT
    `implementation 'com.github.begeekmyfriend:yasea:-SNAPSHOT'`
    Jitpack 是可以用的啊。
    tctc4869
        22
    tctc4869   49 天前
    谢谢,我其实没用过 Jitpack
    tctc4869
        23
    tctc4869   49 天前
    @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()


    }
    这个错误我不太明白怎么解决,你能指点一下么
    chenjiajia9411
        24
    chenjiajia9411   49 天前
    @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()
    }
    }
    ````
    tctc4869
        25
    tctc4869   49 天前
    @chenjiajia9411 明白了,谢谢指导
    silencelixing
        26
    silencelixing   49 天前
    当然是用梯子,用梯子可以大大提高成功率
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1760 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:15 · PVG 01:15 · LAX 09:15 · JFK 12:15
    ♥ Do have faith in what you're doing.