支付 Demo 引用官方 Library 項目,運行報錯:Default Activity not found / No main method,但代碼中明確存在 MainActivity / main 方法。
在 Project Structure / Module Settings 中,**勾選了 "Library" 選項 (Is Library = true)**。這將模組標記為 **Android Library (AAR)**,而非 **Android Application (APK)**。
.aar,供其他模組 implementation project(':lib') 引用,**無清單合併、無入口 Activity、不可安裝運行**。.apk,含 AndroidManifest.xml 完整配置,**可直接安裝調試**。File > Project Structure (或 Ctrl+Alt+Shift+S)。payment-demo)。Apply > OK,Gradle 同步。
:app (Application) :official-sdk (Library)
| |
|--- implementation project(':official-sdk') <-- 正確引用方式
|
|---> 產出 APK (可運行)
:official-sdk 產出 AAR (被引用)
manifest 入口 —— **無效**,Gradle 會忽略 Library 模組的 <activity> 入口屬性。core-lib (Library) + feature-a (Application) + feature-b (Application) + demo-app (Application)。
./gradlew :app:assembleDebug # 產出 app/build/outputs/apk/debug/app-debug.apk
./gradlew :official-sdk:build # 產出 official-sdk/build/outputs/aar/official-sdk-release.aar
「Is Library」一個勾選,決定了模組的生命週期與產出物類型。**Demo 必須是 Application,公共代碼才是 Library** —— 這是 Gradle/Android 構建系統的鐵律。