AndroidStudio 里怎么查看源码

AndroidStudio \u91cc\u600e\u4e48\u67e5\u770b\u6e90\u7801

\u672c\u6587\u662f\u4ee5\u6e90\u7801\u4e2ddevelopment/tools/idegen/README\u4f5c\u4e3a\u6307\u5bfc\u6587\u6863.

\u73af\u5883: Ubuntu 14.10\uff0copenJdk 1.7\uff0cAndroid Studio 1.0.2\uff0candroid-5.0.1_r1\u6e90\u7801

\u7531\u4e8eAS\u662f\u57fa\u4e8eIntelliJ IDEA\u5f00\u53d1\u7684\uff0c\u6240\u4ee5\u672c\u6587\u4e5f\u9002\u7528\u4e8eIntelliJ IDEA



\u4e00\u3001\u4fee\u6539Android Studio(\u4ee5\u4e0b\u7b80\u79f0AS)\u7684\u5185\u5b58\u914d\u7f6e

\u56e0\u4e3a\u5728\u5bfc\u5165\u6e90\u7801\u65f6\u9700\u8981\u6d88\u8017\u5927\u91cf\u5185\u5b58\uff0c\u6240\u4ee5\u5148\u4fee\u6539IDEA_HOME/bin/studio64.vmoptions(x86\u7684\u673a\u5668\u4fee\u6539studio.vmoptions)\u4e2d-Xms\u548c-Xmx\u7684\u503c\u3002\u6587\u6863\u4e2d\u4f7f\u7528\u7684\u662f748m, \u53ef\u81ea\u884c\u4fee\u6539\u3002

\u4e8c\u3001\u914d\u7f6eAS\u7684JDK\u3001SDK

\u5728IDE\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u6ca1\u6709classpath\u7684JDK, \u8fd9\u6837\u53ef\u4ee5\u786e\u4fdd\u4f7f\u7528\u6e90\u7801\u91cc\u7684\u5e93\u6587\u4ef6



\u5e76\u5c06\u5176\u4f5c\u4e3a\u8981\u4f7f\u7528\u7684SDK\u7684Java SDK\u3002\u5982\u4e0b\u56fe



\u4e09\u3001\u751f\u6210\u5bfc\u5165AS\u6240\u9700\u914d\u7f6e\u6587\u4ef6(*.ipr)

\u2460\u7f16\u8bd1\u6e90\u7801(\u4e3a\u4e86\u786e\u4fdd\u751f\u6210\u4e86.java\u6587\u4ef6\uff0c\u5982R.java\uff1b\u5982\u679c\u7f16\u8bd1\u8fc7\uff0c\u5219\u65e0\u9700\u518d\u6b21\u7f16\u8bd1)

\u2461\u68c0\u67e5out/host/linux-x86/framework/\u76ee\u5f55\u4e0b\u662f\u5426\u6709idegen.jar

\u5982\u679cidegen.jar\u4e0d\u5b58\u5728\uff0c\u6267\u884c:

mmm development/tools/idegen/
\u57285.0.1\u7684\u6e90\u7801\u4e2d\u4f1a\u751f\u6210res.java\u7684\u6587\u4ef6\u5939\uff0c\u5bfc\u81f4idegen.jar\u8fd0\u884c\u65f6\u629bFileNotFoundException\uff0c\u8fd9\u662fidegen\u7684\u4ee3\u7801\u4e0d\u591f\u4e25\u8c28\u9020\u6210\u7684\u3002

\u6211\u7684\u5206\u4eab\u91cc\u6709\u4fee\u6539\u8fd9\u4e2abug\u7684patch\uff0c\u6216\u8005\u76f4\u63a5\u4f7f\u7528\u6211\u5206\u4eab\u7684idegen.jar\u3002

\u2462\u6267\u884c

development/tools/idegen/idegen.sh
\u7b49\u5f85\u51fa\u73b0\u7c7b\u4f3c\u4e0b\u9762\u7684\u7ed3\u679c:

