發表文章

目前顯示的是有「Android Studio」標籤的文章

如何解決 Your project's Gradle version is incompatible with the Java version that Flutter is using for Gradle.

圖片
前言 為什麼會發生Gradle的問題?  說這個問題之前就要先提到什麼是Gradle,Gradle就是Java的編譯打包工具之一,Android官方指定的打包工具,也就是Android開發者必備的技能之一。 開發過Android的人一定有發生過,舊的專案本來執行都好好的,但是換了新電腦,重新下載Android Studio將舊的專案要進行開發時,有時候就會發生gradle不支援的情形? 原因在於Android Studio的版本有必需的Gradle外掛版本,請見 版本對應表 。 Gradle外掛版本又與專案內部的Gradle版本有相容的問題,請見 版本對應表 。 Java版本也要與Gradle版本相容,請見 版本對應表 本題開始 回到本題,由於Flutter在build Android app的部份,需要使用Gradle這個打包工具來進行編譯成APK。 而Java與Gradle的版本有其對應的關係存在,所以當Flutter專案裡面的Java版本與Gradle的版本對應不相容時,就會出現這個錯誤。在上面的錯誤訊息中也有提示可以前往 版本對應表 ,找出適合的版本。 快速小結一下,解決的方法就是: Java版本要與Gradle版本相容,Gradle版本要再與Android Gradle Plugin版本相容。 解決步驟 1. 修改在專案中的Gradle版本: 修改的方法是找出 gradle-wrapper.properties 檔案,將裡面的distributionUrl裡所列的版本號改成適合的版本號 假設修改為Gradle 7.5版,按下Android Studio的Run之後,就會看到Android Studio已經自動下載了一包對應版號的Gradle檔案。 接下來會發現有新的錯誤訊息: Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01 Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old n...

Android Studio Arctic Fox 載入 AAR錯誤訊息: Build was configured to prefer settings repositories over project repositories but repository 'flatDir' was added by build file 'app/build.gradle')

圖片
想要導入AAR檔案做為Library使用時,在之前Android Studio Arctic Fox之前的版本,有一項必備的步驟是在app/build.gradle加入了下列的語法,讓libs目錄做為存放library的目錄 repositories { flatDir { dirs 'libs' } } 但是如果是在Arctic Fox的版本,卻會發生以下的錯誤訊息: A problem occurred evaluating project ':app'. > Build was configured to prefer settings repositories over project repositories but repository 'flatDir' was added by build file 'app/build.gradle' 解決的方法: 1. 刪除本來的語法 repositories { flatDir { dirs 'libs' } } 2. dependencies加上 implementation fileTree( dir : 'libs' , include : [ '*.jar' , '*.aar' ]) 參考資料: https://huayig.cn/index.php/archives/101/

Android Studio Arctic Fox中文顯示失敗

圖片
當Android Studio升級為Arctic Fox之後,發現在中文的顯示會取代成為方塊 甚至在搜尋輸入中文字也會變成方塊,造成無法搜尋中文字的情形 解決方法 1.開啟Android Studio設定 Mac按下快捷鍵 CMD⌘ + , Windows按下快捷鍵 Ctrl+Alt+S 2.修改設定 Appearance & Behavior / Appearance 勾選 Use custom font 按下OK完成設定 3.完成

如何解決Android studio build code時間過久(How to solve Android Studio spend much time for debug build)

圖片
Android在開發的過程,都會經歷多次的debug build來安裝在手機上看執行的結果 然而在經歷了多次的build code之後, 是不是會覺得越build越久? 有時甚至是按下了build,到完成安裝到手機run起來都要6分鐘以上... 因為實在太不合理了,所以這個時候可能已經開始上網去找Android studio加速之類的方法了 常常找到的結果都是叫你把Memory調大、啟用新一代Dex編譯器...之類的方法... 但是如果你跟著照做,但build code還是一樣越來越慢,有可能是因為Java的關係 這個時候可以試著強制把Java關掉的方法來試試看 1.開啟活動監視器 2.關閉Java程序 把所有在活動監視器上看到的Java程序都按下停止的按鈕, 然後再去Android studio按下build, 就會發現瞬間build code的速度又變回剛開Android studio時的速度了

