<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發(fā)

      導(dǎo)航

      Android 插件化技術(shù)窺探

      在Android 插件化技術(shù)中(宿主app和插件app設(shè)置相同的sharedUserId),動態(tài)加載apk有兩種方式:

      • 一種是將資源主題包的apk安裝到手機上再讀取apk內(nèi)的資源,這種方式的原理是將宿主app和插件app設(shè)置相同的sharedUserId,這樣兩個app將會在同一個進程中運行,并可以相互訪問內(nèi)部資源了。
      • 一種是不用安裝資源apk的方式。其原理是通過DexClassLoader類加載器去加載指定路徑下的apk、dex或者jar文件,反射出R類中相應(yīng)的內(nèi)部類然后根據(jù)資源名來獲取我們需要的資源id,然后根據(jù)資源id得到對應(yīng)的圖片或者xml文件。

      下面介紹幾種常見的方法獲取資源以及代碼的方法。

      • 獲取已安裝的APK中的資源
        利用Context的createPackageContext方法,可以創(chuàng)建另外一個包的上下文,里面有兩個參數(shù)packageName包名,flags 標志位(CONTEXT_INCLUDE_CODE、CONTEXT_IGNORE_SECURITY)
        用法如下
      try {  
          context = createPackageContext("com.test.resource", 
                                         Context.CONTEXT_INCLUDE_CODE  
                                        | Context.CONTEXT_IGNORE_SECURITY);  
          textView.setText(context.getResources().getText(R.string.message));  
      } catch (NameNotFoundException e) {  
         e.printStackTrace();  
      }  
      • 獲取未安裝的APK中的資源

      新建一個獲取資源的接口,傳入插件APK的路徑返回Resources對象

      // 獲取插件apk的Resources對象
      public Resources getBundleResource(Context context, String apkPath) {
          AssetManager assetManager = createAssetManager(apkPath);
          return new Resources(assetManager, 
                               context.getResources().getDisplayMetrics(), 
                               context.getResources().getConfiguration());
      }
      
      private AssetManager createAssetManager(String apkPath) {
          try {
              AssetManager assetManager = AssetManager.class.newInstance();
              AssetManager.class.getDeclaredMethod("addAssetPath", String.class)
                                .invoke(assetManager, apkPath);
              return assetManager;
          } catch (Throwable th) {
              th.printStackTrace();
          }
          return null;
      }

      獲得了Resource 對象之后,就可以通過函數(shù)resources.getDrawable、resources.getString、resources.getLayout 獲取圖片、字符串、布局文件了。



      posted on 2019-02-19 15:21  安卓筆記俠  閱讀(585)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 左权县| 91精品国产午夜福利| 大地资源免费视频观看| 精品黄色av一区二区三区| 中国熟妇毛多多裸交视频| 宅男噜噜噜66在线观看| 亚洲人成网站观看在线观看| 国产精品三级黄色小视频| 榆社县| 人人妻人人狠人人爽天天综合网| 欧美成人www免费全部网站| 啦啦啦高清在线观看视频www| 国产AV巨作丝袜秘书| 无码人妻一区二区三区av| 中文在线天堂中文在线天堂| 艳妇乳肉豪妇荡乳在线观看| 亚洲深夜精品在线观看| 欧美亚洲另类自拍偷在线拍| 亚洲国产成人字幕久久 | 99e久热只有精品8在线直播| 亚洲乱码一区二区三区视色| 亚洲熟妇无码爱v在线观看| 久久日韩精品一区二区五区| 国产国拍亚洲精品永久软件| 成人午夜在线观看刺激| 亚洲久久色成人一二三区| 秋霞在线观看秋| 婷婷综合亚洲| 昆明市| 免费无码肉片在线观看| 熟女一区| 国产一区二区在线有码| 改则县| 亚洲欧洲一区二区免费| 久久久久免费看少妇高潮A片| 色狠狠色噜噜AV一区| 国产色悠悠综合在线观看| 亚洲精品一区二区动漫| 久久精品国产亚洲精品2020| 久青草国产综合视频在线| 自拍亚洲综合在线精品|