【摘要】本文指出了在教學中使用黑馬程序員編著的Android 移動開發基礎案例教程中遇到的幾個問題,并給出相應的解決辦法。并給出了用Android Studio開發無網絡的情況下導入項目不成功的解決辦法。
【關鍵詞】Android移動開發;Android Studio;項目導入
【中圖分類號】TP311.52 【文獻標識碼】B 【文章編號】2095-3089(2017)33-0290-02
一、Andriod簡介
Android系統是Google開發的一款開源操作系統,國內用戶俗稱“安卓”。Android操作系統內核基于Linux設計,使用了Google公司自己開發的Dalvik Java虛擬機。Android操作系統主要應用于移動設備,如智能手機、平板電腦、可穿戴設備、智能家居等領域。Android在中國市場智能手機操作系統中占據90%以上的市場份額,全球占據80%以上。
Android完全開源,此平臺從底層操作系統到上層的用戶界面和應用程序都不存在阻礙產業創新的專有權障礙。開源的最大好處是 Android平臺會擁有越來越多的應用與開發者,隨著用戶與應用的壯大,Android平臺日益成熟與穩定。
全球最大的在線搜索服務商Google已經逐漸的滲透進人們的日常生活中了Android緊密結合Google應用,與Google服務無縫集成。人們不僅僅滿足于使用電腦終端來享受諸如Gamil、谷歌地圖、在線翻譯等在線服務,由PC到移動終端的延伸成了一種必然的趨勢。而Android,則可以滿足人們的愿望。
Android版本更新很快,而且大的升級有可能出現版本之間的兼容性問題,或增加了新的技術。Android書籍的內容滯后是正常的,編寫的程序有的運行不成功。增加初學者的學習難度。本人在教學中就遇到了一些問題。
二、開發環境
1.教材使用的開發環境是:
Windows 7
Android Studio2.2.2 SDK API Level 24 模擬器用Android SDK自帶的
JDK1.8.0
2.調試程序所用的開發環境是:
Windows 7/10
Android Studio2.3.3 SDK API Level26模擬器用Android SDK自帶的
JDK1.8.0以上
三、Android Studio的項目與模塊簡介
Project(項目)相當于Eclipse中的workspace。Module(模塊)相當于Eclipse中的Project。
一個Project可以包含多個Module,Project中的build.grade用于指定構建的項目任務,Module中的build.grade用于配置模塊的構建任務。第一次運行Android Studio都是選擇New Project,后面還想再創建新的App工程時,可選擇New Module,在當前工作空間下新建一個App工程。本文中的Project均只有一個App。
工程的目錄結構如下:
Gradle Scripts中主要是工程的編譯配置文件,主要有:
1.build.gradle,該文件分為Project級與Module級,用于描述App工程的編譯規則,構建配置文件。
2.gradle-wrapper.properties,該文件為gradle wrapper的配置文件。此文件默認內容如下:
#Mon Dec 25 23:15:38 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
這個文件一般不用修改,如果gradle的版本不一樣,需手動更改的,可修心distributionUrl,也可在可視化的環境下通過操作修改。
3.proguard-rules.pro,描述java文件代碼混淆規則。
4.gradle.properties,Gradle的配置文件,在這個文件中可設置Gradle的代理。一般不用設。
5.settings.gradle,全局配置文件,如為include ':app',表示只編譯App模塊。有多個模塊要編譯可添加。
6.local.properties,項目的本地配置文件,指明SDK和NDK的本地路徑。一般不用改動。
四、遇到的問題及解決辦法
我們用的是由中國工信出版集團和人民郵電出版社出版的、黑馬程序員編著的Android 移動開發基礎案例教程。
1.使用SD卡遇到的權限問題
編程實現播放處于SD卡中的音樂或視頻文件。學生學習的過程中就沒有播放出音樂和視頻,需要補充知識點,增加一些代碼和操作,才可運行成功。
(1)把音樂文件放入SD卡指定的目錄中
在Windowsr的命令提示符下,進入Android的sdk目錄下的platform-tools文件夾中,輸入以下命令
adb root
adb remount
adb push a.mp3 /mnt/sdcard/Music/a.mp3
將當前文件夾platform-tools中的a.mp3放到模擬器/mnt/sdcard/Music文件夾中,文件名依然為a.mp3。
然后修改app/manifests/AndroidManifest.xml文件,在節點
(2)加了這行代碼之后,打開模擬器的設置→應用找到應用程序名并單擊,打開應用信息窗口查看權限發現未配置權限前灰色顯示的“未請求任何權限”變為黑色顯示,單擊“權限”進入“應用訪問授權”窗口,向右拖動存儲空間右側的滑塊,使之變為藍色。
(3)返回模擬器的主界面,找到應用程序的圖標再單擊運行,聲音就出來了。視頻文件播放也類似。
學生要在教師的指導下才能做出來,自學有難度。其它很多應用也是要開發權限的,需要舉一反三。
2.系統文件存放位置與教材所講不符
系統存放短信的數據庫文件路徑與教材所講路徑不符。調試程序所用的開發環境中存放在/data/user_de/0/com.android.providers.telephony/databases目錄下的mmssms.db文件中。而教材中所指的文件存放在/data/datae/com.android.providers.telephony/databases目錄中。
3.編碼格式轉換問題
網絡編程中,存放在服務器上的.JSON文件的編碼格式,獲取服務器的.JSON文件并將其解析出來顯示到ListView或RecyclerView上。如用記事本編輯,默認的是ANSI編碼格式,解析后顯示亂碼,需要將其轉換為UTF_8編碼格式。如在Android studio中轉換則依然顯示亂碼。而用記事本打開,將文件另存為UTF-8編碼格式則顯示正常。
4.有序廣播無法攔截
攔截有序廣播的程序,用android自帶的模擬器攔截不了,用Genymotion和夜神可攔截。
5.導入項目遇到的問題
導入一個android studio項目,繼續之前的工作,如果網絡不通很麻煩,特別是使用軟件的版本不同的情況下,需要從網上下載文件。我們償試著從File→Settings→Build,Execution,Deployment→Gradle,選擇Use local gradle distribution,并修改Gradle Scripts下的文件,使它們與在本機上創建的可運行的工程項目一致,還是不行。通過各種嘗試,找到一個便捷的方法,方便繼續之前的工作。可以在Android Studio中新建一個項目,然后在資源管理器中找到需要導入的app文件夾中的src文件夾,將其復制粘貼到新建工程相應的位置即可運行,這需要在Window資源管理器窗口中操作。此時,如果項目中無訪問網絡的操作,則項目可運行成功,有網絡訪問則需網絡通暢。
五、結束語
Android程序開發前幾年用的是Eclipse環境,由于谷歌的不支持,現轉到了Android Studio環境。軟件環境的不斷更新,程序設計人員也要不斷地學習,在使用新工具時不免會遇到各種各樣的問題,希望我們遇到的問題及處理方法對大家有些幫助。
參考文獻
[1]黑馬程序員.Android移動開發基礎案例教程[M].北京:人民郵電出版社,2017;148-248.
[2]李寧.Android開發權威指南[M].北京:人民郵電出版社,2013.9,564.
[3]歐陽燊.Android Studio開發實戰從基礎到App上線[M].北京:清華大學出版社,2017.6,12-16.
作者簡介:韋麗霜,1968,女,壯族,廣西柳江,學士,副教授,計算機應用。