如何解決Flutter專案在不同電腦開發時造成無法build的情形?

圖片
如果你在不同的電腦進行開發Flutter專案,雖然是同一包程式碼,但當在不同的電腦要執行run debug的時候,有時候會無法執行並出現了下列的錯誤訊息: This package referenced a Flutter repository via the .packages file that is no longer available.  如果在繼續往下看錯誤訊息,其實會看到IDE告訴你這台電腦正在使用的Flutter SDK路徑與專案內所儲存的Flutter SDK路徑不一致。 解決的方法就是把Flutter專案底下的.packages檔案刪除後 再執行指令: flutter pub get 如果是使用Android Studio開發則可以從「Tools/Flutter/Flutter Package Get」 然後你的Flutter專案就又可以正常執行了。 Reference: https://github.com/flutter/flutter/issues/21435

Git 如何刪除已被加入追蹤的檔案 how to delete file from git repo

圖片
在使用Android Studio開發的過程, 如果在一開始忘了把專案會自動產生/變動的檔案加入gitignore裡就push上去了 例如.idea/misc.xml 事後就算再把那個檔案加入gitignore還是會被追蹤到變動 就會造成每次隊友把code pull下來,就會有個變動過的檔案在uncommit change提醒你 而且這個跟程式碼一點關係都沒有呀,實在滿煩惱的 解決的方法是 使用git rm指令 git rm --cached .idea/misc.xml 在輸入完指令之後會顯示被rm掉的檔案 之後再push上去之後,這個被加入到repo的檔案不會再出現了 Reference: https://stackoverflow.com/questions/2047465/how-can-i-delete-a-file-from-git-repo

如何將開發專案整合到Android Studio的版本控管

圖片
在開發專案時,無論是否為多人開發同一個專案,或是整個專案從頭到尾都只有獨自一人開發,版本控管可以讓你的程式碼加入快照(Snapshot)的功能,就等於讓你的程式碼具有時光回朔的功能,於是如何使用版本控管軟體已是軟體工程師必備的技能之一。 這篇文章是介紹如何將大家熟知的版本控管軟體 Git 整合到Android Studio的介面裡,將一些Git圖形化介面的功能整合到Android Studio裡面。 1.在專案已經開啟之後,在上方的工具列找到「VCS/Enable Version Control Integration」 2.你會發現Android Studio可以整合的版本控管軟體有好幾套,在下拉選單選擇「Git」 3.於是就已經可以使用圖型化介面的方式操作Git了 這個方法也可以讓已有加入版本管理專案整合到Android Studio的版本管理(VCS)裡,切換到Version Control的分頁可以看到之前commit的log。 除了可以直接透過Android Studio使用GUI的方式去操作Git之外,整合之後當程式碼有任何改動的時候,可以直接從檔案目錄結構看見變化(紅色是尚未加入追蹤的檔案、藍色是commit之後有修改的檔案、綠色是新增的檔案)。 而且在程式碼裡的行數區塊,會以不同的顏色提醒在哪幾行是有修改後尚未commit的程式碼,如下圖的第13、14行是有更動的程式碼區塊。

更新Android Studio 2.0之後Gradle版本錯誤

圖片
終於等到官方釋出了Android Studio 2.0穩定版,這次版本推出了好幾項開發過程相當 好用的功能 ,所以是一定要升級的版本。 但從舊有的版本升級之後卻不能build code了,出現了下列的錯誤訊息: Error:(1, 1) A problem occurred evaluating project ':app'. > Failed to apply plugin [id 'com.android.application'] > Gradle version 2.8 is required. Current version is 2.2.1. If using the gradle wrapper, try editing the distributionUrl in /Documents/AndroidDev/source_code/project_name/gradle/wrapper/gradle-wrapper.properties to gradle-2.8-all.zip 上網查的結果,發現也有人提到這幾乎都是每次版本更新時常會發生Gradle版本不適合的老問題了,於是照著錯誤訊息中指出的檔案修改: 在Android Studio的左邊選單找到gradle/wrapper/gradle-wrapper.properties 開啟之後,找到原本的版本名稱(以本例的版本是2.2.1) 修改成2.8,但已經有人發生 版本要求為2.10 了,所以可以直接就先改成2.10了,而改成2.10之後也是確定可以正常使用的 接著還有可能會發生Gradle Plugin版本不適合的問題 Gradle Plugin更新完之後會發現classpath裡的gradle版本已經變成2.0.0 Reference: http://stackoverflow.com/questions/34605667/android-studio-gradle-version-gradle-version-2-8-is-required

