- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
问题如标题。有人问过类似的问题 here ,当时唯一的解决方法是将项目发布到本地 Maven 存储库中。
这个问题在 Android Studio 0.5.+ 中是否已修复(如某些人声称的那样)?在其release note有一个声明说“支持模块内容根目录之外的源文件夹”。这是否意味着我们终于可以从项目文件夹之外导入库了?
我尝试了 File->Import Project.. 但它不起作用。
编辑 2:查看最新解决方案的已接受答案(截至 0.8.+)
编辑:
我的项目目录结构只有一个模块main
,看起来像这样
MyApp
main
build.gradle
src
build.gradle
settings.gradle
库项目目录只有一个名为lib
的模块(都是新建库项目时自动生成的)
MyLibrary
lib
build.gradle
src
build.gradle
settings.gradle
以下行被添加到 MyApp/settings.gradle
:
include ':main', '..:MyLibrary'
在MyApp/main/build.gradle
中添加以下内容:
dependencies {
compile project(':..:MyLibrary')
}
结果如下错误:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':main'.
> Configuration with name 'default' not found.
附带说明一下,库项目 MyLibrary
本身可以无错误地编译。问题似乎是 settings.gradle
无法识别库项目结构。
最佳答案
(从 2.1+ 版本开始):
以下是我在项目目录之外共享库源的步骤。我的代码不是普通的 Java 库,而是编译为 Android 模块,但该库模块不包含在主项目中。只要没有代码重复我就可以了,我只需要为所有项目维护一组库代码:
1) 文件->新建项目。为您的库项目命名(这里我使用 LibraryProject
)。继续剩下的步骤,创建一个普通的项目(由于这是一个库,所以我选择了“不添加 Activity ”)
2) 默认情况下,Android Studio 在项目文件夹中创建名为“app”的模块。为防止名称与实际应用程序模块发生冲突,请将模块重命名为其他名称(右键单击左侧面板中的“app”模块->重构->重命名)。
3) 在 build.gradle
在您的库模块文件夹中,更改第一行
apply plugin: 'com.android.application'
到
apply plugin: 'com.android.library'
然后删除“defaultConfig”下的“applicationId”行。此外,由于这是一个库,请删除 xlmns:...
命名空间和 <application ..>
来自 Manifest.xml 的正文也是如此。这就是图书馆部分的全部内容。现在,创建/修改您的主应用程序:
4)如果是新建项目,首先新建项目File->new Project->ApplicationName。
5) 打开 settings.gradle
(每个项目中应该只有一个这样的文件)并包含以下行(注意库模块中缺少的前导分号):
include ':app', '..:LibraryProject:yourLibraryModule'
6) 然后转到文件->项目结构。
7) 在“依赖项”选项卡下,单击右侧的绿色“+”按钮。选择“模块依赖”。选择您的库模块,然后单击“确定”。
您现在应该可以在应用程序中使用库类了。
替代方法如果由于某种原因,上述方法仍然存在问题,您可以尝试以下方法(建议在 here 中):
1) 重复上述步骤 1 至 4。默认情况下,主项目和外部(库)项目如下所示:
/MainProject
+ build.gradle
+ settings.gradle
+ app/
+ build.gradle
+ src/
/LibraryProject
+ build.gradle
+ settings.gradle
+ app/
+ build.gradle
+ src/
2) 像往常一样,将模块名称(在 android studio 中右键单击模块->重构->重命名)重构为不那么容易混淆的名称,例如
/MainProject
+ build.gradle
+ settings.gradle
+ MainModule/
+ build.gradle
+ src/
/LibraryProject
+ build.gradle
+ settings.gradle
+ LibraryModule/
+ build.gradle
+ src/
3) 修改settings.gradle
在 MainProject
:
include ':LibraryModule', ':app'
project(':LibraryModule').projectDir = new File(settingsDir, '../LibraryProject/LibraryModule')
同步项目,您就完成了。
Proguard注意事项
目前您不应该在外部库项目/模块上使用 proguard。相反,您替换以下内容(原始答案 here )
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
debug {
minifyEnabled false
}
}
使用以下内容(在库的 build.gradle
中):
buildTypes {
release {
consumerProguardFiles 'proguard-project.txt'
}
}
在哪里 proguard-project.txt
是包含库项目的 proguard 规则的文件。
关于android - 如何跨多个项目共享单个库源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243269/
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!