Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Wifi

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Mô-đun Wi-Fi có thể cập nhật được, có nghĩa là nó có thể nhận các bản cập nhật cho chức năng ngoài chu kỳ phát hành Android thông thường. Mô-đun này chứa các thành phần sau.

Thành phần mô-đun Wi-Fi

Hình 1. Các thành phần và kiến ​​trúc mô-đun Wi-Fi

Mô-đun Wi-Fi cung cấp các lợi ích sau.

  • Người dùng cuối có được trải nghiệm Wi-Fi nhất quán trên các thiết bị Android và khắc phục các sự cố về khả năng tương tác thông qua các bản cập nhật mô-đun.

  • Các nhà phát triển ứng dụng được giảm thiểu sự phân mảnh nền tảng.

  • OEM có thể đáp ứng các yêu cầu của nhà cung cấp dịch vụ đồng thời giảm chi phí cho các tùy chỉnh riêng lẻ (vì họ không cần triển khai các yêu cầu khác nhau theo những cách khác nhau).

Ranh giới mô-đun cho Android 12 và Android 13

  • packages/modules/Wifi
    • framework
      • java/
        • android/net/wifi (tệp từ frameworks/base/wifi/java )
      • tests/
        • android/net/wifi (tệp từ frameworks/base/wifi/tests )
      • aidl-export/
      • api/
      • Android.bp
    • service/
      • java/
        • com/android/server/wifi (tệp từ frameworks/opt/net/wifi/service/java )
      • tests/
        • com/android/server/wifi (các tệp từ frameworks/opt/net/wifi/tests )
      • proto/
      • Android.bp
      • proguard.flags
      • wifi.rc
    • OsuLogin/ (tệp từ frameworks/base/packages/OsuLogin )
    • ServiceResources/ (mới trong Android 12, tệp kê khai của Overlay APK được lưu trữ tại đây)
      • res/ (mới trong Android 11, cấu hình Wi-Fi được trích xuất từ ​​các frameworks/base/core/res/res )
      • AndroidManifest.xml
      • Android.bp
    • WifiDialog/ (tính năng mới trong Ứng dụng Android 13 để khởi chạy hộp thoại người dùng do dịch vụ yêu cầu được lưu trữ tại đây.)
      • src/
        • com/android/wifi/dialog (Chứa Hoạt động mà các hộp thoại được khởi chạy từ đó)
      • AndroidManifest.xml
      • Android.bp

Các thư mục trên cũng chứa mã vẫn nằm ngoài thành phần hệ thống mô-đun và ở vị trí hiện tại của nó, ví dụ:

  • wificond interface (các lớp trong gói android.net.wifi.nl80211 , ví dụ: WifiNl80211Manager )
  • Ứng dụng Lớp phủ Tài nguyên Mẫu
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

OEM có thể sử dụng các lệnh mẫu để giúp di chuyển các bản vá của họ từ thư mục dự án ban đầu sang thư mục dự án mới.

Di chuyển một bản vá từ các khung công tác / cơ sở / wifi

Tạo tệp bản vá trong root / frameworks / base / wifi

git format-patch -1 commit --stdout > patch-file.txt

Áp dụng tệp vá cho root / package / modules / Wifi

git am -p2 --directory=framework/ patch-file.txt

Di chuyển bản vá từ các framework / opt / net / wifi

Để di chuyển bản vá từ frameworks/opt/net/wifi , cần thực hiện các bước phức tạp vì phân cấp thư mục đã bị thay đổi trong quá trình di chuyển.

Trong frameworks/opt/net/wifi , chia cam kết thành hai cam kết, một cho service/ và một cho tests/ .

Di chuyển cam kết HEAD

git reset HEAD^
git add service/
git commit # Enter your commit message. Call this commit service-commit
git add tests/
git commit # Enter your commit message. Call this commit test-commit

Tạo hai tệp vá cam kết

git format-patch -1 service-commit --stdout > service-patch.txt
git format-patch -1 test-commit --stdout > test-patch.txt

Áp dụng hai bản vá cho gói / mô-đun / Wifi

git am service-patch.txt
git am -p1 --directory=service/ test-patch.txt

Gộp hai cam kết lại thành một cam kết

git rebase -i

Thay đổi hoạt động của cam kết thứ hai thành squash .

Chỉnh sửa thông báo cam kết sao cho phù hợp.

