मैं ग्रहण से एक परियोजना को स्थानांतरित करने की कोशिश कर रहा हूं, लेकिन मैंने जो कुछ भी कोशिश नहीं की है वह काम कर रहा है। एक्लिप्स में मेरे 3 प्रोजेक्ट हैं (2 एंड्रॉइड ऐप प्रोजेक्ट और 1 एंड्रॉइड लाइब्रेरी प्रोजेक्ट)। 2 ऐप परियोजनाएं पुस्तकालय परियोजना पर निर्भर करती हैं। जब मैं वर्गीकृत निर्यात करता हूं तो मुझे 3 परियोजनाएं मिलती हैं जो काम नहीं करती हैं। मैं परियोजना के पुनर्गठन के लिए तैयार हूं, लेकिन इस बारे में कोई दस्तावेज नहीं मिला है कि यह कैसे किया जाना चाहिए।
क्या उन 3 परियोजनाओं को बनाने का एक तरीका है जो ग्रहण निर्यात एक साथ काम करते हैं? क्या मैं चीजों को पुनर्गठन से बेहतर हूं और यदि ऐसा है तो इसे कैसे किया जाना चाहिए?
अपडेट करें
मैंने पूरा प्रोजेक्ट GitHub https://github.com/respectTheCode/android-studio-library-example पर अपलोड किया है
अपडेट १
पद्म कुमार के सुझावों के आधार पर मैंने यही कोशिश की है।
- नामक एक नई परियोजना बनाएँ
MyApp
- क्लिक करें
File > New Module
, चुनेंAndroid Library
और नाम देंMyLib
- क्लिक करें
Build > Make Project
इस त्रुटि के साथ बिल्ड विफल हो जाता है
Module "MyLib" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 1 error and 0 warnings in 19 sec
1 error
0 warnings
/.../MyApp/MyLib/build/bundles/debug/AndroidManifest.xml
Gradle: <manifest> does not have package attribute.
मैंने फिर package
इसे बनाने के लिए एक विशेषता जोड़ी
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
निर्माण के बाद मुझे यह त्रुटि मिलती है
Module "MyApp" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 2 errors and 0 warnings in 13 sec
2 errors
0 warnings
/.../MyApp/MyLib/src/main/java/com/example/mylib/MainActivity.java
Gradle: package R does not exist
Gradle: package R does not exist
निर्भरता जोड़ने से त्रुटि पर कोई प्रभाव नहीं पड़ता है। ऊपर से जारी है
- क्लिक करें
File > Project Structure > Modules > MyApp-MyApp
Dependencies
टैब पर स्विच करें- क्लिक करें
+ > Module Dependency
और चुनेंMyLib
- क्लिक करें
Apply
औरOK
- क्लिक करें
Build > Make Project
अपडेट २
एथन के सुझावों के आधार पर यह वह जगह है जहाँ हम मिलते हैं
build.gradle
लगता है कि 2 उप परियोजना में सभी सही भाग हैं और एकमात्र अंतर यह है कि प्लगइन लाइन bellow है MyApp/build.gradle
।
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
रूट प्रोजेक्ट build.gradle
खाली था इसलिए मैंने दोनों प्रोजेक्ट को इस तरह से जोड़ा
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
भवन बनाते समय मुझे अब यह त्रुटि मिलती है
Gradle:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/kevin/GitHub/AppPress/MyApp/build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'MyApp'.
> Could not find method compile() for arguments [project ':MyLib'] on root project 'MyApp'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
अपडेट ३
इसे हल करने के लिए बिग धन्यवाद एतान।
- जोड़े
compile project(':SubProjects:MyLib')
कोMyLib/build.gradle
- निकालें
compile files('libs/android-support-v4.jar')
सेMyLib/build.gradle
- प्रोजेक्ट बंद करें और रूट प्रोजेक्ट को gradle से आयात करें
अद्यतन ४
0.1.2 के अनुसार अब आप compile "com.android.support:support-v4:13.0.0"
इसके बजाय शामिल कर सकते हैं compile files('libs/android-support-v4.jar')
। चूंकि यह अब माविन से आ रहा है इसलिए आप इसे बिना किसी समस्या के कई परियोजनाओं में शामिल कर सकते हैं।
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile "com.android.support:support-v4:13.0.0"
compile project(':SubProjects:MyLib')
}
अद्यतन ५
0.1.3 के रूप में अब टूलबार में "सिंक प्रोजेक्ट" बटन है। आप .gradle
फ़ाइलों में परिवर्तन करने के बाद अपनी परियोजना को पुन: आयात करने के बजाय उस पर क्लिक कर सकते हैं ।
compile 'com.google.android:support-v4:r6'
अपनी प्रत्येक परियोजना और मावेन प्लगइन में जोड़ते हैं (जैसे नीचे बिल्ड.ग्रेड उदाहरण में) तो ग्रेडेल के बजाय compile files('libs/android-support-v4.jar')
एहसास होगा कि दोनों परियोजनाओं में एक ही चीज़ शामिल है और केवल एक बार इसे शामिल किया जाएगा।