Read excludes: 5ms
Traversed tree: 44078ms
\u8fd9\u65f6\u4f1a\u5728\u6e90\u7801\u7684\u6839\u76ee\u5f55\u4e0b\u751f\u6210android.ipr\u548candroid.iml\u4e24\u4e2aIntelliJ IDEA(AS\u662f\u57fa\u4e8eIntelliJ IDEA\u793e\u533a\u7248\u5f00\u53d1\u7684)\u7684\u914d\u7f6e\u6587\u4ef6

Tips\uff1a

AS\u5728\u5bfc\u5165\u4ee3\u7801\u65f6\u6bd4\u8f83\u6162\uff0c\u5efa\u8bae\u5148\u4fee\u6539android.iml\uff0c\u5c06\u81ea\u5df1\u7528\u4e0d\u5230\u7684\u4ee3\u7801exclude\u51fa\u53bb.\u53ef\u4ee5\u4eff\u7167\u8fc7\u6ee4.repo\u6587\u4ef6\u5939\u7684\u8bed\u6cd5,\u5982:





\u8fd9\u6837\u5728\u5bfc\u5165\u65f6\u5c31\u4f1a\u8df3\u8fc7abi\u548cart\u6587\u4ef6\u5939.\u8fc7\u6ee4\u7684\u8d8a\u591a\uff0cAS\u7684\u5904\u7406\u901f\u5ea6\u5c31\u4f1a\u8d8a\u5feb.

\u2463\u5728AS\u4e2d\u6253\u5f00\u6e90\u7801\u6839\u76ee\u5f55\u4e0b\u65b0\u751f\u6210\u7684android.ipr

\u5982\u679c\u5728\u5bfc\u5165\u65f6AS\u51fa\u73b0



\u5219\u5efa\u8bae\u6309\u7167\u5176\u7ed9\u5b9a\u7684\u89e3\u51b3\u65b9\u6cd5\u6765\u89e3\u51b3(\u7f51\u5740:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit)\uff0c\u5177\u4f53\u5185\u5bb9\u5982\u4e0b\u56fe:



\u56db\u3001\u89e3\u51b3\u6e90\u7801\u4e2d\u8df3\u8f6c\u9519\u8bef\u95ee\u9898

\u2460\u4e3a\u5f53\u524d\u5de5\u7a0b\u8bbe\u7f6e\u6b63\u786e\u7684SDK\u548cJDK



\u2461\u8bbe\u7f6e'Modules'\u7684\u4f9d\u8d56



\u5148\u5c06\u6240\u6709\u4f9d\u8d56\u5220\u6389\uff0c\u53ea\u7559\u4e0b\u4e0a\u56fe'1'\u6240\u6307\u5411\u7684\u4e24\u4e2a(\u6ce8\u610f:\u8fd9\u91cc\u5220\u9664\u5168\u90e8\u53ea\u662f\u4e3a\u4e86\u65b9\u4fbf\u3002\u5982\u679c\u786e\u5b9e\u7528\u5230\u4e86.jar,\u5728\u5c06\u5b83\u4eec\u7684\u8def\u5f84\u6dfb\u52a0\u8fdb\u6765\u5c31\u53ef\u4ee5\u4e86.

\u5982:5.0.1\u7684ContactsCommon\u7528\u5230\u4e86geocoder-2.9.jar\u548clibphonenumber-6.2.jar)

\u70b9\u51fb\u4e0a\u56fe\u4e2d'2'\u6307\u5411\u7684'+'\u5e76\u9009\u62e9\u4e0a\u56fe'3'\u6307\u5411\u7684'Jars or directories'\u9009\u9879\uff0c\u4f9d\u6b21\u5c06frameworks\u548cexternal\u6587\u4ef6\u5939\u6dfb\u52a0\u8fdb\u6765.\u5982:



\u5176\u5b83\u7248\u672c\u7684\u4ee3\u7801\u5728\u6dfb\u52a0frameworks\u65f6\u53ef\u80fd\u4f1a\u663e\u793a\u6210:



\u6ca1\u6709\u5173\u7cfb\uff0c\u53ea\u662f\u663e\u793a\u95ee\u9898\uff0c\u70b9\u51fbOK\u8fd8\u662f\u4f1a\u628aframeworks\u8def\u5f84\u6dfb\u52a0\u8fdb\u53bb\u7684.

