我对这整个Gradle和Android Studio支持都很陌生.我已设法使用导出选项将我的android项目转换为gradle.
但我正在寻找一些文档或开始如何将NDK构建集成到gradle构建过程中.
如果可能的话,我还需要某种"后"阶段,将构建二进制文件(.so文件)复制到资产目录.
我有一个示例项目,具有以下设置:
/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) 我在Android Studio(AS)上遇到此错误:
我从零开始创建了一个AS项目,一切都很好.然后弹出一个弹出窗口,并且(如果我没记错的话)说的是:" Android Framework detected
".我按了"是",项目/模块发生了一些变化.之后我得到了上述错误
在我的情况下,问题没有Gradle
关系.它与IntelliJ
/ Android Studio
configuration,.iml
特别是文件有关.我在这里阅读了这篇内容丰富的帖子后才意识到.
我想在Android Studio中包含一个库,但它显示如下错误:
"无法解决:com.lemonlab:expandable-button-menu:1.0.0"
如何解决这个问题?
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
applicationId "ayowes.com.newecampus"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-ptimize.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.lemonlab:expandable-button-menu:1.0.0'
compile files('libs/pinchzoom.jar')
}
Run Code Online (Sandbox Code Playgroud) 我是AndroidStudio AND Gradle的新手。
我从eclipse导入了一个项目,创建了一个模块,然后尝试运行该项目,但是出现了以下错误:
AndroidManifest.xml doesn't exist or has incorrect root tag
Run Code Online (Sandbox Code Playgroud)
我一直在寻找这个以前的解决方案: 如何使用Android Studio和gradle构建android库?
但是这个解决方案对我来说太先进了。
有人可以帮助我以简单的方式理解出了什么问题以及如何解决吗?
谢谢!
在答案之一之后进行更新:
这些是我在构建菜单下拥有的选项:
我正在创建一个基于以下组件的依赖项的Android库.
首先,我想到为我的库创建.jar文件,但后来我发现laulyoit和资源文件不是用jar编译的.然后我决定创建AAR文件.请建议这个是正确的移动还是有其他选择?
现在我遇到了gradle依赖的主要问题.我们正在创建一个付费图书馆,使用Google等仅通过Gradle提供的第三方.现在,因为我正在创建一个AAR文件,所以没有Manifest.xml和Gradle文件,如何将第三方与我自己的代码集成.我们有严格的指示,我们不能告诉图书馆的用户包括要包括的第三方.简单来说,我们不能让用户知道我们的库正在使用哪种第三方.那么有什么办法可以创建一个AAR文件,它也有预编译的gradle依赖项,而不会向用户透露我们正在使用的服务?
更新1
这是我的库的build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g" // 2g should be also OK
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services-vision:10.2.1'
testCompile 'junit:junit:4.12'
} …
Run Code Online (Sandbox Code Playgroud) 对于我的Android项目,我将Gradle与Jackson 2.2.x设置如下:
// build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.1.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 18
}
}
dependencies {
compile 'com.android.support:appcompat-v7:18.0.0'
compile 'com.android.support:support-v4:18.0.0'
compile 'com.google.android.gms:play-services:3.1.36'
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+'
}
Run Code Online (Sandbox Code Playgroud)
我只是使用ObjectMapper
这里:
import com.fasterxml.jackson.databind.ObjectMapper;
// ...
ObjectMapper objectMapper = new ObjectMapper();
try {
Content content = objectMapper.readValue(inputStream, Content.class);
} catch (IOException e) {
e.printStackTrace();
} …
Run Code Online (Sandbox Code Playgroud) 如何将flurry添加到我的android studio项目中,我之前没有这样做过,所以我不完全确定在哪里添加文件?我有FlurryAnalytics.jar
以及如何在我的应用程序中使用?
感谢名单
我正在开发一个Android库.图书馆几乎没有依赖性.我不确定如果开发人员将我的库与我库中已存在的其他依赖项一起使用会发生什么.我试图谷歌搜索,但找不到任何东西.
例如,我在我的库中使用版本X的Volley Library并将其作为gradle包发送.开发人员使用版本Y和我的库导入Volley.
什么是在库(模块,jar或包)中包含依赖项的最佳方法,以便最大限度地减少冲突情况.
最终编辑:
这是一个很长的问题,有几个编辑,我不一定在每一步都做正确的事情.对于那些偶然发现这个问题且在Android Studio中将项目转换为gradle时遇到问题的人,我建议查看问题#16718026中提到的这个存储库并尝试导入它并编译并运行它.一旦有了工作,就可以更容易地看到自己的项目可能出现的问题.
总而言之,这就是我使用Android Studio .2.5将非Gradle Android Studio项目转换为有效的Gradle项目,我自动安装了Gradle 1.6和Gradle Plugin .5.
(1)创建了一个带有图标和活动的新的空白Android Studio项目.注意:我一开始并没有意识到这一点,因为我同时学习Android和Gradle,但Android Studio(无论如何在这个版本中)实际上为您设置了多项目设置,这对我来说很困惑.多项目意味着层次结构中项目上方有另一个文件夹,为存储所有项目的设置提供了一个位置.AS也没有,尽管视频指南创建的子项目文件夹中的文件的build.gradle(在我的情况,FrontlineSMS),说明会.所以我必须创建该子项目build.gradle文件,并创建一个非常简单的settings.gradle(参见下面的更新2).
(2)将src /,res /,.git /,lib /,.gitignore和AndroidManifest.xml复制到新项目的根目录.
(3)用于git mv
根据Gradle Plugin用户指南中的约定将这些项目移动到适当的位置,在必要时替换或删除空白项目中的一些现有文件或文件夹.
(4)build.gradle
在我的子项目文件夹中创建了一个并给它一些基本设置(见下面或上面链接的问题)
(5)按照更新4中的描述导入项目
原始问题:
我是一个新手Android开发人员,试图将当前不使用Gradle(并编译并运行得很好)的Android Studio项目转换为在OS X上使用Gradle的Android项目.我遇到资源错误,我认为可能与我的项目结构,IDE中的设置,build.gradle文件中的设置或它们的某些组合有关.
我进行转换的方式是首先在Android Studio中创建一个新项目,将文件复制到适当的位置,然后在IDE和build.gradle文件中添加一些设置.我的结果是,
??? frontlinesms-for-android
??? build.gradle
??? gradle
??? gradlew
??? gradle.bat
??? settings.gradle (added in update 2)
??? local.properties
??? lib
??? lib1.jar
??? lib2.jar
??? ...
??? frontlinesms-for-android.iml
??? FrontlineSMS
??? build.gradle
??? src
??? main …
Run Code Online (Sandbox Code Playgroud) 我开始学习android开发,我无法弄清楚如何将库添加到项目中.我使用Android Studio.我创建了新项目,项目结构中没有项目设置.
这是我的build.gradle
文件的内容:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
maven {
credentials {
username artifactoryUserName
password artifactoryPassword
}
url 'http://test:8081/artifactory/libs-release-local'
}
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
allprojects {
repositories {
maven {
credentials {
username artifactoryUserName
password artifactoryPassword
}
url 'http://test:8081/artifactory/libs-release-local'
}
mavenCentral()
maven { url 'http://repo1.maven.org/maven2' }
jcenter()
} }
Run Code Online (Sandbox Code Playgroud)
以下是内容app\build.gradle
:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
lintOptions {
abortOnError …
Run Code Online (Sandbox Code Playgroud)