Android 9之後已經啟動androidx的library,也就是將來support library將不再maintain了
由於google官網只提供Android studio的升級步驟,對於開發AOSP寫Android.mk的卻都沒有著墨
參考了google在AOSP上的其它APP,整理測試後可依下列步驟修改來進行升級到androidx
1. 修改Android.mk, 註1
新增
//使用androidx lib LOCAL_USE_AAPT2 := true //APP使用了哪個lib就置換成相對應的 LOCAL_STATIC_JAVA_LIBRARIES := \ androidx.appcompat_appcompat \ (修改前:android-support-v7-appcompat) androidx.cardview_cardview \ (修改前:android-support-v7-cardview)
2. 替換所有的java檔的import, 註2
import androidx.appcompat.app.AlertDialog; //(修改前: import android.support.v7.app.AlertDialog)
3. 若遇到thrid-party的jar檔,也須同步更新
4.若遇到下列錯誤訊息需修改proguard.cfg
Warning: android.support.v4.media.SessionToken2ImplLegacy: can't find referenced method 'android.support.v4.media.session.MediaSessionCompat$Token fromBundle(android.os.Bundle)' in program class android.support.v4.media.session.MediaSessionCompat$Token
Warning: there were 6 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
Error: Please correct the above warnings first.
在最下方加入
# The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.**
註1: 參考官網Artifact Mappings置換,但須注意官網列的是studio的作法,這裡『:』須改成『_』
註2: 參考官網Class Mappings修改所有的import
Place your comment