\u5982\u679c\u8fd8\u6709\u4ee3\u7801\u8df3\u8f6c\u9519\u8bef\uff0c\u8bf7\u4eff\u7167\u4e0a\u9762\u7684\u6b65\u9aa4\u5c06\u76f8\u5e94\u4ee3\u7801\u7684\u8def\u5f84\u6216jar\u6587\u4ef6\u6dfb\u52a0\u5230\u5176Dependencies\u6807\u7b7e\u9875\u4e2d\u5373\u53ef.

\u4e94\u3001DEBUG\u6e90\u7801

\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u7ed9\u521a\u5bfc\u5165\u7684\u5de5\u7a0b\u5728'Modules'\u4e2d\u6dfb\u52a0'Android Framework'\u6765\u8ba9AS\u5c06\u5b83\u4f5c\u4e3a\u4e00\u4e2aAndroid\u5de5\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u6211\u4eec\u8c03\u8bd5\u4ee3\u7801.



\u53ef\u4ee5\u6309\u7167\u4e0a\u56fe\u4e2d'1'\u548c'2'\u6765\u6dfb\u52a0Android Framework\u652f\u6301.

\u5728\u4ee3\u7801\u4e2d\u52a0\u65ad\u70b9\uff0c\u7136\u540e\u9009\u62e9'Run'->'Attach debugger to Android process'\u6216\u8005\u76f4\u63a5\u70b9\u51fb\u4e0b\u56fe\u6240\u793a\u7684\u56fe\u6807

\u5728\u5f39\u51fa\u7684\u9009\u62e9\u8fdb\u7a0b(Choose Process)\u5bf9\u8bdd\u6846\u4e2d\uff0c\u52fe\u9009\u663e\u793a\u6240\u6709\u8fdb\u7a0b\uff0c\u9009\u62e9\u8981DEBUG\u7684\u4ee3\u7801\u6240\u5728\u7684\u8fdb\u7a0b\uff0c\u70b9\u51fbOK\u5373\u53ef.

\u516d\u3001\u5176\u5b83

\u4ee3\u7801\u4e2d\u5f88\u591a\u5730\u65b9\u63d0\u793aCall requires API Level x.... \u51fa\u73b0\u8fd9\u4e2a\u95ee\u9898\u662f\u56e0\u4e3aAS\u5c06\u6211\u4eec\u7684\u5de5\u7a0b\u5f53\u505a\u5b89\u5353\u5e94\u7528\u7a0b\u5e8f\u5de5\u7a0b\u4e86\uff0c\u4e14\u6e90\u7801\u4e2d\u6ca1\u6709\u6307\u5b9aminSdkVersion.

\u6211\u4eec\u53ea\u9700\u5728\u6e90\u7801\u6839\u76ee\u5f55\u52a0\u4e00\u4e2a\u58f0\u660eminSdkVersion\u7684AndroidManifest.xml\u6587\u4ef6\u5373\u53ef(\u5206\u4eab\u4e86\u4e00\u4e2aAndroidManifest.xml)\u3002

\u4e5f\u53ef\u4ee5\u8003\u8651\u4f7f\u7528build.gradle\u6765\u89e3\u51b3\u8be5\u95ee\u9898\u3002

\u672c\u6587\u662f\u4ee5\u6e90\u7801\u4e2ddevelopment/tools/idegen/README\u4f5c\u4e3a\u6307\u5bfc\u6587\u6863.

\u73af\u5883: Ubuntu 14.10\uff0copenJdk 1.7\uff0cAndroid Studio 1.0.2\uff0candroid-5.0.1_r1\u6e90\u7801

\u7531\u4e8eAS\u662f\u57fa\u4e8eIntelliJ IDEA\u5f00\u53d1\u7684\uff0c\u6240\u4ee5\u672c\u6587\u4e5f\u9002\u7528\u4e8eIntelliJ IDEA

\u4e00\u3001\u4fee\u6539Android Studio(\u4ee5\u4e0b\u7b80\u79f0AS)\u7684\u5185\u5b58\u914d\u7f6e