Ranh giới mô-đun cho Android 11

Dịch vụ Wi-Fi tiếp tục chạy bên trong quy trình Dịch vụ Hệ thống. Mô-đun Wi-Fi bao gồm tất cả mã trong packages/modules/Wifi Wi-Fi bao gồm các mã sau.

  • SDK và các lớp dịch vụ cho WifiService , WifiP2pService , WifiAwareService , WifiScannerServiceWifiRttService
  • OsuLogin
  • ServiceWifiResources

Mô-đun loại trừ các thành phần sau, vẫn là một phần của bản dựng AOSP của OEM.

  • thành phần gốc wificond trong system/connectivity/wificond
  • giao diện wificond (các lớp trong gói android.net.wifi.nl80211 , ví dụ: WifiNl80211Manager )
  • android.net.wifi.SoftApConfToXmlMigrationUtil
  • android.net.wifi.WifiNetworkScoreCache
  • android.net.wifi.WifiMigration
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

Android 11 không di chuyển tệp, nhưng các bản phát hành trong tương lai có thể. Để giảm nỗ lực liên quan đến việc chuyển đổi vị trí tệp, chúng tôi khuyên bạn nên ngược dòng càng nhiều thay đổi càng tốt lên AOSP (sau khi chuyển chúng sang Android 11 hoặc cấu trúc lại các tiện ích mở rộng độc quyền để sử dụng các API Android chính thức hoặc tiện ích mở rộng HAL của nhà cung cấp để gỡ chúng khỏi mã AOSP).

Định dạng mô-đun

Mô-đun Wi-Fi ( com.google.android.wifi.apex ) ở định dạng APEX và khả dụng cho các thiết bị chạy Android 11 trở lên. Tệp APEX bao gồm các thành phần sau.

  • Thư viện SDK ( framework-wifi.jar )
  • Thư viện dịch vụ ( service-wifi.jar )
  • APK OsuLogin ( OsuLoginGoogle.apk )
  • APK tài nguyên ( ServiceWifiResourcesGoogle.apk )
  • Chứng chỉ WFA

Phụ thuộc mô-đun

Mô-đun Wi-Fi phụ thuộc vào các thành phần sau.

  • Kết nối
  • Điện thoại
  • Thư viện Proto
  • Các thành phần hệ thống khác
  • WiFi HAL
  • wificond
  • bouncycastle
  • ksoap2
  • libnanohttpd

Mô-đun này tương tác với khung chỉ sử dụng @SystemApi ổn định (không sử dụng @hide API) và được ký bằng chữ ký Google thay vì chữ ký nền tảng.

Tùy chỉnh

Mô-đun Wi-Fi không hỗ trợ tùy chỉnh trực tiếp, nhưng bạn có thể tùy chỉnh cấu hình bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO) hoặc cấu hình nhà cung cấp dịch vụ.

Tùy chỉnh Wi-Fi

Hình 2. Tùy chỉnh mô-đun Wi-Fi

  • Đối với các tùy chỉnh nhỏ, hãy bật hoặc tắt cài đặt trong config RRO.
  • Để có nhiều quyền kiểm soát hơn, hãy tùy chỉnh các giá trị cấu hình cho bất kỳ khóa cấu hình mạng di động nào được hiển thị dưới dạng @SystemAPI .

Sử dụng lớp phủ tài nguyên thời gian chạy

Bạn có thể tùy chỉnh mô-đun Wi-Fi bằng cách ghi đè các cấu hình mặc định bằng RRO. Để biết danh sách các cấu hình có thể phủ, hãy tham khảo packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml . Để biết chi tiết về hành vi cấu hình, hãy tham khảo packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml . Để biết ứng dụng lớp phủ mẫu, hãy tham khảo device/google/coral/rro_overlays/WifiOverlay/ .

Vì tệp device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml đặt thuộc tính targetPackage thành com.android.wifi.resources và APK tài nguyên do mô-đun Wi-Fi phân phối có tên gói là com.google.android.wifi.resources , bạn phải đặt APKS targetPackage lớp phủ thành com.google.android.wifi.resources để cấu hình Wi-Fi lớp phủ thành công.

Di chuyển định dạng lưu trữ cấu hình

