顯示具有 gradle 標籤的文章。 顯示所有文章
顯示具有 gradle 標籤的文章。 顯示所有文章

2015年3月12日 星期四

Signing release key in AndroidStudio

Put this into ~/.gradle/gradle.properties

RELEASE_STORE_FILE={path to your keystore}
RELEASE_STORE_PASSWORD=*****
RELEASE_KEY_ALIAS=*****
RELEASE_KEY_PASSWORD=*****

注意!RELEASE_STORE_FILE 的路徑要是絕對路徑 Android Studio 很笨的會把 ~/.... 串起來, 然後找不到

signingConfigs {

   release {
       storeFile file(RELEASE_STORE_FILE)
       storePassword RELEASE_STORE_PASSWORD
       keyAlias RELEASE_KEY_ALIAS
       keyPassword RELEASE_KEY_PASSWORD
   }
}

buildTypes {
        release {
            signingConfig signingConfigs.release
        }
}

ref: StackOverflow

2015年2月11日 星期三

Android Studio multiple sourcesets problem

解決了一個困擾我三個月的事...

gradle 可以把 src code 分成不同的目錄
然後可以用 build variants 分別去要不要 include 這個東西

android.sourceSets.main {}  
android.sourceSets.XXX {}

因為我們現在開發只會用到 XXX
main 也被污染了, 一定要用到 XXX 裡的 code

每次 import project 時,我的 Mac 總是會選到 XXX 的 build variants
所以我的 Android Studio 可以 build 出來
用指令 gradle build 也是正常...

可是其它人的 Windows 總是會選到 main 的那個 build variants
所以他們總是 build 不過 (不過我重灌後的 Windows 上竟然可以!?)
只能改 gradle 把 XXX 裡的目錄加到 main 裡

可是這樣 Project view 時沒辦法把 src set 切開看,很醜

... 反正結論就是 UI 上把 build variant 選成 XXXDebug 就好了
害我為了要看不同 src set local 的 gradle 檔要跟別人不一樣
(只有我用 Mac)

今天為啥會解決這件事呢...
因為我的 Android Studio project 突然爛了
重 import source set 竟然跑回 main 了
而且怎弄都是這樣
才又把 windows 上的 iml 檔拿來 diff
靈機一動想到這回事
原來只是我運氣好(!?) ... -___-

這鳥東西竟然困擾我三個月
幹!

太蠢了,寫起來記錄

2014年11月4日 星期二

ApplicationId

新的 build 系統加了 applicationId 這東西

link

簡單的說, 他要解決不同版本 (free/pro) 如何產出 apk 的問題

例如說兩個版本

  • com.example.my.app.free
  • com.example.my.app.pro

在舊的 build tool 上, 要把 AndroidManifest.xml 分別用不用的 packageName 分開
… 想到就很痛苦

新的 build 系統讓 source code 幾乎都不改的情形下
只修改 .gradle 檔

app/build.gradle:

productFlavors {
    pro {
        applicationId = "com.example.my.pkg.pro"
    }
    free {
        applicationId = "com.example.my.pkg.free"
    }
}
buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}
....

注意的點在於,雖然不用改 manifest 裡的 pkg name
可是實際上 package name 已經改了

$ aapt d badging app-release.apk
package: name='com.example.my.pkg.free' versionCode='1' versionName='1.0' platformBuildVersionName=''
sdkVersion:'15'
targetSdkVersion:'20'

如果是直接指定 component 的情形下,要小心

adb shell am start -n com.example.my.pkg/.MainActivity 已經無法使用

要改成

adb shell am start -n com.example.my.pkg.free/com.example.my.pkg.MainActivity

2014年9月23日 星期二

use private API in gradle

build.gradle

加入

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xbootclasspath/p:$projectDir/libs/hidden.jar:$projectDir/libs/hidden2.jar"
        }
    }
}

Gradle duplicated resource error

BSP 在 resource 會使用 product="XXXX" 去分別不同的 target
例如 phone / tablet

在 Eclipse 時代還相安無事
可是 gradle 根本沒有考慮這個情形
(看了一下 source code, 大概吧?)

註: Merge resource check

regex saved my life again !

find res/ -name strings.xml | xargs -n 1 sed -i "" -E '/product="tablet"/d'