\u56e0\u4e3a\u5728\u5bfc\u5165\u6e90\u7801\u65f6\u9700\u8981\u6d88\u8017\u5927\u91cf\u5185\u5b58\uff0c\u6240\u4ee5\u5148\u4fee\u6539IDEA_HOME/bin/studio64.vmoptions(x86\u7684\u673a\u5668\u4fee\u6539studio.vmoptions)\u4e2d-Xms\u548c-Xmx\u7684\u503c\u3002\u6587\u6863\u4e2d\u4f7f\u7528\u7684\u662f748m, \u53ef\u81ea\u884c\u4fee\u6539\u3002

\u4e8c\u3001\u914d\u7f6eAS\u7684JDK\u3001SDK

\u5728IDE\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u6ca1\u6709classpath\u7684JDK, \u8fd9\u6837\u53ef\u4ee5\u786e\u4fdd\u4f7f\u7528\u6e90\u7801\u91cc\u7684\u5e93\u6587\u4ef6

\u5e76\u5c06\u5176\u4f5c\u4e3a\u8981\u4f7f\u7528\u7684SDK\u7684Java SDK\u3002\u5982\u4e0b\u56fe

\u4e09\u3001\u751f\u6210\u5bfc\u5165AS\u6240\u9700\u914d\u7f6e\u6587\u4ef6(*.ipr)

\u2460\u7f16\u8bd1\u6e90\u7801(\u4e3a\u4e86\u786e\u4fdd\u751f\u6210\u4e86.java\u6587\u4ef6\uff0c\u5982R.java\uff1b\u5982\u679c\u7f16\u8bd1\u8fc7\uff0c\u5219\u65e0\u9700\u518d\u6b21\u7f16\u8bd1)

\u2461\u68c0\u67e5out/host/linux-x86/framework/\u76ee\u5f55\u4e0b\u662f\u5426\u6709idegen.jar

\u5982\u679cidegen.jar\u4e0d\u5b58\u5728\uff0c\u6267\u884c:

mmm development/tools/idegen/
\u57285.0.1\u7684\u6e90\u7801\u4e2d\u4f1a\u751f\u6210res.java\u7684\u6587\u4ef6\u5939\uff0c\u5bfc\u81f4idegen.jar\u8fd0\u884c\u65f6\u629bFileNotFoundException\uff0c\u8fd9\u662fidegen\u7684\u4ee3\u7801\u4e0d\u591f\u4e25\u8c28\u9020\u6210\u7684\u3002

\u6211\u7684\u5206\u4eab\u91cc\u6709\u4fee\u6539\u8fd9\u4e2abug\u7684patch\uff0c\u6216\u8005\u76f4\u63a5\u4f7f\u7528\u6211\u5206\u4eab\u7684idegen.jar\u3002

\u2462\u6267\u884c

development/tools/idegen/idegen.sh
\u7b49\u5f85\u51fa\u73b0\u7c7b\u4f3c\u4e0b\u9762\u7684\u7ed3\u679c:

Read excludes: 5ms
Traversed tree: 44078ms
\u8fd9\u65f6\u4f1a\u5728\u6e90\u7801\u7684\u6839\u76ee\u5f55\u4e0b\u751f\u6210android.ipr\u548candroid.iml\u4e24\u4e2aIntelliJ IDEA(AS\u662f\u57fa\u4e8eIntelliJ IDEA\u793e\u533a\u7248\u5f00\u53d1\u7684)\u7684\u914d\u7f6e\u6587\u4ef6

Tips\uff1a

AS\u5728\u5bfc\u5165\u4ee3\u7801\u65f6\u6bd4\u8f83\u6162\uff0c\u5efa\u8bae\u5148\u4fee\u6539android.iml\uff0c\u5c06\u81ea\u5df1\u7528\u4e0d\u5230\u7684\u4ee3\u7801exclude\u51fa\u53bb.\u53ef\u4ee5\u4eff\u7167\u8fc7\u6ee4.repo\u6587\u4ef6\u5939\u7684\u8bed\u6cd5,\u5982:





