① android SDK 文檔目錄下都有哪些文件都代表著什麼
Android SDK 目錄下有很多文件夾,主要都是干什麼的呢?
1. add-ons 這裡面保存著附加庫,比如google Maps,當然你如果安裝了OPhone SDK,這里也會有一些類庫在裡面。
2. docs 這裡面是Android SDK API參考文檔,所有的API都可以在這里查到。
3. market_licensing 作為Android Market版權保護組件,一般發布付費應用到電子市場可以用它來反盜版。
4. platforms 是每個平台的SDK真正的文件,裡面會根據API Level劃分的SDK版本, 這里就以Android 2.2來說,進入後有一個android-8的文件夾,android-8進入後是Android 2.2 SDK的主要文件,其中ant為ant編譯腳本,data保存著一些系統資源,images是模擬器映像文件,skins則是Android模擬器的皮膚,templates是工程創建的默認模板,android.jar則是該版本的主要framework文件,tools目錄裡麵包含了重要的編譯工具,比如aapt、aidl、逆向調試工具dexmp和編譯腳本dx。
5. platform-tools 保存著一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,這里和platforms目錄中tools文件夾有些重復,主要是從android 2.3開始這些工具被劃分為通用了。
6. samples 是Android SDK自帶的默認示例工程,裡面的apidemos強烈推薦初學者運行學習,對於SQLite資料庫操作可以查看NotePad這個例子,對於游戲開發 Snake、LunarLander都是不錯的例子,對於Android主題開發Home則是android m5時代的主題設計原理。
7. tools 作為SDK根目錄下的tools文件夾,這里包含了重要的工具,比如ddms用於啟動Android調試工具,比如logcat、屏幕截圖和文件管理器,而draw9patch則是繪制android平台的可縮放png圖片的工具,sqlite3可以在PC上操作SQLite資料庫,而 monkeyrunner則是一個不錯的壓力測試應用,模擬用戶隨機按鍵,mksdcard則是模擬器SD映像的創建工具,emulator是android模擬器主程序,不過從android 1.5開始,需要輸入合適的參數才能啟動模擬器,traceview作為android平台上重要的調試工具。
8. usb_driver 顧名思義,保存著android平台google官方機型的驅動如nexus one、nexus s,同時也有一些老機型驅動的支持,比如說htc dream、htc magic和Motorola 的droid。
參考自:blog.csdn.net/coolwzjcool/article/details/7761663
② android-android怎麼實現只混淆自己的代碼,而不混淆第3方jar包
當項目中有第3方jar包時,怎麼實現混淆打包,而不對第3方包混淆
在項目中有第3方包時打包出錯日誌:
[2012-06-14 14:14:28 - humei_cc] Proguard returned with error code 1. See console
[2012-06-14 14:14:28 - humei_cc] Note: there were 2068 plicate class definitions.
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find superclass or interface java.awt.datatransfer.Clipboard
[2012-06-14 14:14:28 - humei_cc] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans
[2012-06-14 14:14:28 - humei_cc] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans
[2012-06-14 14:14:28 - humei_cc] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslException
[2012-06-14 14:14:28 - humei_cc] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslException
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.DataSource: can't find referenced class java.awt.datatransfer.DataFlavor
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.DataSource: can't find referenced class java.awt.datatransfer.DataFlavor
………………………………………………………………………………中間部分省略
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find referenced class java.awt.datatransfer.Clipboard
[2012-06-14 14:14:28 - humei_cc] Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find referenced class java.awt.datatransfer.Clipboard
[2012-06-14 14:14:28 - humei_cc] Warning: there were 288 unresolved references to classes or interfaces.
[2012-06-14 14:14:28 - humei_cc] You may need to specify additional library jars (using '-libraryjars'),
[2012-06-14 14:14:28 - humei_cc] or perhaps the '-' option.
[2012-06-14 14:14:28 - humei_cc] java.io.IOException: Please correct the above warnings first.
[2012-06-14 14:14:28 - humei_cc] at proguard.Initializer.execute(Initializer.java:308)
[2012-06-14 14:14:28 - humei_cc] at proguard.ProGuard.initialize(ProGuard.java:210)
[2012-06-14 14:14:28 - humei_cc] at proguard.ProGuard.execute(ProGuard.java:85)
[2012-06-14 14:14:28 - humei_cc] at proguard.ProGuard.main(ProGuard.java:499)
我的proguard.cfg 文件時這樣的
-optimizationpasses 5
-dontusemixedcaseclassnames
-
-verbose
-ignorewarnings
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-libraryjars libs/bcprov-jdk15on-147.jar
-libraryjars libs/PanoramaGL.jar
-libraryjars libs/activation.jar
-libraryjars libs/additionnal.jar
-libraryjars libs/mail.jar
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
已經嘗試的方案:方案一: 加入-ignorewarnings 可以正常打包了。 能過濾掉警告信息。但是治標不治本,打好的包,在實際運行中用到過的第3方包類庫時,均報空指針。方案二:不使用-ignorewarnings 添加-dontwarn java.awt.datatransfer.Transferable.** 警告信息並沒有減少,打包會失敗。
③ 「android arr」和「jar的」區別是什麼
兩者區別:
*.jar:只包含了class文件與清單文件,不包含資源文件,如圖片等所有res中的文件。
*.aar:包含所有資源,class以及res資源文件全部包含
如果你只是一個簡單的類庫那麼使用生成的*.jar文件即可;如果你的是一個UI庫,包含一些自己寫的控制項布局文件以及字體等資源文件那麼就只能使用*.aar文件。
使用方式:
*.jar:拷貝到:libs目錄,eclipse直接導入即可,AndroidStudio項目中添加:
[java] view plain
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
}
重新編譯一次項目既可完成載入。
*.aar:有兩種方式,分別為本地載入以及網路載入,由於網路載入涉及到發布到mavenCentral託管的問題這里不做討論;另外eclipse很久沒有使用了也不做討論;在這里給大家說一種本地載入的方式,簡單快捷。
這里演示的aar文件為:」genius.aar「
第一步:拷貝到:libs目錄
第二步:build.gradle 配置文件中更改為
[java] view plain
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'genius', ext:'aar')
}
分別添加了」repositories「與更改了」dependencies「,然後重新編譯一次項目就可以正常使用了。
這時打開你的項目地址」\build\intermediates\exploded-aar\「你會發現下面多了一個文件夾」genius「打開後能看見里邊包含了一個」classes.jar「文件與一些資源文件和」R.txt「文件。
這就是Android Studio自動解析了aar文件後出現的東西。
一.android studio引入aar包接入方式
1..File—>New—>New Mole—>Import .JAR/.AAR Package
2.Open Mole Settings—>Dependencies 添加依賴
完成aar包的引入
④ 如何設置Android系統電子郵件客戶端
第一步:點擊【設置】,進入【添加帳戶】-->【電子郵件】打開設置電子郵件界面;
⑤ android怎麼在源碼導入jar包
在Android源碼編譯成功的基礎上重新編譯帶自己API的android.jar需要進行以下幾步操作:
1、添加自己源代碼,在Android源碼frameworks/base目錄下新建一個文件夾保存代碼,如tv,以包的形式命名添加的文件所在的路徑,如/tv/java/android/tv,添加的java文件開頭定義的包即是編譯成功的class文件所在的包。
2、修改makefile文件
2.1 修改build/core/pathmap.mk文件
在FRAMEWORKS_ BASE_ SUBDIRS變數後添加tv\,代碼如下(makefile文件中的語句以Tab鍵空格開頭)
FRAMEWORKS_BASE_SUBDIRS := \ $(addsuffix /java, \ core \ graphics \ location \ media \ opengl \ sax \ telephony \ wifi \ vpn \ keystore \ tv \ )
2.2 修改frameworks/base/Android.mk 文件
在packages_to_ document變數後添加自己源代碼的包名稱,如android/tv,結果如下(makefile文件中的語句以Tab鍵空格開頭)
packages_to_document := \
android \
javax/microedition/khronos android/tv 3 在ubuntu命令行終端使用如下命令進行編譯:
make clean
make update-api
make PRODUCT-sdk-sdk
最後一行也可以用如下兩個命令代替: make –j4 make sdk 4 編譯結果
4.1 android.jar文件所在的目錄為
/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar並在/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_interme diates/src目錄下重新以package形式組織所有生成到android.jar中的源代碼。 4.2 SDK所在目錄為
out/host/linux-x86/sdk/,生成的sdk文件目錄和壓縮包為: android-sdk_eng.xxx_linux-x86
android-sdk_eng.xxx_linux-x86.zip(xxx為自己android源碼所在的文件名)