Tôi đang cố gắng di chuyển một dự án từ Eclipse nhưng không có gì tôi đã thử làm việc. Trong Eclipse tôi có 3 dự án (2 dự án ứng dụng Android và 1 dự án thư viện Android). 2 dự án ứng dụng phụ thuộc vào dự án thư viện. Khi tôi thực hiện xuất khẩu lớp, tôi nhận được 3 dự án không hoạt động. Tôi sẵn sàng tái cấu trúc dự án nhưng chưa tìm thấy tài liệu nào về cách thực hiện.
Có cách nào để làm cho 3 dự án mà xuất khẩu Eclipse hoạt động cùng nhau không? Tôi có nên tái cấu trúc mọi thứ tốt hơn không và nếu có thì tài liệu cho việc này nên được thực hiện như thế nào?
Cập nhật
Tôi đã tải toàn bộ dự án lên GitHub https://github.com/respectTheCode/android-studio-l Library-example
Cập nhật 1
Dựa trên những gợi ý từ Padma Kumar, đây là những gì tôi đã thử.
- Tạo một dự án mới gọi là
MyApp
- Nhấp
File > New Module
, chọnAndroid Library
và đặt tên cho nóMyLib
- Nhấp chuột
Build > Make Project
Việc xây dựng không thành công với lỗi này
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.
Sau đó tôi đã thêm một package
thuộc tính vào tệp kê khai làm cho nó
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Sau khi xây dựng tôi gặp lỗi này
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
Thêm phụ thuộc dường như không có bất kỳ tác động nào đến lỗi. Tiếp tục từ trên cao
- Nhấp chuột
File > Project Structure > Modules > MyApp-MyApp
- Chuyển sang
Dependencies
Tab - Nhấp
+ > Module Dependency
và chọnMyLib
- Nhấp
Apply
vàOK
- Nhấp chuột
Build > Make Project
Cập nhật 2
Dựa trên những gợi ý từ Ethan, đây là nơi chúng tôi nhận được
Dự án phụ 2 build.gradle
dường như có tất cả các phần chính xác và sự khác biệt duy nhất là dòng plugin dưới đây là 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
}
}
Dự án gốc build.gradle
trống nên tôi đã thêm hai dự án như thế này
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Bây giờ tôi gặp lỗi này khi xây dựng
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.
Cập nhật 3
Cảm ơn rất nhiều vì Ethan đã giải quyết điều này.
- Thêm
compile project(':SubProjects:MyLib')
vàoMyLib/build.gradle
- Xóa
compile files('libs/android-support-v4.jar')
khỏiMyLib/build.gradle
- Đóng dự án và nhập dự án gốc từ lớp
Cập nhật 4
Kể từ 0.1.2, bây giờ bạn có thể bao gồm compile "com.android.support:support-v4:13.0.0"
thay vì compile files('libs/android-support-v4.jar')
. Vì nó đến từ mavin nên bạn có thể đưa nó vào nhiều dự án mà không gặp vấn đề gì.
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')
}
Cập nhật 5
Kể từ 0.1.3, giờ đây đã có nút "Dự án đồng bộ hóa" trên thanh công cụ. Bạn có thể nhấp vào đó thay vì nhập lại dự án của bạn sau khi thay đổi .gradle
tệp.
compile 'com.google.android:support-v4:r6'
vào từng dự án của mình và plugin maven (như trong ví dụ build.gradle bên dưới) thay vì compile files('libs/android-support-v4.jar')
lớp sẽ nhận ra rằng cả hai dự án đều bao gồm cùng một thứ và sẽ chỉ bao gồm một lần.