編輯:關於Android編程
1、gradle導入jar包的特點:(和libs文件夾導入jar包的區別)
gradle導入jar包更方便,一行代碼即可搞定。不像後者那樣還要自己去官方下載。如果官方將jar包更新了,我們只需要在build.gradle中改一下版本號就行了,不用重新去官網下載。
2、通過gradle導入的jar包是從哪裡來的:
需要注意的是:不是所有的jar包都是可以通過gradle來導入的。那通過gradle導入的jar包是從哪裡來的呢?解釋如下:
我們發現HelloWorld這個project的目錄下有一個build.gradle文件,打開它:
上圖中第17行的"jcenter()"的意思是,所有通過gradle導入的jar包都是從http://bintray.com/bintray/jcenter這個中央倉庫上扒下來的。如果你需要的jar包在這個網站上沒有,那就無法通過gradle的方式來導入哦。
順便提一下,上圖中第8行的classpath中的gradle 1.1.0是android的一個gradle插件(也是從中央倉庫扒下來的)。而我們自己使用的gradle版本如下圖所示:
我們自己下載好的gradle的路徑如下:
三、簽名打包的兩種方式:
注:給我們自己開發的app簽名,就代表著我自己的版權,以後要進行升級,也必須要使用相同的簽名才行。簽名就代表著自己的身份(即keystore),多個app可以使用同一個簽名。
如果不知道簽名是啥意思,請自行百度哦。在eclipse中簽名的方法是:選中工程,郵件選擇"export-android-export android application",
1、方式1:通過Android Studio進行簽名:
選中app這個module,選擇菜單欄"Build-Generate signed apk":
彈出如下界面:
上圖中,如果你是第一次使用簽名,就單擊紅框部分創建一個新的簽名;如果你之前有過簽名的文件,就選擇藍框部分進行導入即可。那我就先選擇紅框部分吧:
上圖中,點擊"finish"之後,可以看到Android Studio的最下方顯示:Gradle正在執行assembleRelease這樣一個任務,如下圖所示:
生成簽名好的apk之後,會彈出提示:
2、方式2:通過命令行的方式進行簽名:
(1)加載Key Store:
我們先刪掉上面的通過第一種方式所簽名的apk文件。接下來進行第二種方式來簽名,即命令行的方式。
打開Project Stucture圖形化界面:
上圖中,選中app這個module,然後切換到singning標簽欄,緊接著點擊添加,然後生成release簽名信息,緊接著點擊"OK"。接著做如下操作:
上圖中,切換到Build Types標簽,將Signing config選擇為"release",即將剛剛生成的release簽名信息配置進去。
操作完成之後,我們可以看到app這個module的build.gradle文件多出了如下紅框部分的代碼:
然後執行菜單欄的"build-clean Project":
(2)生成realease版本的apk:
緊接著在命令行Terminal輸入如下命令:(AS已經將命令行Terminal集成到了軟件當中)
gradlew assembleRelease
如果運行成功,效果如下:
生成的簽名好的apk在如下位置:
3、為什麼要使用gradlew命令而不是gradle命令:
在HelloWorld工程目錄下有一個gradle文件夾,在gradle/wrapper目錄下有一個gradle-wrapper.properties文件,打開它:
上圖代表著HelloWorld這個工程所依賴的gradle的版本信息。上圖的紅線表示,如果我們的工程中沒有gradle,軟件會根據這個url去下載gradle,終於知道為啥第一次打開AS時會這麼慢了吧?
如果我們執行了gradlew命令,實際上是執行上面的gradle wrapper,然後找到我們已經下載好的gradle 2.2.1。如果現在有很多個工程,但是每個工程的gradle版本都不一樣,我就必須要將每個版本的gradle都要配置到環境變量當中,而執行了gradlew命令,就會避免這個麻煩。
四、BuildConfig文件:
BuildConfig是IDE自動生成的一個類,在elipse中即存放在gen目錄下(如R文件)。而在Adroid Studio中,BuildConfig文件存放的位置是:app/build/generated/source/buildconfig/dubug/
五、module中build.gradle文件參數含義:
主要是module的build.gradle,截圖如下:
01行:apply plugin: 'com.android.application' 表示該module是這個應用程序的module
15行:applicationId "com.smyhvae.helloworld" 應用程序的包名
16、17行:向下兼容的最小版本、編譯版本。 注:在app/src/main/AndroidManifest.xml中不再出現這個信息了。
23行:需不需要利用24行的proguard文件來混淆代碼。在release狀態下,最好改為true。
最近用到了AsyncTask,這玩意每個寫android程序的都會用,可是不見得每個人都能用的好。如果想要用好,那麼首先勢必對基本原理有個大概了解。其實網上對這類問題的說
前言最近在做按鈕的時候遇到在給按鈕設置一張圖片作為背景的同時還要自己定義圓角,最簡單的做法就是直接切張圓角圖作為按鈕就可以了,但是如果不這樣該怎麼辦呢,看代碼:下面來看效
Android提供了三種動畫機制:屬性動畫(property animation)、補間動畫(tween animation / view animation)、幀動畫(
上幾節,我們學習如何用StartServer啟動一個服務,用bindServer去綁定一個服務,以及服務的生命周期,以及什麼是IntentService。或許有讀者會發現