1.Android studio下載鏈接地址(無需翻牆):包含先行版和正式版(推薦使用正式版bug少)
http://www.androiddevtools.cn/
2.第一次安裝避免成功先不要急着打開應用,先取消打開,到安裝目錄下/bin/idea.properties文件打開在最後面添加
disable.android.first.run=true 並後面多一行回車即可,再重新打開AS即可避免第一次去聯網請求更新
3.導入eclipse項目:例如本人需要導入D:\workspace\eclipse\test一個test項目方式
選擇需要導入的項目:(要是有依賴jar也是直接選中導入主項目即可);點擊OK進入下一步
選擇存放的工程項目目錄位置:
下一步:默認即可
finish即可完成導入,是不是so easy!
導入成功後:需要類似eclipse視圖方式需要切換
選擇project即可
看到手機圖標麼有,這就說明你項目可以正常運行了
下面講解下關於gradle編譯相關出錯地方和怎麼選擇你自己本地的gradle編譯版本
首先:一般情況下都要將gradle設置爲離線不去更新,這可能涉及到需要翻牆去尋找就會導致項目卡住在那裏一直編譯;修改如下設置
1.點擊扳手圖標---setting
搜索gradle按如下設置
如何選擇本地gradle:上面圖的第一個紅圈選項既是選擇本地gradle點擊後面的...彈出框選擇AS安裝目錄下/gradle相應版本即可如圖
2.關於導入別人項目導致本地的gradle與其不一致無法編譯通過(也就是編譯報錯問題)解決
首先:需要修改編譯gradle下的壓縮包路徑,查看本地版本方式:D:\Program\android-studio\gradle
3.關於項目整體gradle編譯工具版本修改,查看方式:D:\Program\android-studio\gradle\m2repository\com\android\tools\build\gradle
對應項目中的版本:注意是最外層gradle
4.對於單個項目或者jar依賴包的節點下的各個gradle創建工具版本號,查看方式:
基本修改完這些項目都是可以正常運行了!!!
以下爲開發過程的其他AS報錯的整理:
1.出現非法字符:將所有報錯的文件找到該文件將其格式設置爲UTF-8無BOM
如:
D:\workspace\studiojob\DadaDriver\dadaDriver\src\main\java\com\newdadadriver\utils\ChannelUtil.java
Error:(1, 1) 錯誤: 非法字符: \65279
Error:(1, 10) 錯誤: 需要class, interface或enum
2.Project Sync
The project 'DadaDriver' is not a Gradle-based project
More Information about migrating to Gradle
gradle源文件缺失問題;重新import工程即可
3.AssertionError: platform-tools doesn't match platform-tools-preview
編譯問題;刷新即可
4.最低版本報錯:更改更高版本號
Error:(5, 5) uses-sdk:minSdkVersion 5 cannot be smaller than version 8 declared in library
D:\workspace\studiojob\DadaDriver\slidingMenu_library\build\intermediates\exploded-aar\DadaDriver\androidSupportLib\unspecified\AndroidManifest.xml
5.運行項目出現:按提示添加相應的代碼到build.gradle的Android下即可
Error:duplicate files during packaging of APK D:\workspace\studiojob\DadaDriver\dadaDriver\build\outputs\apk\dadaDriver-debug-unaligned.apk
Path in archive: META-INF/LICENSE.txt
Origin 1: D:\workspace\studiojob\DadaDriver\dadaDriver\libs\httpmime-4.2.4.jar
Origin 2: D:\workspace\studiojob\DadaDriver\dadaDriver\libs\fastjson.jar
You can ignore those files in your build.gradle:
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
6.模擬器出現空白,無法正常顯示,原因:沒有對應可以顯示佈局版本,調低即可org.jetbrains.android.uipreview.RenderingException:Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupportedmajor.minor version 52.0
at org.jetbrains.android.uipreview.LayoutLibraryLoader.load(LayoutLibraryLoader.java:90)
atorg.jetbrains.android.sdk.AndroidTargetData.getLayoutLibrary(AndroidTargetData.java:180)
atcom.android.tools.idea.rendering.RenderService.createTask(RenderService.java:164)
以上是本人暫時遇到整理的問題,後續有發現其他還會添加!
7. Apk的簽名混淆打包
7-1. 創建簽名文件keystore
7-2. 簽名apk
可以代碼直接在build.gradle裏面編寫
android {
signingConfigs {// 簽名
config {
keyAlias 'test'
keyPassword '123456'
storeFile file('H:/zhou/keystore.jks')
storePassword '123456'
}
}
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.vsoontech.p2p.sample"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
//執行lint檢查,有任何的錯誤或者警告提示,都會終止構建
lintOptions {
abortOnError false
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true // 混淆
zipAlignEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config // 使用簽名
}
}
productFlavors {
}
}
7-2. 混淆
# 指定代碼的壓縮級別
-optimizationpasses 5
# 包名不混合大小寫
-dontusemixedcaseclassnames
# 不去忽略非公共的庫類
-dontskipnonpubliclibraryclasses
# 優化 不優化輸入的類文件
-dontoptimize
# 預校驗
-dontpreverify
# 混淆時是否記錄日誌
-verbose
# 混淆時所採用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
# 保護註解
-keepattributes *Annotation*
# 保持哪些類不被混淆
-keep class com.vsoontech.p2p.** {*;}
-keep class com.linkin.base.** {*;}
# 如果有引用v4包可以添加下面這行
-keep public class * extends android.support.v4.app.Fragment
# 忽略警告
-ignorewarning
# 如果引用了v4或者v7包
-dontwarn android.support.**
# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 保持自定義控件類不被混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
# 保持枚舉 enum 類不被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}