[英]How to run app in Android Studio with shared library-module from other project?
我在另一个项目中使用了一个自写的库模块,就像在
https://code.google.com/p/android/issues/detail?id=105570
和
Android Studio 0.8.1创建模块而不复制文件?
我将这些行添加到settings.gradle,并通过“项目结构”-对话框添加了所包含的库,作为对项目的依赖关系。 我使用的是Android Studio 1.2.2。
IDE中的所有内容看起来都不错(导入正常,可以浏览和编辑库代码,可以“制作”两个模块而没有错误),但是我似乎无法在手机/仿真器上启动该项目。
我从应用程序中使用的库中获得了第一个类的“ classNotFoundException”。
我从Eclipse逐类复制粘贴了整个项目类,该类将在运行时不会出现问题。
我要怎么做才能将库的已编译类放入应用程序到手机上?
settings.gradle
include ':app'
include ':Sudoku'
project(':Sudoku').projectDir=new File('/../Libs/sudoku')
build.gradle (应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.frozenmilkmeteoroids.sudokuapp"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':Sudoku')
}
build.gradle (库)
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
我也使用Android Studio 1.2.2,这是如何创建独立库项目并从您的主项目引用它的分步指南:
像创建普通android项目一样创建android项目库。 称之为libProjectName
将libProjectName的应用模块重命名为libModuleName
在libModuleName的build.gradle中进行更改: apply plugin: 'com.android.application'
以apply plugin: 'com.android.library'
并从defaultConfig部分删除applicationId
转到主项目,即引用libProjectName的项目
settings.gradle
,添加: 包括':libProjectName:libModuleName'
project(':libProjectName:libModuleName')。projectDir =新文件('relative / path / libProjectDir / libModuleDir')
build.gradle
,添加: 编译项目(':libProjectDir:libModuleName')
现在假设Sudoku中的模块和模块目录名称为moduleSudoku并应用上述步骤,解决方案是:
settings.gradle
include ':app'
include ':Sudoku:moduleSudoku'
project(':Sudoku:moduleSudoku').projectDir=new File('/../Libs/sudoku/moduleSudoku')
build.gradle(应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.frozenmilkmeteoroids.sudokuapp"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':Sudoku:moduleSudoku')
}
build.gradle(库)
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.