我在另一个项目中使用自编写的库模块,就像在
中建议的那样https://code.google.com/p/android/issues/detail?id=105570
和
Android Studio 0.8.1 Creating Modules without copying files?
我将这些行添加到了settings.gradle中,并通过" Project Structure" -Dialog添加了包含的库作为项目的依赖项。我使用Android Studio 1.2.2。
IDE中的所有内容看起来都很好(导入正常,图书馆代码可以浏览和编辑,两个模块都可以"制作"没有错误),但我似乎无法启动我的手机/模拟器项目。
我得到一个" classNotFoundException"对于应用程序中使用的库中的第一个类。
我从Eclipse中按类复制粘贴整个项目类,它可以毫无问题地运行。
我需要做些什么才能将我的应用程序库的编译类放到手机上?
settings.gradle
include ':app'
include ':Sudoku'
project(':Sudoku').projectDir=new File('/../Libs/sudoku')
build.gradle (app)
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'
}
答案 0 :(得分:1)
我也使用Android Studio 1.2.2,这里是如何创建独立库项目并从主项目中引用它的一步一步:
创建android项目库,就像正常的android项目一样。称之为 libProjectName
将 libProjectName 的应用模块重命名为 libModuleName
更改:
apply plugin: 'com.android.application'
至apply plugin: 'com.android.library'
并从 defaultConfig 部分删除 applicationId
转到主项目,即参考项目 libProjectName
settings.gradle
,添加:包括':libProjectName:libModuleName'
项目(':libProjectName:libModuleName')。projectDir = new File(' 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(app)
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(library)
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'
}