Câu trả lời:
Câu trả lời này phụ thuộc rất nhiều vào tài liệu chính thức của Android (cụ thể là các phần được trích dẫn).
Cách thiết lập Hỗ trợ Multidex cho Dự án Unity
Đa chiều là gì:
Các tệp ứng dụng Android (APK) chứa các tệp mã byte thực thi dưới dạng tệp Dalvik Executable (DEX), chứa mã được biên dịch được sử dụng để chạy ứng dụng của bạn. Đặc tả thực thi Dalvik giới hạn tổng số phương thức có thể được tham chiếu trong một tệp DEX duy nhất là 65.536, bao gồm các phương thức khung Android, phương thức thư viện và phương thức trong mã của riêng bạn. Vượt qua giới hạn này yêu cầu bạn định cấu hình quy trình xây dựng ứng dụng của mình để tạo nhiều hơn một tệp DEX, được gọi là cấu hình đa dex.
Khi chúng tôi sử dụng Multidex:
Khi chúng tôi vượt quá tổng số phương thức có thể được tham chiếu trong một tệp DEX duy nhất đến 65.536 - bao gồm các phương thức khung Android, phương thức thư viện và phương thức trong mã của riêng bạn.
Tránh giới hạn 64K
Trước khi định cấu hình ứng dụng của bạn để cho phép sử dụng 64K hoặc nhiều tham chiếu phương thức, bạn nên thực hiện các bước để giảm tổng số tham chiếu được gọi bởi mã ứng dụng của bạn, bao gồm các phương thức được xác định bởi mã ứng dụng hoặc các thư viện đi kèm. Các chiến lược sau đây có thể giúp bạn tránh đạt giới hạn tham chiếu DEX:
Xem lại các phụ thuộc trực tiếp và bắc cầu của ứng dụng của bạn - Đảm bảo mọi phụ thuộc thư viện lớn mà bạn đưa vào ứng dụng của mình được sử dụng theo cách vượt trội hơn số lượng mã được thêm vào ứng dụng. Một mô hình chống phổ biến là bao gồm một thư viện rất lớn vì một vài phương thức tiện ích là hữu ích. Giảm phụ thuộc mã ứng dụng của bạn thường có thể giúp bạn tránh giới hạn tham chiếu DEX.
Xóa mã không sử dụng bằng ProGuard - Cho phép thu nhỏ mã để chạy ProGuard cho các bản dựng phát hành của bạn. Kích hoạt thu hẹp đảm bảo bạn không vận chuyển mã không sử dụng với APK của mình.
Ngoài những lời khuyên chính thức này, khi xây dựng dự án Unity của bạn, hãy làm theo các bước sau sẽ giúp bạn thêm:
Thiết lập dự án ứng dụng của bạn để sử dụng cấu hình đa dex yêu cầu bạn thực hiện sửa đổi sau.
Nếu minSdkVersion của bạn được đặt thành 21 hoặc cao hơn, tất cả những gì bạn cần làm được đặt
multiDexEnabled
thànhtrue
trong tệp build.gradle cấp mô-đun, như được hiển thị ở đây:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
Tuy nhiên, nếu của bạn
minSdkVersion
được đặt thành 20 hoặc thấp hơn, thì bạn phải sử dụng thư viện hỗ trợ multidex như sau:3.1. Sửa đổi tệp build.gradle cấp mô-đun để bật multidex và thêm thư viện multidex làm phụ thuộc, như hiển thị ở đây:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2. Tùy thuộc vào việc bạn có ghi đè lớp Ứng dụng hay không, thực hiện một trong các thao tác sau:
- Nếu bạn không ghi đè
Application
lớp, hãy chỉnh sửa tệp kê khai của bạn để đặtandroid:name
trong<application>
thẻ như sau:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
- Nếu bạn ghi đè
Application
lớp, hãy thay đổi nó để mở rộng MultiDexApplication (nếu có thể) như sau:
public class MyApplication extends MultiDexApplication { ... }
- Hoặc nếu bạn ghi đè lớp Ứng dụng nhưng không thể thay đổi lớp cơ sở, thì thay vào đó, bạn có thể ghi đè phương thức AttachBaseContext () và gọi MultiDex.install (điều này) để bật multidex:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Kiểm tra biểu mẫu lỗi các tệp kê khai khác và dọn sạch dự án.
Nếu có bất kỳ vấn đề phụ thuộc nào trong dự án của bạn, hãy chạy lệnh này trong Android Terminal
% Gradle clean App."App name"
Sao chép các phụ thuộc này trong Lớp ứng dụng của bạn, dưới phần phụ thuộc:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
Thêm SignConfig trong các dự án chính của bạn Gradle.
Hoặc đặt chế độ Ký thành chế độ Gỡ lỗi theo cách thủ công, Chuyển đến Tệp -> Cấu trúc dự án -> Trong Mô-đun Nhấp vào dự án của bạn và bên dưới Kiểu xây dựng, chọn Gỡ lỗi -> chọn Ký cấu hình-> gỡ lỗi
Bây giờ đồng bộ hóa Gradle của bạn và xây dựng dự án.
Tôi khuyên bạn nên truy cập liên kết này để giúp bạn tạo các trò chơi kích hoạt đa chiều trực tiếp thông qua sự thống nhất.
https://medium.com/@abhpatidar/solve-unity-dex-su-538e134c8809
Lưu ý: Điều này sẽ chỉ cho phép multidex trong sự thống nhất (và sẽ khắc phục các sự cố multidex). Nó sẽ không sửa các vấn đề liên quan đến lớp.