Android插件化方案-RePlugin內(nèi)置插件踩坑

1.新建兩個(gè)module死宣,plugins 和 host搓幌,然后在project的build.gradle添加對(duì)應(yīng)的依賴,可在同一個(gè)項(xiàng)目也可分兩個(gè)項(xiàng)目育苟,此處圖省事丟到同一個(gè)project

classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4'
classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.4'

2.在app plugins的build.gradle添加

compile 'com.qihoo360.replugin:replugin-plugin-lib:2.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'

然后設(shè)置

// 這個(gè)plugin需要放在android配置之后筹裕,因?yàn)樾枰x取android中的配置項(xiàng)
apply plugin: 'replugin-plugin-gradle'
repluginPluginConfig {
    //插件名
    pluginName = "test"
    //宿主app的包名
    hostApplicationId = "com.lei.simpletest.host"
    //宿主app的啟動(dòng)activity
    hostAppLauncherActivity = "com.lei.simpletest.host.MainActivity"
}

3.app host的build.gradle添加

compile 'com.qihoo360.replugin:replugin-host-lib:2.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'

然后

// ATTENTION!!! Must be PLACED AFTER "android{}" to read the applicationId
apply plugin: 'replugin-host-gradle'

/**
 * 配置項(xiàng)均為可選配置醋闭,默認(rèn)無(wú)需添加
 * 更多可選配置項(xiàng)參見(jiàn)replugin-host-gradle的RepluginConfig類
 * 可更改配置項(xiàng)參見(jiàn) 自動(dòng)生成RePluginHostConfig.java
 */
repluginHostConfig {
    /**
     * 是否使用 AppCompat 庫(kù)
     * 不需要個(gè)性化配置時(shí)窄驹,無(wú)需添加
     */
    useAppCompat = true
    /**
     * 背景不透明的坑的數(shù)量
     */
    countNotTranslucentStandard = 6
    countNotTranslucentSingleTop = 2
    countNotTranslucentSingleTask = 3
    countNotTranslucentSingleInstance = 2
}

4.把plugins的app跑一個(gè)debug.apk或者簽名包朝卒,改名為pluginName填寫的插件名.jar,然后放到host app的main/assets/plugins中我的是test.jar
5.調(diào)用插件的主界面

RePlugin.startActivity(MainActivity.this,RePlugin.createIntent("test",
                        "com.lei.RePlugin.MainActivity"));

6.坑
bug1

Error:No resource found that matches the given name (at 'theme' with value '@style/Theme.AppCompat').

應(yīng)該是主題的原因乐埠,據(jù)說(shuō) useAppCompat = true可以關(guān)閉抗斤,果斷干掉,然而并沒(méi)有卵用
bug2

 FATAL EXCEPTION: main
                                                                       Process: com.lei.simpletest.host, PID: 6962
                                                                       java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
                                                                           at com.qihoo360.loader2.PmBase.registerReceiverAction(PmBase.java:632)
                                                                           at com.qihoo360.loader2.PmBase.callAppCreate(PmBase.java:622)
                                                                           at com.qihoo360.loader2.PMF.callAppCreate(PMF.java:84)
                                                                           at com.qihoo360.replugin.RePlugin$App.onCreate(RePlugin.java:1002)
                                                                           at com.qihoo360.replugin.RePluginApplication.onCreate(RePluginApplication.java:74)
                                                                           at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
                                                                           at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4384)
                                                                           at android.app.ActivityThread.access$1500(ActivityThread.java:138)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:149)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5061)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
                                                                           at dalvik.system.NativeStart.main(Native Method)

看信息是缺360的插件缺v4包,v7包默認(rèn)引用這個(gè)丈咐,然后把注釋的useAppCompat = true放開(kāi)瑞眼,直接依賴v7包 解決

compile 'com.android.support:appcompat-v7:25.3.1'

bug3 特別莫名其妙

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.lei.simpletest.host, PID: 1236
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lei.simpletest.host/com.lei.simpletest.host.loader.a.ActivityN1NRNTS3}: android.content.res.Resources$NotFoundException: File res/layout/activity_main.xml from drawable resource ID #0x7f030000
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2235)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285)
                                                                           at android.app.ActivityThread.access$800(ActivityThread.java:138)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:149)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5061)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: android.content.res.Resources$NotFoundException: File res/layout/activity_main.xml from drawable resource ID #0x7f030000
                                                                           at android.content.res.Resources.loadDrawable(Resources.java:2097)
                                                                           at android.content.res.Resources.getDrawable(Resources.java:700)
                                                                           at com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:699)
                                                                           at com.android.internal.policy.impl.PhoneWindow.setDefaultIcon(PhoneWindow.java:1446)
                                                                           at android.app.Activity.initActionBar(Activity.java:1915)
                                                                           at android.app.Activity.setContentView(Activity.java:1930)
                                                                           at com.lei.RePlugin.MainActivity.onCreate(MainActivity.java:11)
                                                                           at android.app.Activity.performCreate(Activity.java:5231)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285) 
                                                                           at android.app.ActivityThread.access$800(ActivityThread.java:138) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:149) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5061) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 
                                                                        Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag RelativeLayout

plugins的build.gradle添加v7包依賴解決,對(duì)著官方代碼瞅出來(lái)的棵逊,我也不知道為啥
反正能使了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伤疙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徒像,老刑警劉巖黍特,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锯蛀,居然都是意外死亡灭衷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門旁涤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翔曲,“玉大人,你說(shuō)我怎么就攤上這事劈愚⊥椋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵造虎,是天一觀的道長(zhǎng)傅蹂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)算凿,這世上最難降的妖魔是什么份蝴? 我笑而不...
    開(kāi)封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮氓轰,結(jié)果婚禮上婚夫,老公的妹妹穿的比我還像新娘。我一直安慰自己署鸡,他們只是感情好案糙,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著靴庆,像睡著了一般时捌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炉抒,一...
    開(kāi)封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天奢讨,我揣著相機(jī)與錄音,去河邊找鬼焰薄。 笑死拿诸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塞茅。 我是一名探鬼主播亩码,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼野瘦!你這毒婦竟也來(lái)了描沟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吏廉,沒(méi)想到半個(gè)月后蠢络,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迟蜜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年刹孔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜睛。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡髓霞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畦戒,到底是詐尸還是另有隱情方库,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布障斋,位于F島的核電站纵潦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏垃环。R本人自食惡果不足惜邀层,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遂庄。 院中可真熱鬧寥院,春花似錦、人聲如沸涛目。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霹肝。三九已至估蹄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沫换,已是汗流浹背臭蚁。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苗沧,地道東北人刊棕。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓炭晒,卻偏偏與公主長(zhǎng)得像待逞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子网严,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一识樱、折騰:來(lái)源于滿語(yǔ)的音譯,有三種基本解釋;對(duì)事物進(jìn)行翻來(lái)覆去怜庸、反復(fù)的做和折磨的一種動(dòng)作形態(tài)当犯。所謂折騰,就是沒(méi)事找...
    crazybiker閱讀 1,141評(píng)論 0 1
  • 寫日記堅(jiān)持了很久割疾,每天寫寫做什么了嚎卫,開(kāi)心的事,不開(kāi)心的事宏榕。挺好
    愛(ài)情遠(yuǎn)的要命閱讀 118評(píng)論 0 0
  • (?°з°)-
    CYC666閱讀 315評(píng)論 8 0