怎么将代码导入android - CSDN
  • 说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入AndroidStudio中使用。 这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。 OK,...

    深度开源 经验

    前言

        Android Studio到现在已经发展到2.1.1+的版本了,最近也在试着使用它,原因是多方面的,一个毕竟是未来的趋势,二则是github上越来越多的大牛开源项目都是基于Android Studio的,因此会使用Android Studio就成为一件必须的任务。

         在具体下面的工作之前,有两个概念是与Eclipse不大相同的,即Project和Module。在Android Studio中,一个Project并不是Eclipse的project,倒是有点像workspace(或者说任务吧),而Module才是与Eclipse的project相似的。所以,一个Project中可以包含多个Module,多个Module在一起共同构成一个Project,每个Module可以是一个库,也可以是一个可运行的Module(对应可运行的apk)。

    正题

          说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。
    这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。
    OK,进入正题。

    Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project.
    这里,我们先从兼容模式说起。

    兼容模式

    这种模式下,保证了Eclipse时代的代码目录结构,整体操作和使用和Eclipse也差不多。
    最重要的,当你使用AndroidStudio时,你或者其他人也可以方便的使用Eclipse,互不干扰。

    实现步骤

    1. 从Eclipse中导出Gradle build files

    • 在Eclipse菜单中 File --> Export-->Generate Gradle build files
      将Eclipse代码导入到AndroidStudio的两种方式
    • 接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。
      将Eclipse代码导入到AndroidStudio的两种方式
    • 选中你的项目工程,包括主工程和库工程(Library)。
      将Eclipse代码导入到AndroidStudio的两种方式
    • 确认生成
      将Eclipse代码导入到AndroidStudio的两种方式

    2. 修改导出文件参数

    导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。
    为了保证能够讲解的更清晰,下面分情况讲解一下:

    没有库工程,只有主工程

    这种情况下你看到的目录是这样的
    将Eclipse代码导入到AndroidStudio的两种方式

    • 首先需要更改的是 build.gradle 文件
      AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,因此需要将图中红框内的 0.12.+ 改为 1.0.0
      将Eclipse代码导入到AndroidStudio的两种方式
    • 然后还需要更新Gradle版本,指定为所需要的2.2.1
      在 /gradle/wrapper/gradle-wrapper.properties里面
      将Eclipse代码导入到AndroidStudio的两种方式

    含有库工程

    其实改动方法和上面一样,只需要注意是改动整个项目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。
    而不要尝试去主工程或者库工程里面找build.gradle
    将Eclipse代码导入到AndroidStudio的两种方式

    3. 导入AndroidStudio

    • 进入到AndroidStudio中,选择导入非AndroidStudio工程
      将Eclipse代码导入到AndroidStudio的两种方式
    • 找到需要导入的工程目录,可以看到图标和Eclipse创建的工程不一样。
      将Eclipse代码导入到AndroidStudio的两种方式
    • 点击OK,进入漫长的加载过程,之后就可以正常使用了。
      将Eclipse代码导入到AndroidStudio的两种方式

    已经创建过工程的打开AndroidStudio会直接进入以前的工程
    这时候可以选择File-->Import Project, 选中后点击ok
    将Eclipse代码导入到AndroidStudio的两种方式

    兼容模式下的bug

    使用IDE的打包:
    将Eclipse代码导入到AndroidStudio的两种方式

    在兼容模式只打主工程的,库工程没有加入到apk中,导致无法正常运行。
    截止到1.0.2,AndroidStudio依然存在这个bug。
    因为这个bug的存在,你在兼容模式可以使用AndroidStudio编程,打包时开启Eclipse。

    OK,兼容模式介绍到这里。 我们开始介绍主角: Android Gradle Project。 这里必须说明的是Google更希望我们使用这种方式,如果没有什么团队的压力,还是使用这种吧。

    使用新的目录结构

    转换目录结构

    • 打开Import

      • 新用户:
        将Eclipse代码导入到AndroidStudio的两种方式
      • 老用户: File-->Import Project
        将Eclipse代码导入到AndroidStudio的两种方式
    • 直接找到原有的Eclipse工程

      • 单一工程直接导入即可。
      • 有库工程的需要注意,导入一定要指向主工程,而不是整个项目的目录。指向项目目录是无法进行转换的。
        将Eclipse代码导入到AndroidStudio的两种方式
    • 指定目标路径
      将Eclipse代码导入到AndroidStudio的两种方式
    • 这个地方需要详细说一下
      将Eclipse代码导入到AndroidStudio的两种方式
      这里上面两个选项暂且不说,勾选上。
      最后一项提一下: 将Module名创建为camelCase风格。
      驼峰式,这个搞Java的都会熟悉,camelCase表示首字母小写的驼峰式风格,CamelCase表示首字母大写的驼峰式风格。
      不勾选这个选项意味着你原先的工程名是啥样,转换完就是啥样。
      这里的AndroidStudio会去分析Eclipse工程下的. project文件,里面的name就是你在Eclipse中看到的工程名。(没有此文件时会使用此工程的文件夹名。)
      将Eclipse代码导入到AndroidStudio的两种方式
      当然也有例外,比如countly-sdk-android转换完就成了countlysdkandroid,下划线我就不知道了,这个没有再仔细研究规则,不过CamelCase会保持正常。
      这里我比较喜欢让Module首字母大写(不知道为啥看这首字母小写难受),原来的工程就是CamelCase风格,我就不勾选了。
      当然如果这里没注意直接转换成了camelCase但最后又不喜欢怎么办? 可以看后面《如何更改Module名称》部分。
      OK,配置完点击Finish即可

    • 之后需要经过一段时间的转换。成功后可以看到import-summary.txt,这个文件非常有用,后面会讲到。
      将Eclipse代码导入到AndroidStudio的两种方式

    到这里,你的应用其实已经可以通过AndroidStudio正常编译,你也可以写代码去了。
    但我希望你还能继续看下去,因为这个成功后弹出来的import-summary.txt写了些很重要的东西。

    带你看懂import-summary.txt

    Manifest Merging

    Your project uses libraries that provide manifests, and your Eclipse
    project did not explicitly turn on manifest merging. In Android Gradle
    projects, manifests are always merged (meaning that contents from your
    libraries' manifests will be merged into the app manifest. If you had
    manually copied contents from library manifests into your app manifest
    you may need to remove these for the app to build correctly.

    这段应该都能看懂,无非就是说你Library的清单文件有效啦。
    不用手工拷贝到主工程的清单文件中了。以前拷贝过的,要移除才能正确build。

    Ignored Files(这个最重要)

    之所以说这部分重要,是因为AndroidStudio通过这段文字告诉了你,它导入的时候忽略了哪些文件。
    也就是说这部分内容,它没给你拷进来,你要是不去自己拷贝,那这部分你新Gradle工程里面就没有了。
    这里选一些典型的ignore文件来看一下:

    From SDK:* proguard-project.txt* proguard.cfg
    From UI:* cert\* cert\cert
    From CrosswalkWebview:* ant.properties* build.xml
    From SlidingMenuLibrary:* LICENSE.txt* pom.xml

    给上面的忽略文件分分类:

    • 确实不需要的:混淆文件、ant的ant.properties与build.xml、maven的pom.xml。
    • 需要再次声明的: LICENSE.txt。不声明属于盗版侵权啊~~
    • 自定义文件夹和文件:cert。 这个文件夹是自己创建的,不属于Android规定的目录,所以AndroidStudio没给拷贝。

    需要留意你的Ignored Files部分,并根据自己的需要手工拷贝到新工程中。

    Replaced Jars with Dependencies & Replaced Libraries with Dependencies

    在Replaced Jars with Dependencies部分,有如下文字:

    android-support-v4.jar => com.android.support:support-v4:21.0.3
    gson-2.3.jar => com.google.code.gson:gson:2.3
    joda-time-2.6.jar => joda-time:joda-time:2.6

    可以看到jar被替换了。 可以看到工程里面没有了当初添加的jar包。那么jar包去哪了呢?
    暂时先留个悬念。
    我们继续来看 Replaced Libraries with Dependencies部分

    ActionbarLibrary =>
        com.actionbarsherlock:actionbarsherlock:4.4.0@aar
        com.android.support:support-v4:21.0.3

    可以看到ActionbarSherlock被替代为了aar(Android ARchive ,jar : Java ARchive)。关于aar的介绍可以看这里,本文就不再详细展开了。

    可以看到的是Library和jar都被替换了,可是你在当前工程里再也找不到了。这是为什么?

    跟我来看下面的操作:

    • 在Module上右击,选择Open Module Settings
      将Eclipse代码导入到AndroidStudio的两种方式
    • 切换到Dependencies
      将Eclipse代码导入到AndroidStudio的两种方式
    • 点击右侧的加号添加,选择Library dependency
      将Eclipse代码导入到AndroidStudio的两种方式
    • 可以看到这个界面:
      将Eclipse代码导入到AndroidStudio的两种方式

    OK,到这里就可以知道真相了,在AndroidStudio中你可以添加在线的库或jar包,添加完成后你就可以和平时一样正常使用。
    而你的同事在打开这个工程的时候会即时下载,保证你们的代码都能正常运行。
    这也是为什么当你的工程转换完毕后,有些jar和Library消失的原因。他们被转成在线的了。

    Moved Files

    这部分在讲你的目录结构变化,基本上可以认为他在废话,没什么看的必要了。

    Next Steps & Bugs

    呵呵,略过吧

    最后一句

    This import summary is for your information only, and can be deleted
    after import once you are satisfied with the results.

    你一旦觉得自己的工程没问题了,就可以把这个文件删除了。

    导入AndroidStudio工程注意

    通过上面的步骤,你的项目已经转换了目录结构,这时候你可以提交代码,供其他同事下载使用了。
    其他同事把代码下载下来,他们所需要引入的是一个Android Gradle Project了。

    • 新用户

      • 如果项目中有.idea之类的IntelliJ的文件,开始选择的应该是Open an existing Android Studio project,而不是Import Non-Android Studio project。
      • 如果你下载下来的代码里面只有gradle的文件,即使还是要选Import Non-Android Studio project。
    • 老用户依然使用: File-->Import Project

    这里需要提醒的是,对于含有库工程的项目而言, 需要指定整个项目的目录,仅仅指定主工程是没用的。

    到这里我们需要停下来总结一下:

    • 如果你导入的是一个Eclipse工程,那么指定主工程目录。AndroidStudio通过分析来帮你完成转换。
    • 如果你导入的是一个AndroidStudio工程,那么指定整个项目的目录 。

    附: 如何更改Module名称

    在Module上右键refactor--> rename ,当然可以看到有快捷键shift + F6, 这样就可以改变Module的名称了。
    但是还没有结束,这样没有更改引用这个Module的地方。
    如果他是一个库工程,你还需要继续去查看引用它的地方并进行修改。主要是其他Module的Gradle文件。

    Tips:
    选中Module,ctrl+c即可复制工程名,在相关Gradle文件中ctrl+v替换成新的名称即可。

    最后,别忘了,settings.gradle,这里include的module名称也需要更改。 至此,算是修改结束。

    一切修改完毕,点击弹出提示中的Sync Now,让工程重新构建
    将Eclipse代码导入到AndroidStudio的两种方式
    构建结束后就一切正常了。
    当然你如果对文件夹的名称也看着不顺眼,也可以去修改文件夹名称,改变后记得重新导入即可。

    总结

    以上就是两种导入的方式的介绍,总体来说第一种适合无奈的时候提前熟悉AndroidStudio,第二种则是更推荐的方式。
    无论采用哪一种,都希望你能尽快的接触AndroidStudio,体验它的强大。

    声明

    欢迎转载,但请保留文章原始出处
    作者:GavinCT 
    出处:http://www.cnblogs.com/ct2011/

    展开全文
  • 在之前的工作中,由于不仅要分析和调试Android系统源码中Framework以及Telephony部分的Java代码,而且还要兼顾RIL和Modem相关的C/C++代码。然而Android Studio对于C/C++代码的支持并不是很好,...

    转载请注明出处:https://blog.csdn.net/turtlejj/article/details/83857897,谢谢~

     

            在之前的工作中,由于不仅要分析和调试Android系统源码中Framework以及Telephony部分的Java代码,而且还要兼顾RIL和Modem相关的C/C++代码。然而Android Studio对于C/C++代码的支持并不是很好,所以我一直使用的是Source Insight来阅读代码。

            后来由于工作的调整,对于C/C++代码的关注少了很多,因此转而使用Android Studio来阅读代码。不得不说,Android Sutdio对于Android的开发跟调试要优于Source Insight太多太多。不仅可以快速的查找到想要查找的类和方法,更可以对系统进程打断点进行单步调试,从而在遇到问题时,不再需要进行“对出问题的模块加入debug log -> 重新编译模块 -> adb push -> 复现问题 -> 抓log -> 重新分析log”的操作,极大地提升了分析问题的效率。

            本篇文章会讲解如何使用Android Studio导入系统源码。关于如何使用Android Studio对系统源代码进行单步调试,请看文章《使用Android Studio对Android系统源码进行单步调试》。

     

    使用Android Studio导入系统源码

            在这里我们默认大家已经下载好了Android系统的源代码,关于如何下载,网上有很多详尽的教程,我这里就不再过多的赘述,不会的同学可以自行百度。

            PS: 使用Android Studio导入系统源代码需要对代码进行一定的编译操作,如果有些同学使用的是Windows系统,可以尝试在Cygwin下进行编译,或者将在Linux下编译生成的三个产物拷贝到Windows的源代码根目录下,也可以起到一样的效果。

            进入正题,在下载好代码之后,我们需要对代码进行编译操作,对于目前比较新的Android 8.0以及9.0版本,我这里推荐使用Ubuntu 16.04的版本进行编译,编译过程中一般不会遇到什么问题 (使用Ubuntu 18.04的话,可能会遇到一些坑,我在《Ubuntu 18.04 编译安卓系统源码 及 adb连接手机遇到的问题详解》里列举了所有我遇到的问题以及解决方法,有需要的同学可以参考)。

            这里需要执行以下四条命令:

            1. "source build/envsetup.sh" (source可以用 . 代替,即". build/envsetup.sh")

            2. "lunch",并选择要编译的项目

            3. "make idegen -j4" (这里的 -j4 表示用4线程来编译,可以不加)

            4. "sudo development/tools/idegen/idegen.sh" (我的电脑需要管理员权限才能执行成功,所以我一般会在前面加上"sudo")

     

            下面进行分布讲解:

            1. 进入系统源码的根目录(即可以看到frameworks、kernel等等文件夹的那一级目录),执行". build/envsetup.sh"命令:

    xxxxxx@xxxxxx-Ubuntu:~/code/android$ . build/envsetup.sh 
    including device/generic/mini-emulator-arm64/vendorsetup.sh
    including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
    including device/generic/mini-emulator-x86_64/vendorsetup.sh
    including device/generic/mini-emulator-x86/vendorsetup.sh
    including device/qcom/common/vendorsetup.sh
    including vendor/qcom/proprietary/common/vendorsetup.sh
    including sdk/bash_completion/adb.bash

            2. 而后,继续执行"lunch"命令,并选择你想要编译的那个项目,这里我选了2,即编译 aosp_arm64-eng:

    xxxxxx@xxxxxx-Ubuntu:~/code/android$ lunch
    
    You're building on Linux
    
    Lunch menu... pick a combo:
         1. aosp_arm-eng
         2. aosp_arm64-eng
         3. aosp_mips-eng
         4. aosp_mips64-eng
         5. aosp_x86-eng
         6. aosp_x86_64-eng
    
    Which would you like? [aosp_arm-eng] 2
    
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=8.1.0
    TARGET_PRODUCT=aosp
    TARGET_BUILD_VARIANT=arm64-eng
    TARGET_BUILD_TYPE=release
    TARGET_PLATFORM_VERSION=OPM1
    TARGET_BUILD_APPS=
    TARGET_ARCH=arm64
    TARGET_ARCH_VARIANT=armv8-a
    TARGET_CPU_VARIANT=kryo300
    TARGET_2ND_ARCH=arm
    TARGET_2ND_ARCH_VARIANT=armv7-a-neon
    TARGET_2ND_CPU_VARIANT=cortex-a9
    HOST_ARCH=x86_64
    HOST_2ND_ARCH=x86
    HOST_OS=linux
    HOST_OS_EXTRA=Linux-4.15.0-38-generic-x86_64-with-Ubuntu-18.04-bionic
    HOST_CROSS_OS=windows
    HOST_CROSS_ARCH=x86
    HOST_CROSS_2ND_ARCH=x86_64
    HOST_BUILD_TYPE=release
    BUILD_ID=OPM1.171019.026
    OUT_DIR=out
    AUX_OS_VARIANT_LIST=
    ============================================

            3. 前面两步是对编译环境进行配置,接下来执行"make idegen -j4",并等待(屏幕会输出很多log,这里只贴出最后部分):

    xxxxxx@xxxxxx-Ubuntu:~/code/android$ make idegen -j4
    ......
    
    [100% 765/765] Install: out/host/linux-x86/framework/idegen.jar
    
    #### make completed successfully (03:16 (mm:ss)) ####

            4. 看到以上输出以后,执行"sudo development/tools/idegen/idegen.sh",并继续等待,这个过程可能比较长,不要着急

    xxxxxx@xxxxxx-Ubuntu:~/code/android$ sudo development/tools/idegen/idegen.sh
    [sudo] xxxxxx 的密码: 
    Read excludes: 9ms
    Traversed tree: 127108ms

            完成以上四个步骤之后,会发现在源码根目录下出现了三个新的文件(也有可能是两个)

            1. android.iml (记录项目所包含的module、依赖关系、SDK版本等等,类似一个XML文件)

            2. android.ipr (工程的具体配置,代码以及依赖的lib等信息,类似于Visual Studio的sln文件)

            3. android.iws (主要包含一些个人的配置信息,也有可能在执行上述操作后没有生成,这个没关系,在打开过一次项目之后就会自动生成了)

     

            "android.iml"和"android.ipr"一般是"只读"的属性,我们这里建议大家,把这两个文件改成可读可写,否则,在更改一些项目配置的时候可能会出现无法保存的情况,执行如下两条命令即可。

    sudo chmod 777 android.iml
    sudo chmod 777 android.ipr

     

            如果你的电脑性能足够好(内存大于16G,代码下载在SSD上),那么可以直接打开Android Studio,点击"Open an existing Android Studio project"选项,找到并选中刚刚生成的"android.ipr"文件,点击OK,就可以开始导入项目了。 第一次导入,这个过程可能会持续很久,几十分钟或者超过一个小时。不过成功之后,以后再打开项目就会快很多了。

            如果电脑性能一般的话,我建议,可以在导入项目前,手动对"android.iml"文件进行一下修改,可以使我们导入的时间尽可能的缩短一些。

            首先,要保证"android.iml"文件已经添加了"可写入"的属性(上文中已经介绍了如何修改文件属性)。

            接下来,使用文本编辑器打开"android.iml"文件,并执行以下修改(仅代表我的个人习惯,也可以根据同学们的喜好自己调整):

            1. 搜索关键字"orderEntry",我一般会将所有带有这个关键字的标签项全部删除,仅保留以下三行,大概如下

    ......
        </content>
        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="inheritedJdk" />
        <orderEntryProperties />
      </component>
    </module>

            2. 搜索”excludeFolder“关键字,对这里进行一些修改,将我们不需要看的代码Exclude掉。通过这个步骤,能极大地提升第一次加载项目的速度。

            等项目加载完成后,我们还可以通过Android Studio对Exclude的Module进行调整,所以也不用害怕这里Exclude掉了有用的代码,或少Exclude了一部分代码,在项目加载完以后再进行调整就行了。

            以下是我的配置,大家可以参考(由于我比较关注Framework以及Telephony相关的代码,所以重点保留了这两部分,而其他一些如kernel、bootloader的代码,我就Exclude掉了,同学们也可以根据自己的需求来进行修改)。

    <excludeFolder url="file://$MODULE_DIR$/.repo" />
    <excludeFolder url="file://$MODULE_DIR$/art" />
    <excludeFolder url="file://$MODULE_DIR$/bionic" />
    <excludeFolder url="file://$MODULE_DIR$/bootable" />
    <excludeFolder url="file://$MODULE_DIR$/build" />
    <excludeFolder url="file://$MODULE_DIR$/compatibility" />
    <excludeFolder url="file://$MODULE_DIR$/dalvik" />
    <excludeFolder url="file://$MODULE_DIR$/developers" />
    <excludeFolder url="file://$MODULE_DIR$/developers/samples" />
    <excludeFolder url="file://$MODULE_DIR$/development" />
    <excludeFolder url="file://$MODULE_DIR$/device/google" />
    <excludeFolder url="file://$MODULE_DIR$/device/sample" />
    <excludeFolder url="file://$MODULE_DIR$/docs" />
    <excludeFolder url="file://$MODULE_DIR$/external" />
    <excludeFolder url="file://$MODULE_DIR$/flashing-files" />
    <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
    <excludeFolder url="file://$MODULE_DIR$/kernel" />
    <excludeFolder url="file://$MODULE_DIR$/libcore" />
    <excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
    <excludeFolder url="file://$MODULE_DIR$/out" />
    <excludeFolder url="file://$MODULE_DIR$/pdk" />
    <excludeFolder url="file://$MODULE_DIR$/platform_testing" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilts" />
    <excludeFolder url="file://$MODULE_DIR$/shortcut-fe" />
    <excludeFolder url="file://$MODULE_DIR$/test" />
    <excludeFolder url="file://$MODULE_DIR$/toolchain" />
    <excludeFolder url="file://$MODULE_DIR$/tools" />

            完成之后,按照上面说的步骤,使用Android Studio选中"android.ipr"打开项目即可。

     

    优化Android Studio的配置

            在打开系统源代码后,我们还可以对Android Studio进行一些配置,使得我们可以更好的进行代码阅读。

        1. Exclude不需要的代码目录

            点击"File -> Project Structure...",中间的窗口选择"android"(首字母小写的那一个),在弹出的窗口中左边栏中选择"Modules",而后在右边的窗口中选择"Sources"。在这里我们可以看到项目的所有代码目录,我们可以选中不需要的module,并点击上面的"Excluded"按钮,当被选中的目录变为橙色,即表示完成Exclude操作;如果想要取消对某代码目录的Exclude操作,选中该目录,再次点击"Excluded"按钮,等待目录变为蓝色即可。

     

        2. 选择项目的SDK版本

            点击"File -> Project Structure...",中间的窗口选择"android"(首字母小写的那一个),在弹出的窗口中左边栏中选择"Modules",而后在右边的窗口中选择"Dependencies"。在下拉菜单中选择系统源代码相应的SDK版本(如:8.0的代码就选择API 26,9.0的版本就选择API 28)。

            如果在下拉菜单中没有找到相应的SDK版本,就打开Android Studio自带的SDK Manager下载即可。

            PS: 这步非常关键,如果这里不选择Android API,而是使用JDK 1.8之类的话,无法进行系统源码的单步调试。

     

        3. 指定项目的minSdkVersion

            在阅读源代码的时候,经常会看到类似的这种错误"Field requires API level xx (current min is 1): android.xx.xx",这是由于我们只对项目指定了targetSdkVersion,但没有指定minSdkVersion。

            解决办法如下:

            点击"File -> Project Structure...",在弹出的窗口中左边栏中选择"Modules",中间的窗口选择"Android"(首字母大写的那一个),而后在右边的窗口中选择"Structure"。如下图所示,将这三行配置改为你自己的代码目录即可(不一定非要使用这个AndroidManifest.xml文件以及res和assets目录,你可以选择你喜欢的任意一个),完成后点击Apply或者OK。

            接下来,找到刚刚选择的那个AndroidManifest.xml,打开并在manifest标签下的任意一行添加如下代码并保存即可

    <uses-sdk android:minSdkVersion="26" />

             这里的数字根据你源代码的版本来填写,比如你导入的是8.0的源代码,就写26;9.0的源代码就写28,以此类推。由于是系统源代码,所以minSdkVersion与前面第2步中设置的Android API版本保持一致即可。

        4. 增加打开代码文件的数量以及对代码标签页显示的优化

            Android Studio默认只能打开10个代码文件,且文件打开多了以后显示不开的文件还会被隐藏,需要点击最右边的箭头才能查看。而最致命的是,如果不小心修改了某个文件,在标签页上,不会有任何的提示

            其实,我们可以通过修改设置改变这种情况,从而使得我们更好的阅读代码。

            点击"File -> Settings...",在弹出的窗口中左边栏中选择"Editor -> General -> Editor Tabs",而后在右边的窗口中修改三个选项:

            1. 取消勾选"Show tabs in single row"    ->   使得文件可以在多行进行显示,而不会被隐藏

            2. 勾选"Mark modified tabs with asterisk"    ->    在标签栏中,对被修改但尚未保存的文件加上一个星号进行提示

            3. 将"Tab limit"后面的数字修改为你希望最多同时打开文件的数量,比如"20"

     

            修改后效果如下:

            以上的修改,都是我在阅读Android源代码时遇到的不便,因而总结出来的解决方法,希望能对大家有所帮助。

    展开全文
  • android源代码导入android studio的方法

    时间匆匆,我也毕业开始工作有两个月的时间了。由于工作关系开始研究安卓源码相关的内容。刚开始准备采取单独编译某个系统app,然后替换对应system分区priv-app中的内容,而不用重复烧录的方法。但是经过试验这种方法没有行得通。不知道哪位大神有没有避免重复烧录的方法,路过此贴,还望留言告知。
    源码的代码量比较大,阅读代码是个很痛苦的事情,尤其是源码这么复杂的东西。可以使用android studio打开单个的app然后慢慢啃,但是源码中通常会有多个app编译成一个app比如电话这部分就包括Dialer,contact,telephony等几个部分编译而成,通常需要阅读这几个部分,如果用android studio打开多个项目,这样一般电脑估计就会有点小卡,这是绝对不能忍的。所以经过一番探索,发现了导入整个安卓项目的方法,介绍如下:

    一、源码导入studio

    安卓源码本身带有能够生成android studio的配置文件的编译项,只需执行如下几步便可以轻松将整个源码项目导入android studio了

    1. 源码编译一次,生成out目录下的完整目录

    2. 在源码根目录下执行 mmm development/tools/idegen/

    3. 执行 ./development/tools/idegen/idegen.sh

    4. 可以修改development/tools/idegen/下的android.iml文件,根据自己的需要选择一些需要导入的文件,配置如下:`

        <SourceFolder url=""/>  //里面的内容为要导入的内容
        <excludeFolder url=""/> //排除在外的内容
        //还可以使用一些通配规则来过滤一些内容
    1. 使用android studio打开根目录下的android.ipr文件,等待一会就可以完成导入了

    二、源码调试

    1、配置SDK和JDK
    2、修改依赖
    3、添加framework

    展开全文
  • 导入的项目怎么老是不能运行 如图片 该怎么做 我是菜鸟求大神帮帮忙
  • 将Android代码导入Intellij IDEA (本文内容同样适用于Google新推出的Android Studio) 以前开发Android一直用的是Eclipse。虽然从很多方面来讲,Eclipse都是一款不错的IDE,对java、Android以及其他一些...

    将Android源代码导入Intellij IDEA

    (本文内容同样适用于Google新推出的Android Studio

    以前开发Android一直用的是Eclipse。虽然从很多方面来讲,Eclipse都是一款不错的IDE,对java、Android以及其他一些开发需求的支持上都很好,但巨大的资源占用,缓慢的启动过程(特别是加载Android相关插件和sdk),时不时的crash一下,很难让人对其产生好感。直到后来了解并试用了Intellij IDEA,才不得不感概:这才是我要找的IDE。难怪网上都称之为“神器”。IDEA的社区版(也就是CE)版是免费的,基本上日常开发的功能都有。最新的版本是13,虽然以前的版本对Android对支持不是很完善(毕竟不是google官方支持的),但最新的版本已经很不错了,和Eclipse比起来有过之而无不及,开发调试都没有问题。

    之前用Eclipse的时候,会把Android源代码也导入到里面,有Android源代码在手,对开发、调试都有很大的帮助。Eclipse导入Android源代码很方便,一个重要原因在于Android源代码里提供了Eclipse的.classpath文件(位置在$Android_SRC/development/ide/Eclipse/.classpath),把大部分Android的java代码都放进去了。不过IDEA就没这么幸运了,Android没提供idea的相关配置,虽然有个intellij的文件夹,但里面的东西似乎没有用,而很久没更新过了。所以若想把Android代码导入IDEA,似乎只能手工操作,太麻烦了,而且也不符合我们coder“用code来解决问题”的理念。

    所以我分析了一下IDEA的module文件(module相当于一个project里的sub project),发现虽然和.classpath格式不同的,但大部分需要的信息在.classpath里都能找到,所以完全可以将.classpath文件转成IDEA需要的iml文件。

    这件事,一个XSLT就可以搞定。

    XSLT文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
          <module type="JAVA_MODULE" version="4">
              <component name="NewModuleRootManager" inherit-compiler-output="true">
                  <exclude-output/>
                  <content url="file://$MODULE_DIR$">
                      <xsl:apply-templates select="classpath/classpathentry" />
                  </content>
                  <orderEntry type="inheritedJdk"/>
                  <orderEntry type="sourceFolder" forTests="false"/>
              </component>
          </module>
      </xsl:template>
    
      <xsl:template match="classpathentry">
          <sourceFolder url="file://$MODULE_DIR$/{@path}" isTestSource="false"/>
      </xsl:template>
    </xsl:transform>
    

    导入步骤

    有了上面的xslt,把Android源代码导入IDEA就很容易了

    1. 找一个支持xslt转换的工具(很多,如果嫌麻烦可以用我写的这个简单的python脚本
    2. 用上面的xslt将Android的.classpath文件($Android_SRC/development/ide/Eclipse/.classpath)转成iml文件,再将生成的文件保存到Android源代码到根目录(一定得是根目录,文件名字可以随便取,只要扩展名是.iml就可以)
    3. 在IDEA里,通过”import moudle”将刚才保存的.iml文件导入到进去,就可以在IDEA看到Android的Java代码了(见下图)

    import android source into idea

    导入以后,无论是直接查看代码还是调试跟入,都没有问题

    附Python XSLT转换脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #!/usr/bin/python
    
    import lxml.etree as et
    import sys
    
    USAGE = sys.argv[0] + " <template> <doc>"
    
    if len(sys.argv) < 3:
        print USAGE
        sys.exit(-1)
    
    template_path = sys.argv[1]
    doc_path = sys.argv[2]
    
    template_dom = et.parse(template_path)
    doc_dom = et.parse(doc_path)
    
    transform = et.XSLT(template_dom)
    transfomed_dom = transform(doc_dom)
    
    print(et.tostring(transfomed_dom, pretty_print=True))
    
    展开全文
  • github是一个存放众多开源项目的平台,对于我们android开发来说,看别人的代码是学习的最好方式。 前面的文章我已经写了一个Handler、Looper、Message的最简单使用文章(附源码),这篇文章我针对这个项目来讲一下,...
  • Android 的源码代码量是非常大的,也有多种代码编辑器来供我们选择来去阅读Android源码,虽然在 Eclipse 和 SourceInsight 上阅读 Android 源码也能带来很好的体验,但习惯于用 Android Studio 来作为应用开发工具的...
  • 做源码开发,不像开发纯app,调试起来有些麻烦,但还是可以实现的,可以整个源码导入AS,实现打断点调试 我这边使用的是Android Studio 2.3 要调试的源码是Android9.0 因为在导入源码时需要消耗大量内存,...
  • 将Android源码导入到studio中,方便开发和调试。
  • 在这里我最想说的,android studio默认主题样式,太low。不适合长时间写代码,看代码颜色不好识别,相对于背景的代码样式,我都不想吐槽了。还是网上下载主题代码样式导入样式。主题代码样式网站:...
  • 简介 ... 由于怕博文丢失就拷一份过来,很实用 偶然发现一个神器idegen,通过它我们可以用Android Studio阅读整个系统源码,...话不多说直接来看怎么使用idegen,导入系统源码到Android Studio。 见证奇迹的时候 Wi...
  • 一、概述 最近正在实习公司迭代一个app,项目工程比较大,依赖的第三方服务、第三方库较多,比较复杂。因为公司项目一直是在ec上写的,没有...同时也能够练习一下“怎样ec项目导入到as”。 二、ec项目打
  • 向android studio导入android源生app
  • 写好的eclipse代码导入studio中; 2。... ... 倒了一天,老员工手把手教了两遍,今天终于成功了,现在的心情就是感觉都要开心的哭了,废话少说,赶紧记录下这开心的时刻。 介绍一下:我得原eclipse代码调用了C++的...
  • 从github上下载了一个开源...存放地址:D:\android_new\MyProject\MoneyTextView在导入前,要更改一些参数:第一个文件:MoneyTextView\build.gradledependencies { classpath 'com.android.tools.build:gradle:0.6.+'
  • 准备开始重操那两年的旧业,后悔之前在上家公司做Amlogic和...关于Android Studio对于应用层App开发的技巧和配置前面我写过文章分析的,这里不再解释说明,具体查看我的这一片博文《Android Studio入门到精通 》。
  • 1.拉取全部代码,先进行全部编译 2.source setenv.sh 3.编译idegen:mmm development/tools/idegen/  4.development/tools/idegen/idegen.sh  执行后会提示  Read excludes: XXms   Traversed tree: ...
  • ijkplayer导入android studio并运行(导入工程项目的方法) 1 在本地AS随便建立一个工程项目(如My Appplication),然后其生成的文件夹.gradle、gradle及文件build.gradle、gradle.properties  替换到C:\cygwin\...
1 2 3 4 5 ... 20
收藏数 92,210
精华内容 36,884
热门标签
关键字:

怎么将代码导入android