ฉันกำลังพยายามโยกย้ายโครงการจาก Eclipse แต่ไม่มีอะไรที่ฉันได้ลองใช้งานได้ ใน Eclipse ฉันมี 3 โปรเจ็กต์ (2 แอพ android สำหรับโปรเจคและ 1 android library project) โครงการแอพ 2 โครงการขึ้นอยู่กับโครงการห้องสมุด เมื่อฉันส่งออก gradle ฉันได้รับ 3 โครงการที่ไม่ทำงาน ฉันเปิดให้ปรับโครงสร้างโครงการ แต่ไม่พบเอกสารใด ๆ เกี่ยวกับวิธีการทำเช่นนี้
มีวิธีที่จะทำให้ทั้งสามโครงการที่ Eclipse ส่งออกทำงานร่วมกันได้หรือไม่? ฉันควรจะปรับโครงสร้างสิ่งต่าง ๆ ให้ดีขึ้นหรือไม่และถ้าเป็นเช่นนั้นเอกสารควรจะทำอย่างไร
ปรับปรุง
ฉันได้อัปโหลดโครงการทั้งหมดไปที่ GitHub https://github.com/respectTheCode/android-studio-library-example
อัปเดต 1
จากคำแนะนำของ Padma Kumar นี่คือสิ่งที่ฉันได้ลอง
- สร้างโครงการใหม่ที่เรียกว่า
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
Tab - คลิก
+ > Module Dependency
และเลือกMyLib
- คลิก
Apply
และOK
- คลิก
Build > Make Project
อัปเดต 2
ตามข้อเสนอแนะจากอีธานนี่คือสิ่งที่เราได้รับ
โครงการย่อย 2 ดูเหมือนจะมีทุกชิ้นส่วนที่ถูกต้องและความแตกต่างเพียงอย่างเดียวคือการร้องบรรทัดปลั๊กอินเป็นbuild.gradle
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.
อัปเดต 3
ขอบคุณมากอีธานที่แก้ปัญหานี้
- เพิ่ม
compile project(':SubProjects:MyLib')
ไปที่MyLib/build.gradle
- ลบออก
compile files('libs/android-support-v4.jar')
จากMyLib/build.gradle
- ปิดโครงการและนำเข้าโครงการรากจากระดับเสียง
อัปเดต 4
ในฐานะของ 0.1.2 ตอนนี้คุณสามารถรวมแทนcompile "com.android.support:support-v4:13.0.0"
compile files('libs/android-support-v4.jar')
เนื่องจากมันมาจาก mavin ตอนนี้คุณสามารถรวมมันไว้ในหลายโครงการได้โดยไม่มีปัญหา
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')
}
อัปเดต 5
ณ วันที่ 0.1.3 ขณะนี้มีปุ่ม "ซิงค์โครงการ" ในแถบเครื่องมือ คุณสามารถคลิกที่แทนการนำเข้าโครงการของคุณอีกครั้งหลังจากทำการเปลี่ยนแปลง.gradle
ไฟล์
compile 'com.google.android:support-v4:r6'
แต่ละโครงการของคุณและปลั๊กอิน maven (เช่นในตัวอย่าง build.gradle ด้านล่าง) แทนการcompile files('libs/android-support-v4.jar')
ไล่ระดับสีจะรู้ว่าโครงการทั้งสองมีสิ่งเดียวกันและจะรวมเพียงครั้งเดียว