如何Android Studio中与其他项目共享库模块上运行的应用程序? [英] How to run app in Android Studio with shared library-module from other project?
问题描述
我用另外一个项目中的自写库模块就像是在建议
HTTPS://$c$c.google。 COM / p /安卓/问题/细节?ID = 105570
和
<一个href=\"http://stackoverflow.com/questions/24658422/android-studio-0-8-1-creating-modules-without-copying-files\">Android工作室0.8.1不复制文件创建模块?
我增加了线条settings.gradle并通过项目结构 - 对话还增加了包括图书馆作为一个依赖于该项目。我使用Android 1.2.2工作室
在IDE中一切正常(进口工作,库 - code可以浏览和编辑,这两个模块可以被maked没有错误),但我似乎无法启动我的手机上的项目/仿真器。
我得到从库中第一个类,在应用程序中使用了ClassNotFoundException异常。
我复制粘贴整个项目类通过从Eclipse中类哪里会运行没有问题。
我有什么做的就是编译的类图书馆为我的应用程序到我的手机?
settings.gradle
包括':应用程序
包括:数独
项目(:数独')PROJECTDIR =新的文件(/../利布斯/数独)
的build.gradle (应用程序)
应用插件:'com.android.application安卓{
compileSdkVersion 22
buildToolsVersion22.0.1 defaultConfig {
的applicationIDcom.frozenmilkmeteoroids.sudokuapp
15的minSdkVersion
targetSdkVersion 22
版本code 1
的versionName1.0
}
buildTypes {
发布 {
minifyEnabled假
proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro
}
}
}依赖{
编译文件树(包括:['的* .jar'],DIR:库)
编译com.android.support:appcompat-v7:22.2.0
编制项目(':数独)
}
的build.gradle (库)
应用插件:'com.android.library安卓{
compileSdkVersion 22
buildToolsVersion22.0.1 defaultConfig {
15的minSdkVersion
targetSdkVersion 22
版本code 1
的versionName1.0
}
buildTypes {
发布 {
minifyEnabled假
proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro
}
}
}依赖{
编译文件树(导演:'库',包括:['的* .jar'])
编译com.android.support:appcompat-v7:22.2.0
}
我也使用Android 1.2.2工作室,这里是一步如何创建独立的库项目,并从您的主项目引用它的步骤:
-
创建Android项目库,你会为一个正常的Android项目。说它 libProjectName
-
改名 libProjectName 的应用模块的 libModuleName
-
在 libModuleName的的build.gradle 的变化:
应用插件:'com.android.application
到应用插件:'com.android.library
并删除< STRONG>的applicationID 从 defaultConfig 部分 -
进入主体工程即项目引用 libProjectName
- 编辑
settings.gradle
,地址:
包括':libProjectName:libModuleName
项目(':libProjectName:libModuleName')PROJECTDIR =新的文件(相对/路径/ libProjectDir / libModuleDir')
。
块引用><醇开始=6>编辑 的build.gradle
在应用模块,添加:
编制项目(':libProjectDir:libModuleName')
块引用>现在假设的模块的和的模块目录的数独名为 moduleSudoku 并应用上面的步骤,解决的办法是:
settings.gradle
包括':应用程序
包括:数独:moduleSudoku
项目(':数独:moduleSudoku')PROJECTDIR =新的文件(/../利布斯/数独/ moduleSudoku')。的build.gradle(APP)
应用插件:'com.android.application安卓{
compileSdkVersion 22
buildToolsVersion22.0.1 defaultConfig {
的applicationIDcom.frozenmilkmeteoroids.sudokuapp
15的minSdkVersion
targetSdkVersion 22
版本code 1
的versionName1.0
}
buildTypes {
发布 {
minifyEnabled假
proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro
}
}
}依赖{
编译文件树(包括:['的* .jar'],DIR:库)
编译com.android.support:appcompat-v7:22.2.0
编制项目(':数独:moduleSudoku')
}的build.gradle(库)
应用插件:'com.android.library安卓{
compileSdkVersion 22
buildToolsVersion22.0.1 defaultConfig {
15的minSdkVersion
targetSdkVersion 22
版本code 1
的versionName1.0
}
buildTypes {
发布 {
minifyEnabled假
proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro
}
}
}依赖{
编译文件树(导演:'库',包括:['的* .jar'])
编译com.android.support:appcompat-v7:22.2.0
}I use a self-written library-module within another project like it was suggested in
https://code.google.com/p/android/issues/detail?id=105570
and
Android Studio 0.8.1 Creating Modules without copying files?
I added the lines to settings.gradle and furthermore added the included library via "Project Structure"-Dialog as a dependency to the project. I use Android Studio 1.2.2.
Everything within the IDE looks fine (imports are working, library-code can be browsed and edited, both modules can be "maked" without errors), but I can't seem to launch the project on my phone / emulator.
I get a "classNotFoundException" for the first class from the library that is used in the app.
I copy-pasted the entire project class by class from Eclipse where it would run without problems.
What do I have to do to get the compiled classes of the library into my app onto my phone?
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 (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' }
解决方案I also use Android Studio 1.2.2 and here is step by step of how to create the standalone library project and reference it from your main project:
create the android project library as you would for a normal android project. Call it libProjectName
rename the libProjectName's app module to libModuleName
in the libModuleName's build.gradle change:
apply plugin: 'com.android.application'
toapply plugin: 'com.android.library'
and remove applicationId from defaultConfig sectionGo to the main project i.e the project to reference libProjectName
- edit
settings.gradle
, add:
include ':libProjectName:libModuleName'
project(':libProjectName:libModuleName').projectDir=new File('relative/path/libProjectDir/libModuleDir')
- edit
build.gradle
in app Module, add:
compile project(':libProjectDir:libModuleName')
Now assuming that the module and module-directory name in Sudoku is moduleSudoku and applying the steps above, the solution is:
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' }
这篇关于如何Android Studio中与其他项目共享库模块上运行的应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!