如何手动添加Android Dependencies包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何手动添加Android Dependencies包相关的知识,希望对你有一定的参考价值。
一、修改android Studio(以下简称AS)的内存配置因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件
并将其作为要使用的SDK的Java SDK。
三、生成导入AS所需配置文件(*.ipr)
①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)
②检查out/host/linux-x86/framework/目录下是否有idegen.jar
如果idegen.jar不存在,执行:
mmm development/tools/idegen/
在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。
③执行
development/tools/idegen/idegen.sh
等待出现类似下面的结果:
Read excludes: 5ms
Traversed tree: 44078ms
这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件
Tips:
AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
删除掉所有不需要的module-library项
这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.
④在AS中打开源码根目录下新生成的android.ipr
如果在导入时AS出现
则建议按照其给定的解决方法来解决(网址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit)
四、解决源码中跳转错误问题
①为当前工程设置正确的SDK和JDK
②设置'Modules'的依赖
先将所有依赖删掉(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
点击指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来.如:
注:推荐把frameworks和external这两个移到最上面,这样在代码跳转时会优先从这两个文件夹下查找,而不是在Android.jar中查找。
其它版本的代码在添加frameworks时可能会显示成:
没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.
如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.
五、DEBUG源码
可以通过给刚导入的工程在'Modules'中添加'Android Framework'来让AS将它作为一个Android工程,从而方便调试代码.
可以来添加Android Framework支持.
在代码中加断点,然后选择'Run'->'Attach debugger to Android process'
在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.
六、其它
代码中很多地方提示Call requires API Level x.... 出现这个问题是因为AS将工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.
只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。
也可以考虑使用build.gradle来解决该问题。 参考技术A 不需要手动,只需要将jar文件放到libs文件夹下,eclipse会自动添加。本回答被提问者采纳
React Native 如何手动添加 index.android.js?
【中文标题】React Native 如何手动添加 index.android.js?【英文标题】:React Native how to add index.android.js manually? 【发布时间】:2017-10-07 11:21:40 【问题描述】:我是 React Native 的新手,我正在关注针对初学者的视频教程。我正在 Windows 10 上开发并使用 React Native 版本 0.49.1 。在本教程中,我关注的是两个索引文件:index.android.js 和 index.ios.js。 据我了解,这些文件现在与 index.js 文件无关, 我是从被问到的question 那里得到的。 尽管如此,我仍然想使用两个单独的索引文件,但我不知道该怎么做——我必须删除 App.js 文件和 index.js 文件吗? 如果是这样,index.android.js 和 ios 文件的内容应该是什么? 我将不胜感激有关如何执行此操作的解释或快速指南。 在此先感谢:)
【问题讨论】:
您的新项目是使用react-native init
或create-react-native-app
命令创建的吗?
我使用了 react-native init
【参考方案1】:
对于使用react-native init
创建的项目,仍会生成一个index.js
文件,最初看起来像这样:
import AppRegistry from 'react-native';
import App from './App';
AppRegistry.registerComponent('YourProjectName', () => App);
在同一目录中手动添加App.ios.js
和App.android.js
将允许您为每个平台包含唯一代码,因为它遵循platform-specific extensions 的模式。但是,仅拥有其中一个是不够的。您需要同时包含两者,否则代码拆分将不会生效(并且将默认为 App.js
中存在的任何内容)。
所以要回答您的问题,是的,您需要删除 App.js
并将其替换为 android.App.js
和 ios.App.js
。然后重新启动模拟器或设备的 React Native 打包程序终端窗口以检测更改。
【讨论】:
您好,感谢您的回答,我会尝试一下并稍后更新:)以上是关于如何手动添加Android Dependencies包的主要内容,如果未能解决你的问题,请参考以下文章
React Native 如何手动添加 index.android.js?
如何在模块(Android Studio)中使用 com.android.databinding?