Mô-đun Wi-Fi chỉ có thể phân tích cú pháp định dạng lưu trữ cấu hình Wi-Fi AOSP. Nếu trước đây bạn đã sửa đổi định dạng lưu trữ cấu hình Wi-Fi (bao gồm danh sách mạng đã lưu của người dùng), bạn phải chuyển đổi dữ liệu đó sang định dạng AOSP khi nâng cấp thiết bị lên bất kỳ bản phát hành Android nào có mô-đun Wi-Fi. Các móc cần thiết cho việc chuyển đổi này nằm trong lớp android.net.wifi.WifiMigration .

Thực hiện chuyển đổi định dạng theo các phương pháp sau.

  • WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)

    • Được gọi bởi mô-đun Wi-Fi để truy xuất nội dung tệp cửa hàng chia sẻ Wi-Fi đã được chuyển đổi sang định dạng AOSP.

    • Các tệp này trước đây (trong Android 10) được lưu trữ trong thư mục /data/misc/wifi trên thiết bị.

  • WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)

    • Được gọi bởi mô-đun Wi-Fi để truy xuất nội dung tệp cửa hàng dành riêng cho người dùng Wi-Fi đã được chuyển đổi sang định dạng AOSP.

    • Các tệp này trước đây (trong Android 10) được lưu trữ trong thư mục /data/misc_ce/<userId>/wifi trên thiết bị.

Truy cập các API Wi-Fi ẩn

Các ký hiệu (lớp, phương thức, trường, v.v.) được chú thích bằng @hide trong mô-đun Wi-Fi không phải là một phần của bề mặt API công khai của nó và không thể truy cập được trên các thiết bị đã cài đặt mô-đun. Các thiết bị không bao gồm mô-đun Wi-Fi có thể tiếp tục sử dụng @hide Wi-Fi API bằng các bước sau.

  1. Loại bỏ các hạn chế về khả năng hiển thị được đặt trên framework-wifi tại packages/modules/Wifi/framework/Android.bp bằng cách thay đổi thuộc tính impl_library_visibility thành công khai.

    java_sdk_library {
        name: "framework-wifi",
        ...
        impl_library_visibility: [
           "//visibility:public", // Add this rule and remove others.
        ],
        ...
    }
    
  2. Thay đổi quy tắc xây dựng để cho phép các API Wi-Fi @hide truy cập thư viện. Ví dụ: sau đây là quy tắc xây dựng cho java_library .

    java_library {
        name: "foo-lib",
    
        // no sdk_version attribute defined
    
        libs: [
            "dependency1",
            "dependency2",
        ],
    }
    

    Để cho phép truy cập thư viện cho foo-lib , hãy thay đổi quy tắc xây dựng như được hiển thị bên dưới.

    java_library {
        name: "foo-lib",
    
        sdk_version: "core_platform",
    
        libs: [
            "framework-wifi.impl",
            "framework",
            "dependency1",
            "dependency2",
        ],
    }
    
  3. Đảm bảo rằng framework-wifi.impl xuất hiện trước framework trong danh sách libs . Thứ tự của các phụ thuộc trong thuộc tính libs là đáng kể.

Truy cập các API khung ẩn

