工作中Android編譯幾乎遇不到的問題,介面分離

來源:互聯網
上載者:User

trouble writing output: Too many methods: 65634; max is 65536. By package:(介面太多,撐破了。需要介面分離)
    26 android
   145 android.accessibilityservice
   700 android.accounts
   436 android.animation
     8 android.annotation
  3796 android.app
   240 android.app.admin
   308 android.app.backup
   105 android.appwidget
  1152 android.bluetooth
  1754 android.content
   964 android.content.pm
   566 android.content.res
   522 android.database
   497 android.database.sqlite
    91 android.ddm
     5 android.debug
   166 android.drm
    51 android.drm.mobile1
    30 android.emoji
    23 android.filterfw
   817 android.filterfw.core
。。。。。。

 

此問題為framework介面太多造成了Too many methods: 65634,Google原始最大可容納655345個介面,當Goolge給提供的介面不夠用時我們自己就需要在framework中加入一些介面,這樣就會導致介面超出65535這個數字,需要在\build\target\product\core.mk加入PRODUCT_PACKAGES,將一些多餘的介面加入到其它包中。

方法:https://github.com/CyanogenMod/android_frameworks_base/commit/854f6f736b90d33b59b5a85bcecf72a416c43b7d

 

40  Android.mk  show inline notes View file @ 854f6f7 ...  ...  @@ -28,10 +28,25 @@ framework_res_source_path := APPS/framework-res_intermediates/src 28  28    29  29   # the library 30  30   # ============================================================    31  +#    32  +# These will be included in framework2 to avoid issues with the limit    33  +# on the number of classes/dex    34  +SECONDARY_FRAMEWORKS_SUBDIRS := \    35  +        core/java/android/test \    36  +        core/java/android/gesture \    37  +        core/java/android/speech/srec \    38  +        media/java/android/media/videoeditor \    39  +        media/java/android/media/audiofx \    40  +        media/mca/effect/java/android/media/effect \    41  +        media/mca/effect/java/android/media/effect/effects    42  + 31  43   include $(CLEAR_VARS) 32  44    33  45   # FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk 34  46   LOCAL_SRC_FILES := $(call find-other-java-files,$(FRAMEWORKS_BASE_SUBDIRS))    47  +SECONDARY_SRC_FILES := $(call find-other-java-files,$(SECONDARY_FRAMEWORKS_SUBDIRS))    48  +    49  +LOCAL_SRC_FILES := $(filter-out $(SECONDARY_SRC_FILES),$(LOCAL_SRC_FILES)) 35  50    36  51   # EventLogTags files. 37  52   LOCAL_SRC_FILES += \ ...  ...  @@ -252,6 +267,7 @@ $(full_classes_compiled_jar): $(framework_res_R_stamp) 252  267   $(LOCAL_INSTALLED_MODULE): | $(dir $(LOCAL_INSTALLED_MODULE))framework-res.apk 253  268    254  269   framework_built := $(call java-lib-deps,framework)    270  +framework_built += $(call java-lib-deps,framework2) 255  271    256  272   # AIDL files to be preprocessed and included in the SDK, 257  273   # relative to the root of the build tree. ...  ...  @@ -390,6 +406,7 @@ framework_docs_LOCAL_JAVA_LIBRARIES := \ 390  406         core \ 391  407         ext \ 392  408         framework \    409  +      framework2 \ 393  410    394  411   framework_docs_LOCAL_MODULE_CLASS := JAVA_LIBRARIES 395  412   framework_docs_LOCAL_DROIDDOC_HTML_DIR := docs/html ...  ...  @@ -664,7 +681,7 @@ include $(CLEAR_VARS) 664  681    665  682   LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES) 666  683   LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES) 667     -LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES) framework    684  +LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES) framework framework2 668  685   LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS) 669  686   LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH) 670  687   LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR) ...  ...  @@ -717,6 +734,26 @@ LOCAL_DX_FLAGS := --core-library 717  734    718  735   include $(BUILD_JAVA_LIBRARY) 719  736       737  +include $(CLEAR_VARS)    738  +    739  +# FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk    740  +LOCAL_SRC_FILES := $(call find-other-java-files,$(SECONDARY_FRAMEWORKS_SUBDIRS))    741  +    742  +LOCAL_NO_STANDARD_LIBRARIES := true    743  +LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit ext framework    744  +    745  +LOCAL_MODULE_TAGS := optional    746  +LOCAL_MODULE := framework2    747  +LOCAL_MODULE_CLASS := JAVA_LIBRARIES    748  +    749  +LOCAL_NO_EMMA_INSTRUMENT := true    750  +LOCAL_NO_EMMA_COMPILE := true    751  +    752  +#LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt    753  +    754  +LOCAL_DX_FLAGS := --core-library    755  +    756  +include $(BUILD_JAVA_LIBRARY) 720  757    721  758   # Include subdirectory makefiles 722  759   # ============================================================ ...  ...  @@ -726,3 +763,4 @@ include $(BUILD_JAVA_LIBRARY) 726  763   ifeq (,$(ONE_SHOT_MAKEFILE)) 727  764   include $(call first-makefiles-under,$(LOCAL_PATH)) 728  765   endif    766  + 

 

2  test-runner/Android.mk  show inline notes View file @ 854f6f7 ...  ...  @@ -20,7 +20,7 @@ include $(CLEAR_VARS) 20  20    21  21   LOCAL_SRC_FILES := $(call all-java-files-under, src) 22  22    23     -LOCAL_JAVA_LIBRARIES := core core-junit framework    23  +LOCAL_JAVA_LIBRARIES := core core-junit framework framework2 24  24    25  25   LOCAL_MODULE:= android.test.runner 26  26    

