如何将库项目(如Sherlock ABS)添加到Android Studio?
(不是旧的基于Eclipse的ADT捆绑包,而是新的Android Studio.)
我有一个示例项目,具有以下设置:
/root
+ Pure Java Lib
+ Android Test Lib
+ Android Test Project
Run Code Online (Sandbox Code Playgroud)
" 测试项目 "依赖于" 测试库 ",最后一个依赖于" 纯Java库 " 编译项目并启动此设置工作正常.
我现在正在考虑导入我之前的Eclipse工作区并使用Android studio,问题是项目设置不同,我想保持这种方式.
例如,如果要使用前面的示例:
/root
+ Android Test Lib
+ Android Test Project
/Some Other folder (another repository for example)
+ Pure Java Lib
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多配置,但是我找不到引用父文件夹范围之外的项目的方法(示例中的" root ").
在许多平台/模块中,你可以使用'..'在文件夹中向上移动,但这对我不起作用,也许我用错了.
有谁知道Gradle如何实现这一目标?
UPDATE
我会尝试更通用:
/C:/
/Project A
+ Module 1 - Pure Java
+ Module 2 - Android Test Lib
+ Module 3 - Android Test Project
/Project B
+ Module 1 …Run Code Online (Sandbox Code Playgroud) 这是关于在Eclipse中向Android项目添加第三方库(JAR)的两部分问题.
问题的第一部分是,当我尝试将第三方JAR(库)添加到我的Android项目时,我首先得到的问题是
解析XML时出错:未绑定前缀
因为我正在尝试使用该JAR中的一个类(并且需要以某种方式定义的前缀).这是怎么回事?
其次,(在解决之后 - 下面给出了答案),我的应用程序无法在Android上运行,我通过调试器(LogCat)发现我尝试使用的类不存在.
引起:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView ...
为什么,当我在Eclipse中没有编译或链接器错误时,它是否在模拟器上出现此问题?
这两个问题是修辞性的,我将在下面自己回答这些问题.这个论坛中的其他帖子可以解决问题,其他地方也有讨论,但我觉得我可以更明确地帮助下一个人来.
我想在我的Android应用程序中添加外部库https://github.com/foursquare/foursquare-android-oauth(我使用Android Studio,lib作者为Eclipse提供的说明不适用于Android Studio).
我已经尝试用maven做了,所以在File-> Project Structure-> Dependencies中我添加com.foursquare:foursquare-android-nativeoauth-lib:1.0.0但是Gradle Sync失败了:
Error:Failed to find: com.foursquare:foursquare-android-nativeoauth-lib:1.0.0
Run Code Online (Sandbox Code Playgroud)
当我尝试构建我的应用程序(没有修复上面的错误,因为我不知道如何)我得到:
Error:A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugCompile'.
> Could not resolve com.foursquare:foursquare-android-nativeoauth-lib:1.0.0.
Required by:
ForSquaresOnly:app:unspecified
> Could not parse POM http://jcenter.bintray.com/com/foursquare/foursquare-android-nativeoauth-lib/1.0.0/foursquare-android-nativeoauth-lib-1.0.0.pom
> Could not find any version that matches com.foursquare:parent:1.0.0.
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以导入这个lib?我可以简单地将源代码复制粘贴到我的源代码中或从中创建JAR吗?
顺便说一句:如果遇到问题,请看这个问题(导入后我遇到了这个问题):清单合并失败:使用-sdk:minSdkVersion 14
将Android Studio更新为1.0后,我看到此错误:
错误:库项目无法设置applicationId.applicationId 在默认配置中设置为"com.super.app".
我按照建议更新了Gradle插件,但我不明白如何解决这个问题.
android android-library android-studio android-gradle-plugin
我已经调查了一段时间,可能看到这里最流行的答案与aar和transitive依赖关系有关,但不知何故,我仍然不清楚如何使这个工作.
所以:
我有给定gradle配置的android库:
apply plugin: 'android-library'
apply plugin: 'android-maven'
version = "1.0.0"
group = "com.somepackage"
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
minSdkVersion 10
}
}
repositories {
maven { url 'http://www.bugsense.com/gradle/' }
}
dependencies {
provided 'com.google.android.gms:play-services:+'
provided 'com.android.support:appcompat-v7:+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.bugsense.trace:bugsense:3.6'
compile 'commons-net:commons-net:3.3'
}
Run Code Online (Sandbox Code Playgroud)
然后我将它部署到本地maven repo gradle install.部署库的POM文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sprezzat</groupId> …Run Code Online (Sandbox Code Playgroud) 当我在调试模式下运行我的应用程序时,BuildConfig.DEBUG无效(=逻辑设置为false).我用Gradle来构建.我有一个图书馆项目,我在这里检查.BuildConfig.java在构建调试文件夹中看起来像这样:
/** Automatically generated the file. DO NOT MODIFY */
package common.myProject;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
}
Run Code Online (Sandbox Code Playgroud)
并在发布文件夹中:
public static final boolean DEBUG = false;
Run Code Online (Sandbox Code Playgroud)
在库项目和应用程序项目中.
我试图通过检查一个设置了我的项目类的变量来解决这个问题.该类继承自库并在启动时启动.
<application
android:name=".MyPrj" ...
Run Code Online (Sandbox Code Playgroud)
这导致了另一个问题:我在应用程序类之前运行的DataBaseProvider中使用我的DEBUG变量,并且由于此错误它将无法正常运行.
我刚刚将一个应用程序重构为框架库和应用程序,但现在当我尝试在模拟器中启动应用程序时,我得到以下错误堆栈跟踪:
06-02 18:22:35.529: E/AndroidRuntime(586): FATAL EXCEPTION: main
06-02 18:22:35.529: E/AndroidRuntime(586): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.matthewrathbone.eastersays/com.matthewrathbone.eastersays.EasterSimonSaysActivity}: java.lang.ClassNotFoundException: com.matthewrathbone.eastersays.EasterSimonSaysActivity in loader dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk]
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Handler.dispatchMessage(Handler.java:99)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Looper.loop(Looper.java:123)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.reflect.Method.invoke(Method.java:521)
06-02 18:22:35.529: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-02 18:22:35.529: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-02 18:22:35.529: E/AndroidRuntime(586): …Run Code Online (Sandbox Code Playgroud) java android classnotfoundexception android-library android-fragments
我想使用谷歌的凌空图书馆
我正在使用Android Studio,我知道如何添加.jar库.
但我无法使用volley文件创建.jar库:
在这里我做了什么:(使用Windows 7)
git clone https://android.googlesource.com/platform/frameworks/volley
cd volley
android.bat update project -p . --target android-19
ant.jar jar
Run Code Online (Sandbox Code Playgroud)
我得到了输出:
发生了一个java异常.
怎么了?我怎样才能添加一个非.jar库?
我必须创建一个库,我将在jar文件中导出到客户端.有没有办法用它中的资源创建一个jar?
谷歌adMob有这样一个jar,其中包括资源文件,如R $ layout.class. 这个页面描述了一些方法,但是我无法准确理解我应该如何使用上面的方法将库项目导入应用程序.