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

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

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

      《Android插件化開發指南》勘誤

      一些常識:

      1)全書70個代碼例子中,涉及到插件的例子,請先assemble插件的項目,這會在HostApp項目中生成assets目錄,并在該目錄下plugin1.apk。這樣,HostApp才能正常運行。

       

      2)本書基于Android6.0(API level 23)的源碼進行分析,本書的代碼在Android7.0(API level 24)手機上測試都是能正常工作的。對于Android 7.0以上版本,有些插件化的解決方案,已經過時了,比如AMN的gDefault字段。

       

      3)針對于Android8.0(API 26),Android8.1(API 27),Android9(API 28),插件化所需要做的適配工作,參加以下3篇文章(第2版作為第23章會放入書中):

            Android插件化的兼容性(上):Android O的適配

            Android插件化的兼容性(中):Android P的適配

            Android插件化的兼容性(下):突破Android P中灰黑名單的限制

       

      -----------------------------------------------------------

      2018年8月第1版第1次印刷和第2次印刷

      1)前言

      比如說AssetsManager的addAssetPath方法,ActivityThread的currentActivityThread方法

       

      這句話刪除,舉例不當。

       

      2)第2章,P25

      ActivityManagerNativ改為ActivityManagerNative

       

      3)第3章,P73

      如果只想獲取類的所有public構造函數,就不能再使用Class的getConstructors方法了,而要使用getDeclaredConstructors方法。

       

      這里寫反了,訂正如下:

      如果只想獲取類的所有public構造函數,只要調用Class的getConstructors方法就足夠了。

       

      4)第6章,P133

      applicationVariants.all { variant ->
              variant.outputs.each { output ->
                  def file = output.outputFile
                  output.outputFile = new File(file.parent,
                          "plugin1.apk")
      
                  println("$buildDir/outputs/apk/")
                  println("$rootDir/HostApp/src/main/assets")
      
                  copy {
                      from "$buildDir/outputs/apk/plugin1.apk"
                      into "$rootDir/HostApp/src/main/assets"
                  }
              }
      }

       

      上面這段腳本,有個瑕疵,要執行兩次的插件項目中的assembleRelease命令,才能在HostApp的assets目錄下生成plugin1.apk,訂正如下:

       

      assemble.doLast {
          android.applicationVariants.all { variant ->
              // Copy Release artifact to HostApp's assets and rename
              if (variant.name == "release") {
                  variant.outputs.each { output ->
                      File originFile = output.outputFile
                      println originFile.absolutePath
                      copy {
                          from originFile
                          into "$rootDir/HostApp/src/main/assets"
                          rename(originFile.name, "plugin1.apk")
                      }
                  }
              }
          }
      }

       

      接下來,執行插件項目的assemble命令,只要1次,即可生成在HostApp的assets目錄下生成plugin1.apk。

       

      5)第2章 P32

      App和ASM頻繁地向對方發送消息

       

      修改為:App和AMS頻繁地向對方發送消息

       

      6) 第2章,P44

      2.9.2

      在Service中,通過AMM/AMP

      訂正為:

      在Service中,通過AMN/AMP

       

      7)第2章,P37

      仍然是通過AMM/AMP

      訂正為:仍然是通過AMN/AMP

       

      8)前言,P5

      把android-pluginmgr設計為對Instrumentation的思想進行Hook

      訂正為: 把android-pluginmgr設計為對Instrumentation進行Hook

       

      9)第18章,P287

      ZeusStudy和1.6之間不應該有空格

       

      10)第2章 P21

      AndvoidManifest修改為AndroidManifest

       

      11)第2章 P22

      哪個,修改為那個

       

      12)P101

      圖中,多了一個-

      13)P102,第9行末尾,重寫的邏輯,把英文句點改為中文句號。

       

      14)P56

      “主要邏輯都再此實現”中的“再此”應該為“在此”

       

      15)113頁

      “對AMN的getDafault方法進行Hook”中“getDafault”應該為“getDefault”。default寫錯了

       

      16)110頁

      “currentActivity-Thread”多了一個橫線“-”

       

      17)124頁:

      倒數第三行“會把asset目錄中的插件”中的“asset目錄”應該為“assets目錄”。缺個s

       

      18)

      292頁:“它有一個getsSring函數”中的“getsSring”應該為“getString”

       

      19)

      319頁:“在Android Studio中建立一個過程”中的“過程”修改為“工程”。
       

       20)

      320頁:第2行:“同時在自定義的Class-Loader中”中的“Class-Loader”修改為“ClassLoader”。
       
      21)
      320頁
      第13行:“但是AndroidAndroid系統源碼中也有一些類”中的“AndroidAndroid”修改為“Android“
       
      22)235頁
      那么就通過10.3.2介紹的proxyCreateService方法
       
      10.3.2改為14.4.2
       
      23)238頁
      ServiceManager(省略了10.3.1介紹的proloadServices和10.3.2介紹的proxyCreateService)
      10.3.2改為14.4.2
      10.3.1改為14.4.3
      preloadServices 改為preLoadServices
       
      24)P97
      RefInvoke.setFieldObject(sPackageManager,”sPackageManager”,proxy);
      修改為
      RefInvoke.setFieldObject(currentActivityThread,”sPackageManager”,proxy);
       
      25)P100
      圖5-2中 Context/Contexztimpi  修改為Context/ContextImpl
       
      26)P5
      為張勇的DroidPlugin添加腳注:
      https://github.com/Qihoo360/DroidPlugin
       
      27)P194

      B準備好數據,寫到A要求的內存地址上,A就可以直接使用這些數據了
      改為
      A準備好數據,寫到B要求的內存地址上,B就可以直接使用這些數據了
       
      28)P196
      在B1中
      改為
      在A1中
       
      29)230
      設計一個ProxyServiceManager的例子,
      修改為
      設計一個ProxyServiceManager的單例
       
      30)235
      這時候,不能把插件Service1換成ProxyService
      修改為
      這時候,不能把插件MyService1換成ProxyService
       
      31)P245
       在sendBroadcastReceiver的時候
      改為
      sendBroadcast的時候
       
      32) P25
      AMN通過getDefault方法,從ServiceManager中取得一個名為activity的對象
      改為
      AMN通過getDefault方法,從ServiceManager中取得一個對象
       
      33)P25
      看到這里,你會發現AMP的startActivity方法,和AIDL的Proxy方法,是一模一樣的
      改為
      看到這里,你會發現AMP扮演著AIDL中的Proxy的角色,我們在2.3節介紹過AIDL的Proxy類。
       
      34) P42
      刪除以下兩行代碼

      Intent intent = new Intent(this, MyService.class);

      startService(intent);

      35)P55,刪除下面這2句話

      在插件化編程中,我們反射ActivityThread獲取apk包的信息,一般用于當前的宿主apk ,而不是插件apk

      ApplicationPackageManager實現了IPackageManager.Stub

       
      36) P181
      dat改為data
       
       
       
       
      posted @ 2018-07-16 10:30  包建強  Views(4860)  Comments(4)    收藏  舉報
      主站蜘蛛池模板: 2020久久香蕉国产线看观看| 少妇人妻精品无码专区视频| 久久99日本免费国产精品| 精品视频不卡免费观看| 色综合久久网| 精品国产三级a∨在线欧美| av偷拍亚洲一区二区三区| 2018年亚洲欧美在线v| 99久久99这里只有免费费精品| 福利网午夜视频一区二区| 亚洲色婷婷综合开心网| 亚洲日本欧美日韩中文字幕| 亚洲中文字幕综合网在线| 中文无码vr最新无码av专区| 景德镇市| 国产亚洲一区二区三区四区| 色窝窝免费播放视频在线| 国产手机在线αⅴ片无码观看 | 织金县| 人人妻人人澡人人爽曰本| 亚洲av熟女国产一二三| 亚洲国产精品自产在线播放| 精品国产一区二区三区香蕉| 中国国产免费毛卡片| 久久狠狠一本精品综合网| 免费看成人毛片无码视频| 张家川| 日韩精品 在线一区二区| 国产精品一区二区三区四| 九九热视频在线免费观看| 亚洲精品一区二区区别| 久久这里都是精品一区| 亚洲欧美日韩成人综合一区| 精品国产日韩亚洲一区| 亚洲av成人精品日韩一区| 久久综合97丁香色香蕉| 狠狠色丁香婷婷久久综合五月| 日韩区二区三区中文字幕| 精品亚洲一区二区三区四区| 亚洲av无码专区在线厂| 丰满少妇高潮无套内谢|