Không thể truy cập các ký hiệu được chú thích bằng @hide bên ngoài mô-đun Wi-Fi bằng mã trong mô-đun Wi-Fi. Các thiết bị không bao gồm mô-đun Wi-Fi có thể tiếp tục sử dụng @hide API bên ngoài (ví dụ: từ framework.jar ) trong service-wifi bằng cách thực hiện các sửa đổi sau đối với frameworks/opt/net/wifi/service/Android.bp .

  1. Trong cả wifi-service-pre-jarjarservice-wifi , hãy thay đổi thuộc tính sdk_version thành core_platform .

  2. Trong cả wifi-service-pre-jarjarservice-wifi , hãy thêm frameworkandroid_system_server_stubs_current vào thuộc tính libs .

  3. Xác minh kết quả tương tự như mẫu mã sau đây.

    java_library {
        name: "wifi-service-pre-jarjar",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    ...
    java_library {
        name: "service-wifi",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    

    Mô-đun Wi-Fi có thể cập nhật được, có nghĩa là nó có thể nhận các bản cập nhật cho chức năng ngoài chu kỳ phát hành Android thông thường. Mô-đun này chứa các thành phần sau.

Thành phần mô-đun Wi-Fi

Hình 1. Các thành phần và kiến ​​trúc mô-đun Wi-Fi

Mô-đun Wi-Fi cung cấp các lợi ích sau.

  • Người dùng cuối có được trải nghiệm Wi-Fi nhất quán trên các thiết bị Android và khắc phục các sự cố về khả năng tương tác thông qua các bản cập nhật mô-đun.

  • Các nhà phát triển ứng dụng được giảm thiểu sự phân mảnh nền tảng.

  • OEM có thể đáp ứng các yêu cầu của nhà cung cấp dịch vụ đồng thời giảm chi phí cho các tùy chỉnh riêng lẻ (vì họ không cần triển khai các yêu cầu khác nhau theo những cách khác nhau).

Ranh giới mô-đun cho Android 12

  • packages/modules/Wifi
    • framework
      • java/
        • android/net/wifi (tệp từ frameworks/base/wifi/java )
      • tests/
        • android/net/wifi (tệp từ frameworks/base/wifi/tests )
      • aidl-export/
      • api/
      • Android.bp
    • service/
      • java/
        • com/android/server/wifi (tệp từ frameworks/opt/net/wifi/service/java )
      • tests/
        • com/android/server/wifi (các tệp từ frameworks/opt/net/wifi/tests )
      • proto/
      • Android.bp
      • proguard.flags
      • wifi.rc
    • OsuLogin/ (tệp từ frameworks/base/packages/OsuLogin )
    • ServiceResources/ (mới trong Android 12, tệp kê khai của Overlay APK được lưu trữ tại đây)
      • res/ (mới trong Android 11, cấu hình Wi-Fi được trích xuất từ ​​các frameworks/base/core/res/res )
      • AndroidManifest.xml
      • Android.bp

Các thư mục trên cũng chứa mã vẫn nằm ngoài thành phần hệ thống mô-đun và ở vị trí hiện tại của nó, ví dụ:

  • wificond interface (các lớp trong gói android.net.wifi.nl80211 , ví dụ: WifiNl80211Manager )
  • Ứng dụng Lớp phủ Tài nguyên Mẫu
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

OEM có thể sử dụng các lệnh mẫu để giúp di chuyển các bản vá của họ từ thư mục dự án ban đầu sang thư mục dự án mới.

Di chuyển một bản vá từ các khung công tác / cơ sở / wifi

Tạo tệp bản vá trong root / frameworks / base / wifi

git format-patch -1 commit --stdout > patch-file.txt

Áp dụng tệp vá cho root / package / modules / Wifi

git am -p2 --directory=framework/ patch-file.txt

Di chuyển một bản vá từ các framework / opt / net / wifi

Để di chuyển bản vá từ frameworks/opt/net/wifi , cần thực hiện các bước phức tạp vì phân cấp thư mục đã bị thay đổi trong quá trình di chuyển.

Trong frameworks/opt/net/wifi , chia cam kết thành hai cam kết, một cho service/ và một cho tests/ .

Di chuyển cam kết HEAD

git reset HEAD^
git add service/
git commit # Enter your commit message. Call this commit service-commit
git add tests/
git commit # Enter your commit message. Call this commit test-commit

Tạo hai tệp vá cam kết

git format-patch -1 service-commit --stdout > service-patch.txt
git format-patch -1 test-commit --stdout > test-patch.txt

Áp dụng hai bản vá cho gói / mô-đun / Wifi

git am service-patch.txt
git am -p1 --directory=service/ test-patch.txt

Gộp hai cam kết lại thành một cam kết

git rebase -i

Thay đổi hoạt động của cam kết thứ hai thành squash .

Chỉnh sửa thông báo cam kết sao cho phù hợp.

Ranh giới mô-đun cho Android 11

Dịch vụ Wi-Fi tiếp tục chạy bên trong quy trình Dịch vụ Hệ thống. Mô-đun Wi-Fi bao gồm tất cả mã trong packages/modules/Wifi Wi-Fi bao gồm các mã sau.

  • SDK và các lớp dịch vụ cho WifiService , WifiP2pService , WifiAwareService , WifiScannerServiceWifiRttService
  • OsuLogin
  • ServiceWifiResources

Mô-đun loại trừ các thành phần sau, vẫn là một phần của bản dựng AOSP của OEM.

  • thành phần gốc wificond trong system/connectivity/wificond
  • giao diện wificond (các lớp trong gói android.net.wifi.nl80211 , ví dụ: WifiNl80211Manager )
  • android.net.wifi.SoftApConfToXmlMigrationUtil
  • android.net.wifi.WifiNetworkScoreCache
  • android.net.wifi.WifiMigration
  • WifiTrackerLib
  • libwifi_hal
  • libwifi_system
  • libwifi_system_iface

Android 11 không di chuyển tệp, nhưng các bản phát hành trong tương lai có thể. Để giảm nỗ lực liên quan đến việc chuyển đổi vị trí tệp, chúng tôi khuyên bạn nên ngược dòng càng nhiều thay đổi càng tốt lên AOSP (sau khi chuyển chúng sang Android 11 hoặc cấu trúc lại các tiện ích mở rộng độc quyền để sử dụng các API Android chính thức hoặc tiện ích mở rộng HAL của nhà cung cấp để gỡ chúng khỏi mã AOSP).

Định dạng mô-đun

Mô-đun Wi-Fi ( com.google.android.wifi.apex ) ở định dạng APEX và khả dụng cho các thiết bị chạy Android 11 trở lên. Tệp APEX bao gồm các thành phần sau.

  • Thư viện SDK ( framework-wifi.jar )
  • Thư viện dịch vụ ( service-wifi.jar )
  • APK OsuLogin ( OsuLoginGoogle.apk )
  • APK tài nguyên ( ServiceWifiResourcesGoogle.apk )
  • Chứng chỉ WFA

Phụ thuộc mô-đun

Mô-đun Wi-Fi phụ thuộc vào các thành phần sau.

  • Kết nối
  • Điện thoại
  • Thư viện Proto
  • Các thành phần hệ thống khác
  • WiFi HAL
  • wificond
  • bouncycastle
  • ksoap2
  • libnanohttpd

Mô-đun này tương tác với khung chỉ sử dụng @SystemApi ổn định (không sử dụng @hide API) và được ký bằng chữ ký Google thay vì chữ ký nền tảng.

Tùy chỉnh

Mô-đun Wi-Fi không hỗ trợ tùy chỉnh trực tiếp, nhưng bạn có thể tùy chỉnh cấu hình bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO) hoặc cấu hình nhà cung cấp dịch vụ.

Tùy chỉnh Wi-Fi

Hình 2. Tùy chỉnh mô-đun Wi-Fi

  • Đối với các tùy chỉnh nhỏ, hãy bật hoặc tắt cài đặt trong config RRO.
  • Để có nhiều quyền kiểm soát hơn, hãy tùy chỉnh các giá trị cấu hình cho bất kỳ khóa cấu hình mạng di động nào được hiển thị dưới dạng @SystemAPI .

Sử dụng lớp phủ tài nguyên thời gian chạy

Bạn có thể tùy chỉnh mô-đun Wi-Fi bằng cách ghi đè các cấu hình mặc định bằng RRO. Để biết danh sách các cấu hình có thể phủ, hãy tham khảo packages/modules/Wifi/service/ServiceWifiResources/res/values/overlayable.xml . Để biết chi tiết về hành vi cấu hình, hãy tham khảo packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml . Để biết ứng dụng lớp phủ mẫu, hãy tham khảo device/google/coral/rro_overlays/WifiOverlay/ .

Vì tệp device/google/coral/rro_overlays/WifiOverlay/AndroidManifest.xml đặt thuộc tính targetPackage thành com.android.wifi.resources và APK tài nguyên do mô-đun Wi-Fi phân phối có tên gói là com.google.android.wifi.resources , bạn phải đặt APKS targetPackage lớp phủ thành com.google.android.wifi.resources để cấu hình Wi-Fi lớp phủ thành công.

Di chuyển định dạng lưu trữ cấu hình

Mô-đun Wi-Fi chỉ có thể phân tích cú pháp định dạng lưu trữ cấu hình Wi-Fi AOSP. Nếu trước đây bạn đã sửa đổi định dạng lưu trữ cấu hình Wi-Fi (bao gồm danh sách mạng đã lưu của người dùng), bạn phải chuyển đổi dữ liệu đó sang định dạng AOSP khi nâng cấp thiết bị lên bất kỳ bản phát hành Android nào có mô-đun Wi-Fi. Các móc cần thiết cho việc chuyển đổi này nằm trong lớp android.net.wifi.WifiMigration .

Thực hiện chuyển đổi định dạng theo các phương pháp sau.

  • WifiMigration.convertAndRetrieveSharedConfigStoreFile(<storeFileId>)

    • Được gọi bởi mô-đun Wi-Fi để truy xuất nội dung tệp cửa hàng chia sẻ Wi-Fi đã được chuyển đổi sang định dạng AOSP.

    • Các tệp này trước đây (trong Android 10) được lưu trữ trong thư mục /data/misc/wifi trên thiết bị.

  • WifiMigration.convertAndRetrieveUserConfigStoreFile(<storeFileId>)

    • Được gọi bởi mô-đun Wi-Fi để truy xuất nội dung tệp cửa hàng dành riêng cho người dùng Wi-Fi đã được chuyển đổi sang định dạng AOSP.

    • Các tệp này trước đây (trong Android 10) được lưu trữ trong thư mục /data/misc_ce/<userId>/wifi trên thiết bị.

Truy cập các API Wi-Fi ẩn

Các ký hiệu (lớp, phương thức, trường, v.v.) được chú thích bằng @hide trong mô-đun Wi-Fi không phải là một phần của bề mặt API công khai của nó và không thể truy cập được trên các thiết bị đã cài đặt mô-đun. Các thiết bị không bao gồm mô-đun Wi-Fi có thể tiếp tục sử dụng @hide Wi-Fi API bằng các bước sau.

  1. Loại bỏ các hạn chế về khả năng hiển thị được đặt trên framework-wifi tại packages/modules/Wifi/framework/Android.bp bằng cách thay đổi thuộc tính impl_library_visibility thành công khai.

    java_sdk_library {
        name: "framework-wifi",
        ...
        impl_library_visibility: [
           "//visibility:public", // Add this rule and remove others.
        ],
        ...
    }
    
  2. Thay đổi quy tắc xây dựng để cho phép các API Wi-Fi @hide truy cập thư viện. Ví dụ: sau đây là quy tắc xây dựng cho java_library .

    java_library {
        name: "foo-lib",
    
        // no sdk_version attribute defined
    
        libs: [
            "dependency1",
            "dependency2",
        ],
    }
    

    Để cho phép truy cập thư viện cho foo-lib , hãy thay đổi quy tắc xây dựng như được hiển thị bên dưới.

    java_library {
        name: "foo-lib",
    
        sdk_version: "core_platform",
    
        libs: [
            "framework-wifi.impl",
            "framework",
            "dependency1",
            "dependency2",
        ],
    }
    
  3. Đảm bảo rằng framework-wifi.impl xuất hiện trước framework trong danh sách libs . Thứ tự của các phụ thuộc trong thuộc tính libs là đáng kể.

Truy cập các API khung ẩn

Không thể truy cập các ký hiệu được chú thích bằng @hide bên ngoài mô-đun Wi-Fi bằng mã trong mô-đun Wi-Fi. Các thiết bị không bao gồm mô-đun Wi-Fi có thể tiếp tục sử dụng @hide API bên ngoài (ví dụ: từ framework.jar ) trong service-wifi bằng cách thực hiện các sửa đổi sau đối với frameworks/opt/net/wifi/service/Android.bp .

  1. Trong cả wifi-service-pre-jarjarservice-wifi , hãy thay đổi thuộc tính sdk_version thành core_platform .

  2. Trong cả wifi-service-pre-jarjarservice-wifi , hãy thêm frameworkandroid_system_server_stubs_current vào thuộc tính libs .

  3. Xác minh kết quả tương tự như mẫu mã sau đây.

    java_library {
        name: "wifi-service-pre-jarjar",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    ...
    java_library {
        name: "service-wifi",
        ...
        sdk_version: "core_platform",
        ...
        libs: [
            ...
            "framework",
            "android_system_server_stubs_current",
        ],
    }
    

Thử nghiệm

Bộ kiểm tra tính tương thích của Android (CTS) xác minh chức năng của mô-đun Wi-Fi bằng cách chạy một bộ kiểm tra CTS toàn diện trên mọi bản phát hành mô-đun. Bạn cũng có thể chạy các bài kiểm tra được mô tả trong Kiểm tra, gỡ lỗi và điều chỉnh Wi-Fi .