\u8fd9\u6837\u5728\u5bfc\u5165\u65f6\u5c31\u4f1a\u8df3\u8fc7abi\u548cart\u6587\u4ef6\u5939.\u8fc7\u6ee4\u7684\u8d8a\u591a\uff0cAS\u7684\u5904\u7406\u901f\u5ea6\u5c31\u4f1a\u8d8a\u5feb.

\u2463\u5728AS\u4e2d\u6253\u5f00\u6e90\u7801\u6839\u76ee\u5f55\u4e0b\u65b0\u751f\u6210\u7684android.ipr

\u5982\u679c\u5728\u5bfc\u5165\u65f6AS\u51fa\u73b0

\u5219\u5efa\u8bae\u6309\u7167\u5176\u7ed9\u5b9a\u7684\u89e3\u51b3\u65b9\u6cd5\u6765\u89e3\u51b3(\u7f51\u5740:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit)\uff0c\u5177\u4f53\u5185\u5bb9\u5982\u4e0b\u56fe:

\u56db\u3001\u89e3\u51b3\u6e90\u7801\u4e2d\u8df3\u8f6c\u9519\u8bef\u95ee\u9898

\u2460\u4e3a\u5f53\u524d\u5de5\u7a0b\u8bbe\u7f6e\u6b63\u786e\u7684SDK\u548cJDK

\u2461\u8bbe\u7f6e'Modules'\u7684\u4f9d\u8d56

\u5148\u5c06\u6240\u6709\u4f9d\u8d56\u5220\u6389\uff0c\u53ea\u7559\u4e0b\u4e0a\u56fe'1'\u6240\u6307\u5411\u7684\u4e24\u4e2a(\u6ce8\u610f:\u8fd9\u91cc\u5220\u9664\u5168\u90e8\u53ea\u662f\u4e3a\u4e86\u65b9\u4fbf\u3002\u5982\u679c\u786e\u5b9e\u7528\u5230\u4e86.jar,\u5728\u5c06\u5b83\u4eec\u7684\u8def\u5f84\u6dfb\u52a0\u8fdb\u6765\u5c31\u53ef\u4ee5\u4e86.

\u5982:5.0.1\u7684ContactsCommon\u7528\u5230\u4e86geocoder-2.9.jar\u548clibphonenumber-6.2.jar)

\u70b9\u51fb\u4e0a\u56fe\u4e2d'2'\u6307\u5411\u7684'+'\u5e76\u9009\u62e9\u4e0a\u56fe'3'\u6307\u5411\u7684'Jars or directories'\u9009\u9879\uff0c\u4f9d\u6b21\u5c06frameworks\u548cexternal\u6587\u4ef6\u5939\u6dfb\u52a0\u8fdb\u6765.\u5982:

\u5176\u5b83\u7248\u672c\u7684\u4ee3\u7801\u5728\u6dfb\u52a0frameworks\u65f6\u53ef\u80fd\u4f1a\u663e\u793a\u6210:

\u6ca1\u6709\u5173\u7cfb\uff0c\u53ea\u662f\u663e\u793a\u95ee\u9898\uff0c\u70b9\u51fbOK\u8fd8\u662f\u4f1a\u628aframeworks\u8def\u5f84\u6dfb\u52a0\u8fdb\u53bb\u7684.

\u5982\u679c\u8fd8\u6709\u4ee3\u7801\u8df3\u8f6c\u9519\u8bef\uff0c\u8bf7\u4eff\u7167\u4e0a\u9762\u7684\u6b65\u9aa4\u5c06\u76f8\u5e94\u4ee3\u7801\u7684\u8def\u5f84\u6216jar\u6587\u4ef6\u6dfb\u52a0\u5230\u5176Dependencies\u6807\u7b7e\u9875\u4e2d\u5373\u53ef.

\u4e94\u3001DEBUG\u6e90\u7801

\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u7ed9\u521a\u5bfc\u5165\u7684\u5de5\u7a0b\u5728'Modules'\u4e2d\u6dfb\u52a0'Android Framework'\u6765\u8ba9AS\u5c06\u5b83\u4f5c\u4e3a\u4e00\u4e2aAndroid\u5de5\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u6211\u4eec\u8c03\u8bd5\u4ee3\u7801.

