1.å¦ä½ä½¿ç¨android-support-v7-appcompat
2.Android-support-v7-appcompat.jar中为何会缺少这个文件,是文件路径?
å¦ä½ä½¿ç¨android-support-v7-appcompat
å¦æå¨ä½çæ¬Androidå¹³å°ä¸å¼åä¸ä¸ªåºç¨ç¨åºï¼èåºç¨ç¨åºåæ³ä½¿ç¨é«çæ¬ææ¥æçåè½ï¼å°±éè¦ä½¿ç¨Supportåºã
Android Support v4 æ¯ææ©ï¼å¹´4æ份ï¼å®ç°çåºãç¨å¨Android1.6 (API lever 4)æè æ´é«çæ¬ä¹ä¸ãå®å å«äºç¸å¯¹V4, V大çå¤çåè½ã
ä¾å¦ï¼Fragmentï¼NotificationCompatï¼LoadBroadcastManagerï¼ViewPagerï¼PageTabAtripï¼Loaderï¼FileProvider çã详ç»API åè /reference/android/support/v4/app/package-summary.html
Android Support v7: è¿ä¸ªå æ¯ä¸ºäºèèAndroid2.1(API level 7) å以ä¸çæ¬è设计çï¼ä½æ¯v7æ¯è¦ä¾èµv4è¿ä¸ªå çï¼ä¹å°±æ¯å¦æè¦ä½¿ç¨ï¼ä¸¤ä¸ªå å¾åæ¶è¢«å¼ç¨ã v7æ¯æäºAction Barã
Android Support v:è¿ä¸ªå ç设计æ¯ä¸ºäºandroid 3.2åæ´é«çæ¬çï¼ä¸è¬æ们é½ä¸å¸¸ç¨ï¼å¹³æ¿å¼åä¸è½ç¨å°ã
é¦å è¦ä¿è¯Android Support Library 被å®è£
ç¶åå¨å·¥ç¨ä¸å¢å ï¼ä¾å¦ support-v4 Libraryï¼
å¨ADTä¸éè¦æç §ä»¥ä¸æ¥éª¤ï¼
1ãå³å»å½åå·¥ç¨ï¼æ¥æ¾Properties
2ãéæ©Java Build Path
3ãéæ©Libraries tabï¼ç¹å»å³è¾¹é¢æ¿çAdd External JARsæé®
4ãéæ©android-support-v4.jaræ件ï¼è¿ä¸æ件ç常è§è·¯å¾ä¸º:YOUR_DRIVE\android-sdks\extras\android\support\v4\android-support-v4.jar
5ãå®ææ·»å åï¼éæ©Order and Exportæ ç¾ï¼ç¡®è®¤å³å¯ã
5 v4ãv7ãv çä¾å代ç
4v : <sdk>/extras/android/support/samples/Support4Demos/
7v : <sdk>/extras/android/support/samples/Support7Demos/
v : <sdk>/extras/android/support/samples/SupportDemos/
App Navigation: <sdk>/extras/android/support/samples/SupportAppNavigation/
æ们éè¦ä½¿ç¨è¿ä¸ªçToolbarå°±æ¯éè¦ä½¿ç¨å°V7å ã
é¦å è¦ä½¿ç¨V7å ï¼ä½ å¾å»ä¸è½½å¥½ï¼ä½¿ç¨SDK Managerå»ä¸è½½ï¼æ¯å¨ExtraçAndroidSupport Repositoryè¿ä¸ªä¸ä¸ï¼åºè¯¥å¾å¿«çãä¸è½½å¥½ä¹åï¼å¯ä»¥æéé¢ç\android-sdk-windows\extras\android\support\v7\appcompat\libsï¼è¿ä¸ªè·¯å¾ä¸ç两个JARå ï¼V4åV7ï¼ CTRT C+CTRT V å°ä½ å¾é¡¹ç®çlibç®å½å°ä¸ï¼ç¶åbuild path æ·»å å°è¯¥projectçclass pathä¸ã对çJAR å å³é®ï¼Biuld Path -- >add to Build Path å°±å¯ä»¥äºã
ç¶åï¼ä½ å¯è½ä¼åç°è¿æé®é¢ï¼æ¯å¦resç®å½ä¸çstyleæ件åºç°äºé®é¢ï¼å®¢å®ä¸è¦æ¥ï¼è¿æ¶åä½ åºè¯¥æappcompat_v7è¿ä¸ªå å¯¼å ¥è¿æ¥ï¼ä¸è¬æ¥è¯´ï¼æ们第ä¸æ¬¡ä½¿ç¨Eclipseçæ¶åï¼å®ä¼èªå¨å¸®æä»¬å¯¼å ¥å°æ们çworkplaceä¸ï¼ä½æ¯å¯è½æç§åå ï¼æ¯å¦æ们ä¸ä¸å°å¿å é¤äºï¼åæ¥æ们没æè¿ä¸ªå ççï¼æ以æ们éè¦éæ°å¯¼å ¥ï¼ç¶åä½ å°±å»\android-sdk-windows\extras\android\support\v7\appcompatï¼åé¢çåèªä¸åï¼çä½ èªå·±çSDKæ¾å¨ä»ä¹ä½ç½®ï¼ï¼è¿ä¸ªå å¯¼å ¥ï¼æå顺便å¤å¶ä¸ä»½å°ä½ å¾workplaceä¸ï¼å¯¼å ¥çæ¶åéæ©å¤å¶ï¼ï¼ç¶åokã
åå¦ä½ å¾é¡¹ç®ä¸æ¯ä½äºä½ å¾workplaceä¸ï¼èæ¯ä»å¤é¢ä¸äºè·¯å¾å¯¼å ¥ï¼é£ä¹ä½ åºè¯¥å¤å¶ä¸ä»½è¿å ¥ä½ çworkplaceä¸ï¼å¯¼å ¥çæ¶åéæ©å¤å¶ï¼ï¼è¿æ ·ä¹è¡å¯ä»¥äºã
å¨å¯¼å ¥ä½ å¾appcompat_v7çæ¶åï¼åå¦æ¯resçæä¸äºæ件åºç°äºé®é¢ï¼æ¯å¦ä½ çstyleæ件夹å¾æä¸äºxmlæ件åºç°é误ï¼ä¹ä¸è¦çæ¥ï¼å®¢å®ï¼è¿æ¶åä½ åºè¯¥å»ä¿®æ¹ä¸ä¸project.propertiesè¿ä¸ªæ件ï¼æä»çæå°çsdkæ¹æä½ å·²ç»ä¸è½½å å«çï¼æ大çä¹æ¯åæ ·ï¼ä¸å®éè¦ä½ ä¸è½½å å«çã
è¿æ ·ï¼å¨ä½ ç项ç®ä¸ï¼å³é®åå»propertiesï¼ç¶åéæ©Androidï¼ç¶ålibraryï¼addï¼ææ们åæå¯¼å ¥çappcompat_v7æ·»å è¿æ¥ï¼è¿æ ·å°±åºè¯¥è½è§£å³é®é¢äºã
Android-support-v7-appcompat.jar中为何会缺少这个文件,是文件路径?
今天用 APK 反编译工具看了一下自己项目生成的 APK 文件,发现代码并没有混淆,于是设置了用 ProGuard 混淆代码,可是混淆是必须在非 Debug 模式才会生效的,即使你是以 Release 模式来 Run As 启动所生成的 APK 包,依然是显示网页源码没有使用 ProGuard 混淆的。于是决定导出一下 Release 版的 APK,导出分“签名”和“不签名”的两种,都这么做了,当然是要签名一下了,所以遇到了后面这两个问题。一、strings.xml 的翻译问题
在你的项目名字上面点鼠标右键,弹出下面的菜单,选择 Android Tools -> Export Signed Application Package... ,
然后会看到这么一个提示:
并且得到下面这样的错误描述:
大意是,导出操作因为 Lint Error Checking (检测 Lint 错误) 出现致命错误而退出,百度统计源码请修正这些错误再运行导出,或者在设置里的 Android -> Lint Error Checking 页面里把 “Run full error check when exporting app” 把选项关掉。
而错误描述里面的说的是,strings.xml 里面的 app_name 缺少 af(Afrikaans), am(Amharic), ar, bg, bn-rBD, ca, cs, da, de ... 等语言的翻译,这个可能跟创建工程时自动生成的项目 appcompat_v7 里的 strings.xml 的语言数量有关,我们当然不希望每种语言都翻译一遍啊,纯属吃多了,除非我们真的卸载源码安装的mysql想每种语言都翻译。
另一方面,我们也不希望关掉所有的 Lint Error Checking,所以我们可以这么做,打开eclipse 菜单的 Windows -> Perferences,
切换到 Android -> Lint Error Checking 子项下面,下面这是 Missing Translation 的默认设置:
我们可以把这一项的 Severity 由 Fatal (致命) 修改为 Ignore(忽略) 或者 Warning(警告),如下图:
另:关于多语言翻译的问题,有一个问题是可可v9源码值得关注的,例如:《Android翻译多国语言字符串注意事项》。
二、签名 keystore 的逗号问题
点击确定,然后重新开始前面的步骤,开始导出,这次可以了,下面是导出的界面,选择你要导出的多用户 管理 源码项目:
后面就是选择 keystore ,你可以选择已经存在的 keystore 或者新建一个 keystore,我选择新建,输入密码,然后进入下面这个设置界面:
下一步,最后生成的时候,我们得到这样一个错误:
Google 一下,找到这么一篇: 《keytool 错误: java.io.IOException: Incorrect AVA format》,stackoverflow 上也有类似的讨论:keytool error :java.io.IoException:Incorrect AVA format ,结论都是一样的,原来原因竟然是因为 “,”(逗号) 被认为是特殊字符,这通常发生在书写 “City or Locality” 时,按我们平时的习惯都会写成 “Beijing, China”,而我也不例外的写成了 “GuangXi, China” ,所以就出错了,找到原因,去掉逗号再试,就 OK 了。
除了用 Eclipse 以外,还有一种签名方法,就是使用 Keytool 和 Jarsigner 给 app 签名,而这种签名是允许加入这个逗号的,《keytool 错误: java.io.IOException: Incorrect AVA format》 里有提到。
这里贴一个 keytool 关于特殊字符的说明及用法,摘自:/question/_,
特殊字符还包括,加号(+),引号("),斜杠(),大于小于号(< 和 >),分号(;) 等,解决的办法是用 转义符。