轉自:http://blog.csdn.net/wzy0467/article/details/7970681

trouble writing output: Too many methods: 65634; max is 65536. By package:(介面太多,撐破了。需要介面分離)
    26 android
   145 android.accessibilityservice
   700 android.accounts
   436 android.animation
     8 android.annotation
  3796 android.app
   240 android.app.admin
   308 android.app.backup
   105 android.appwidget
  1152 android.bluetooth
  1754 android.content
   964 android.content.pm
   566 android.content.res
   522 android.database
   497 android.database.sqlite
    91 android.ddm
     5 android.debug
   166 android.drm
    51 android.drm.mobile1
    30 android.emoji
    23 android.filterfw
   817 android.filterfw.core
。。。。。。

 

此問題為framework介面太多造成了Too many methods: 65634,Google原始最大可容納655345個介面,當Goolge給提供的介面不夠用時我們自己就需要在framework中加入一些介面,這樣就會導致介面超出65535這個數字,需要在\build\target\product\core.mk加入PRODUCT_PACKAGES,將一些多餘的介面加入到其它包中。

方法:https://github.com/CyanogenMod/android_frameworks_base/commit/854f6f736b90d33b59b5a85bcecf72a416c43b7d

 

40  Android.mk  show inline notes View file @ 854f6f7 ...  ...  @@ -28,10 +28,25 @@ framework_res_source_path := APPS/framework-res_intermediates/src 28  28    29  29   # the library 30  30   # ============================================================    31  +#    32  +# These will be included in framework2 to avoid issues with the limit    33  +# on the number of classes/dex    34  +SECONDARY_FRAMEWORKS_SUBDIRS := \    35  +        core/java/android/test \    36  +        core/java/android/gesture \    37  +        core/java/android/speech/srec \    38  +        media/java/android/media/videoeditor \    39  +        media/java/android/media/audiofx \    40  +        media/mca/effect/java/android/media/effect \    41  +        media/mca/effect/java/android/media/effect/effects    42  + 31  43   include $(CLEAR_VARS) 32  44    33  45   # FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk 34  46   LOCAL_SRC_FILES := $(call find-other-java-files,$(FRAMEWORKS_BASE_SUBDIRS))    47  +SECONDARY_SRC_FILES := $(call find-other-java-files,$(SECONDARY_FRAMEWORKS_SUBDIRS))    48  +    49  +LOCAL_SRC_FILES := $(filter-out $(SECONDARY_SRC_FILES),$(LOCAL_SRC_FILES)) 35  50    36  51   # EventLogTags files. 37  52   LOCAL_SRC_FILES += \ ...  ...  @@ -252,6 +267,7 @@ $(full_classes_compiled_jar): $(framework_res_R_stamp) 252  267   $(LOCAL_INSTALLED_MODULE): | $(dir $(LOCAL_INSTALLED_MODULE))framework-res.apk 253  268    254  269   framework_built := $(call java-lib-deps,framework)    270  +framework_built += $(call java-lib-deps,framework2) 255  271    256  272   # AIDL files to be preprocessed and included in the SDK, 257  273   # relative to the root of the build tree. ...  ...  @@ -390,6 +406,7 @@ framework_docs_LOCAL_JAVA_LIBRARIES := \ 390  406         core \ 391  407         ext \ 392  408         framework \    409  +      framework2 \ 393  410    394  411   framework_docs_LOCAL_MODULE_CLASS := JAVA_LIBRARIES 395  412   framework_docs_LOCAL_DROIDDOC_HTML_DIR := docs/html ...  ...  @@ -664,7 +681,7 @@ include $(CLEAR_VARS) 664  681    665  682   LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES) 666  683   LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES) 667     -LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES) framework    684  +LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES) framework framework2 668  685   LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS) 669  686   LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH) 670  687   LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR) ...  ...  @@ -717,6 +734,26 @@ LOCAL_DX_FLAGS := --core-library 717  734    718  735   include $(BUILD_JAVA_LIBRARY) 719  736       737  +include $(CLEAR_VARS)    738  +    739  +# FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk    740  +LOCAL_SRC_FILES := $(call find-other-java-files,$(SECONDARY_FRAMEWORKS_SUBDIRS))    741  +    742  +LOCAL_NO_STANDARD_LIBRARIES := true    743  +LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit ext framework    744  +    745  +LOCAL_MODULE_TAGS := optional    746  +LOCAL_MODULE := framework2    747  +LOCAL_MODULE_CLASS := JAVA_LIBRARIES    748  +    749  +LOCAL_NO_EMMA_INSTRUMENT := true    750  +LOCAL_NO_EMMA_COMPILE := true    751  +    752  +#LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt    753  +    754  +LOCAL_DX_FLAGS := --core-library    755  +    756  +include $(BUILD_JAVA_LIBRARY) 720  757    721  758   # Include subdirectory makefiles 722  759   # ============================================================ ...  ...  @@ -726,3 +763,4 @@ include $(BUILD_JAVA_LIBRARY) 726  763   ifeq (,$(ONE_SHOT_MAKEFILE)) 727  764   include $(call first-makefiles-under,$(LOCAL_PATH)) 728  765   endif    766  + 

 

2  test-runner/Android.mk  show inline notes View file @ 854f6f7 ...  ...  @@ -20,7 +20,7 @@ include $(CLEAR_VARS) 20  20    21  21   LOCAL_SRC_FILES := $(call all-java-files-under, src) 22  22    23     -LOCAL_JAVA_LIBRARIES := core core-junit framework    23  +LOCAL_JAVA_LIBRARIES := core core-junit framework framework2 24  24    25  25   LOCAL_MODULE:= android.test.runner 26  26    

轉自:http://blog.csdn.net/wzy0467/article/details/7970681

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.