\u53ef\u4ee5\u6309\u7167\u4e0a\u56fe\u4e2d'1'\u548c'2'\u6765\u6dfb\u52a0Android Framework\u652f\u6301.

\u5728\u4ee3\u7801\u4e2d\u52a0\u65ad\u70b9\uff0c\u7136\u540e\u9009\u62e9'Run'->'Attach debugger to Android process'\u6216\u8005\u76f4\u63a5\u70b9\u51fb\u4e0b\u56fe\u6240\u793a\u7684\u56fe\u6807

\u5728\u5f39\u51fa\u7684\u9009\u62e9\u8fdb\u7a0b(Choose Process)\u5bf9\u8bdd\u6846\u4e2d\uff0c\u52fe\u9009\u663e\u793a\u6240\u6709\u8fdb\u7a0b\uff0c\u9009\u62e9\u8981DEBUG\u7684\u4ee3\u7801\u6240\u5728\u7684\u8fdb\u7a0b\uff0c\u70b9\u51fbOK\u5373\u53ef.

\u516d\u3001\u5176\u5b83

\u4ee3\u7801\u4e2d\u5f88\u591a\u5730\u65b9\u63d0\u793aCall requires API Level x.... \u51fa\u73b0\u8fd9\u4e2a\u95ee\u9898\u662f\u56e0\u4e3aAS\u5c06\u6211\u4eec\u7684\u5de5\u7a0b\u5f53\u505a\u5b89\u5353\u5e94\u7528\u7a0b\u5e8f\u5de5\u7a0b\u4e86\uff0c\u4e14\u6e90\u7801\u4e2d\u6ca1\u6709\u6307\u5b9aminSdkVersion.

\u6211\u4eec\u53ea\u9700\u5728\u6e90\u7801\u6839\u76ee\u5f55\u52a0\u4e00\u4e2a\u58f0\u660eminSdkVersion\u7684AndroidManifest.xml\u6587\u4ef6\u5373\u53ef(\u5206\u4eab\u4e86\u4e00\u4e2aAndroidManifest.xml)\u3002

\u4e5f\u53ef\u4ee5\u8003\u8651\u4f7f\u7528build.gradle\u6765\u89e3\u51b3\u8be5\u95ee\u9898\u3002

本文是以源码中development/tools/idegen/README作为指导文档.

环境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源码

由于AS是基于IntelliJ IDEA开发的,所以本文也适用于IntelliJ IDEA

一、修改Android Studio(以下简称AS)的内存配置

因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。

二、配置AS的JDK、SDK

在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件

并将其作为要使用的SDK的Java SDK。如下图

三、生成导入AS所需配置文件(*.ipr)

①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

②检查out/host/linux-x86/framework/目录下是否有idegen.jar

如果idegen.jar不存在,执行:

mmm development/tools/idegen/
在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。

我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。

③执行

development/tools/idegen/idegen.sh
等待出现类似下面的结果:

Read excludes: 5ms
Traversed tree: 44078ms
这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件

Tips:

AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />

这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.

④在AS中打开源码根目录下新生成的android.ipr

如果在导入时AS出现

则建议按照其给定的解决方法来解决(网址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具体内容如下图:

四、解决源码中跳转错误问题

①为当前工程设置正确的SDK和JDK

②设置'Modules'的依赖

先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.

如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)

点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来.如:

其它版本的代码在添加frameworks时可能会显示成:

没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.

如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.

五、DEBUG源码

我们可以通过给刚导入的工程在'Modules'中添加'Android Framework'来让AS将它作为一个Android工程,从而方便我们调试代码.

可以按照上图中'1'和'2'来添加Android Framework支持.

在代码中加断点,然后选择'Run'->'Attach debugger to Android process'或者直接点击下图所示的图标

在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.

六、其它

代码中很多地方提示Call requires API Level x.... 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.

我们只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。

也可以考虑使用build.gradle来解决该问题。

扩展阅读:android苹果版下载 ... androidstudio手机版下载 ... download android verslon ... android下载安装app ... android webview ... download for android ... android官网入口 ... 安卓studio手机版下载 ... fl studio mobile ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网