Eclipse專案移植到Android Studio時發生META-INF/LICENSE.txt與suport-library-v4/v7內容重覆的問題

當我們想把使用Eclipse寫的code移植到Android Studio來開發,如果有當初在Eclipse把整個專案包成別的專案可以使用的Library(在Properties設定為"is Library"),整合之後程式碼都沒有出錯,但要Build apk時就有可能會看到類似的錯誤訊息: Error:Execution failed for task ':library:tools:transformResourcesWithMergeJavaResForRelease'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE.txt File1:~/…/[ProjectName]/library/tools/libs/httpcore-4.1.4.jar File2:~/…/[ProjectName]/library/tools/libs/httpclient-4.1.3.jar File3:~/…/[ProjectName]/library/tools/libs/httpmime-4.1.3.jar 解決的方法是在Gradle裡面加上: packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } 但是要看發生重覆的檔案位置在哪,本例在Android Studio建立一個Library Project來放置當初在Eclipse的is Library Project,而出現重覆的地方是訊息指出的那三個jar檔,也是在Android Studio的Library專案(...

在Android Studio加入第三方Library專案,以ViewPagerIndicator為例

圖片
ViewPagerIndicator 是一個可以很快實作在ViewPager滑動換頁的頁面下方指示點的open source library。但由於ViewPagerIndicator沒有出jar檔,也沒有提供直接在gradle加上dependencies 就能直接引入使用,所以只能把整包library download下來之後,放到專案的目錄裡,定義為library使用。 而在把此library引入的過程有發現一些問題,此篇也是作為其他把整個完整的library程式碼專案包到自己要開發的專案裡的方法。 1.先建立一個名為”library”的資料夾,用來做為放置library的目錄  在專案按右鍵 > New > Directory, 命名為library(名稱可以自訂) 2.複製ViewPagerIndicator到剛剛建立的library目錄裡 3.修改專案的settings.gradle include ':app' ,':library:ViewpagerIndicator' 4.修改app module裡的build.gradle dependencies { compile project(' :library:ViewpagerIndicator ') } 5.在library裡建立一個build.gradle檔案   apply plugin: 'android-library' android { sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } ...

Mac使用Android Studio整合Git,以bitbucket為例

圖片
1. 在Bitbucket上建立新專案 2. 新增 SSh key 到帳號裡(Add an SSH key to an account) 使用終端機程式切換到.ssh目錄下輸入: ssh-keygen -C "E-mail" -t rsa 將上述的"E-mail"輸入電子郵件信箱,然後就會發現該目錄底下多了 id_rsa 與 id_rsa.pub 這兩個檔案 複製id_rsa.pub的內容, 在終端機程式輸入: pbcopy < ~/.ssh/id_rsa.pub 到Bitbucket後台設定的Add an SSH key to an account的Key欄位貼上,Label可以隨意填寫 3. 建立本地端的儲存庫(Repository) 在Android Studio的工具列選擇 VCS > Import into Version Control > Create Git Repository 4.新增遠端Repository 使用終端機程式切換到project已建立git的目錄下輸入: git remote add origin ssh://git@bitbucket.org/帳號名稱/專案名稱.git 5. 加入當前目錄下的所有檔案到stage git add . 6. 提交檔案加入文字資訊 git commit -am "init" 7.上傳到遠端儲存庫 git push origin master 如果沒有執行步驟2,會因為沒有權限而無法上傳檔案 如果有執行步驟2,就會得到下面的成功畫面 8.回到Bitbucket就可以看到上傳成功的畫面