Showing posts with label Android notes. Show all posts
Showing posts with label Android notes. Show all posts

9.04.2014

安裝Android (AOSP) Build Environment

1. Installing the JDK

Java 7: For the latest version of Android
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

Optionally, update the default Java version by running:
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac



2. Installing required packages (Ubuntu 12.04)

You will need a 64-bit version of Ubuntu. Ubuntu 12.04 is recommended. Building using an older version of Ubuntu is not supported on master or recent releases.

$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

錯誤訊息:
The following packages have unmet dependencies:
 libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
                        Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.



參考:http://source.android.com/source/initializing.html


錯誤訊息解法參考:(未測試)
http://www.rover12421.com/2013/08/12/ubuntu-12-04-on-libgl1-mesa-glx-i386-installation-problems.html
http://blog.csdn.net/lqxandroid2012/article/details/9792365


3. 取得Android源始碼


3.1 準備必要的工具

要下載 AOSP 的程式碼,你至少需要 curl、git、python 這三個程式。在 Debian 或 Ubuntu 上面你只要使用:
$ sudo apt-get install curl git python
就可以把它們弄到手。接下來我們要先設定 git:
$ git config --global user.name 名字
$ git config --global user.email email


3.2 下載 repo 版本管理工具

接下來我們必需下載 repo 版本管理工具,我們可以在家目錄之下建立一個資料夾,並把這個資料夾加到 $PATH 裡面:

$ mkdir ~/bin
$ export PATH=~/bin:$PATH 

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo   (錯誤)
$ curl http://git-repo.googlecode.com/files/repo-1.13 > ~/bin/repo
$ chmod +x ~/bin/repo


3.3 開始下載 Android 程式碼

下載 Android 程式碼,首先我們先建立一個用來放置 Android 程式碼的資料夾:
$ mkdir ~/android-src
$ cd ~/android-src

初始化 repo 相關的設定:(查找自己要下載的版本)
$ repo init -u https://android.googlesource.com/platform/manifest

接著 repo 會問你一些問題,通常使用預設值就可以了。最後就是按下:
$ repo sync
# 備註:你可以加上 -j2 或 -j4 平行下載。


或是選擇自已要下載的版本,這裡舉4.3為例
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.3_r2.1


之後經過漫長的等待,你就會有一份完整的 Android 程式碼!



參考:
http://blog.logan.tw/2011/10/android-open-source-project-android.html
http://blog.chinaunix.net/uid-26074270-id-2458828.html
http://www.360doc.com/content/14/0109/11/11948835_343813571.shtml



9.03.2014

Android開發環境配置On Ubuntu

Ubuntu 10.04 TLS 環境配置


一、安裝JDK 1.7.x
增加軟體源
$sudo add-apt-repository ppa:webupd8team/java

更新軟體源
$sudo apt-get update

安裝jdk
$sudo apt-get install oracle-java7-installer

檢查Java版本
$java -version

切換Java版本指令
$sudo update-alternatives --config java



二、安裝Eclipse環境
拷貝Eclipse 4.3資料夾至預放置的目錄下
1. 設置Android SDK指定目錄位置
    (解壓縮完的資料夾要改讀寫權限$ sudo chmod -R 755 android-sdk-linux/)
2. 安裝ADT plugin(Help->Install New Software)



3. 利用eclipse工具 Android SDK Manager下載Android API


三、設定在終端機下執行ADB環境配置
1. 編輯:vm@vm:~$ sudo gedit ~/.bashrc

2. 貼上配置

## For Android (OLD)
#export ANDROID_HOME=/home/vm/_develop_lib/android-sdk-linux
#export PATH=$PATH:$ANDROID_HOME/tools/
#export PATH=$PATH:$ANDROID_HOME/platform-tools/

#Android SDK
ANDROID_SDK_ROOT=~/_develop_lib/android-sdk-linux
PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH
export PATH

#Android NDK
ANDROID_NDK_ROOT=~/_develop_lib/android-ndk-linux
PATH=$ANDROID_NDK_ROOT:$PATH
ANDROID_NDK_Sample=$ANDROID_NDK_ROOT/samples
ANDROID_NDK_Workspace=~/workspace
export ANDROID_NDK_ROOT ANDROID_NDK_Sample ANDROID_NDK_Workspace PATH

3. 更新環境變數:vm@vm:~$ source ~/.bashrc


4. 建立捷徑:sudo ln -s /home/vm/_developer_SDK/android-sdk/platform-tools/adb(實測不需要)

Notes:
如果在Ubuntu 64 OS下執行ADB會出現No Such file or directory
vm@vm:~$ ls -l adbls: cannot access adb: No such file or directory

解法:安裝lib32ncurses5和lib32stdc++6.
$sudo apt-get install lib32ncurses5 lib32stdc++6


實際測實ADB環境配置是否成功:
1. USB 連結Android Phone
2. $adb devices


----------------------------------------------------------------------------------------------

環境設置詳細參考如下

用戶環境變數通常被存儲在下面的文件中:
~/.profile
~/.bash_profile 或者 ~./bash_login
~/.bashrc
上述文件在Ubuntu 10.0以前版本不推薦使用。

系統環境變數一般保存在下面的文件中:
/etc/environment
/etc/profile
/etc/bash.bashrc
/etc/profile和/etc/bash.bashrc在Ubuntu 10.0版本中不推薦使用。


Ubuntu Linux 環境變數的優先級
/etc/profile:在登錄時,操作系統定制用戶環境時使用的第一個文件,此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件自動被執行。
/etc/environment:在登錄時操作系統使用的第二個文件,系統在讀取你自己的profile前,設置環境文件的環境變數。
~/.bash_profile:在登錄時用到的第三個文件是.profile文件,每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變數,執行用戶的.bashrc文件。 /etc/bashrc:為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。
/etc/bash.bashrc:當用戶進入shell或桌面系統自動執行的腳本
幾個環境變數的優先級:1>2>3



Ubuntu Linux中設置adb環境變數
當前用戶(homer)
vi ~/.bashrc (root默認目錄下的bashrc文件)
在這個文件中加入:export PATH=/home/homer/android-sdk-linux/platform-tools/:$PATH
重啟或再次登陸後生效,如果想立即生效,則執行:source ~/.bashrc

超級用戶(root):
su root
vi ~/.bashrc (root默認目錄下的bashrc文件)
在這個文件中加入:export PATH=/home/homer/android-sdk-linux/platform-tools/:$PATH
重啟或再次登陸後生效,如果想立即生效,則執行:source ~/.bashrc

全局設置(homer、root、sudo):
1. 實現思路:
在PATH默認的bin目錄下,新建adb的軟鏈接

2. 查看sudo $PATH: echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

3. 進入sudo默認PATH:
cd /usr/local/bin/

4. 建立軟鏈接:
sudo ln -s /home/homer/android-sdk-linux/platform-tools/adb

5. 這樣,在普通用戶(homer)、超級用戶(root)、sudo用戶,都可以直接使用adb命令,因為這些用戶的PATH環境變數都包含了目錄/usr/local/bin

Ubuntu Linux 無法識別手機
homer@ubuntu:~$ adb devices
List of devices attached
???????????? no permissions

Ubuntu Linux 啟動手機識別
homer@ubuntu:~$ sudo adb kill-server
homer@ubuntu:~$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
homer@ubuntu:~$ adb devices
List of devices attached
FH6111131808 device


參考:
http://blog.csdn.net/zero10100/article/details/8769303
http://www.360doc.com/content/14/0213/00/11400509_352058800.shtml

Android開發環境配置On Mac OS X

Mac OS X 10.9



------------------------------------------------------------------------------------
安裝Apache Ant
$ant -v

下載Apache Ant

http://ant.apache.org/bindownload.cgi
$ tar vxf apache-ant-1.9.4-bin.tar.gz
$ ln -s apache-ant-1.9.4/ apache-ant (建立捷徑)


------------------------------------------------------------------------------------
顯示隱藏檔
defaults write com.apple.finder AppleShowAllFiles TRUE;\killall Finder

不顯示隱藏檔
defaults write com.apple.finder AppleShowAllFiles FALSE;\killall Finder


------------------------------------------------------------------------------------
 方法︰
開啟Finderv --> 名字的目錄 --> .bash_profile檔


加入相關Lib路徑:
## For Java
export JAVA_HOME=/Library/Java/Home

## For Android
export ANDROID_HOME=/develope/Lib/android-sdk
export PATH=$PATH:/develope/Lib/android-sdk/tools/
export PATH=$PATH:/develope/Lib/android-sdk/platform-tools/

## For ANT
export ANT_HOME=/develope/Lib/apache-ant
export PATH=$PATH:$JAVA_HOME/bin:$ANDROID_HOME/bin:$ANT_HOME/bin

存檔-->離開
重啟或重新登入失效,則可以執行,即生效:
$source .bash_profile
$touch .bash_profile


檢查配置:
echo $JAVA_HOME
echo $ANDROID_HOME
echo $ANT_HOME
echo $PATH



8.24.2014

Admob sdk 遷移至 Google Mobile Ads SDK(Google Play service)

獨立式 Android SDK 將於 8 月 1 日全面淘汰
自 2014 年 8 月 1 日起,凡是使用獨立式 Google AdMob SDK 的應用程式 (包括新應用程式和舊有應用程式的更新),都會遭到 Google Play 商店拒登。這是因為獨立式 SDK 並未使用廣告 ID,因此屆時將無法符合 Google Play 廣告政策的規定。


Google Mobile Ads SDK 入門指南
Android 範例程式:https://github.com/googleads/googleads-mobile-android-examples/tree/master/doubleclick/banner
iOS 範例式:https://github.com/googleads/googleads-mobile-ios-examples/tree/master/doubleclick/DFPBannerExample


Google Play 服務遷移
https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration?hl=zh-tw 



【Reference】
https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration?hl=zh-tw
https://developers.google.com/mobile-ads-sdk/docs/

Add google-play-services_lib project

Add google-play-services_lib project 

1. 在 Android SDK Manager 中,確認 Extras -> Google Play service 已安裝.

2. 由Eclipse 進行 project import:File -> Import -> Android -> Existing Android Code Into Workspace -> 挑選 google-play-services_lib 的位置 (ex: /develope/Lib/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib),記得選擇libproject 裡的資料夾.

3. 在原本的 project 設定:Eclipse -> Project ->Properties -> Android -> Library -> Add -> 挑選 google-play-services_lib.




條件
1. 請確認您使用的是最新版的 Android SDK,並依據 Android v3.2 或更新版本進行編譯 (將 project.properties 中的 target 設為 android-13)。

2. Android 專用 Google Mobile Ads SDK 要求 Android 2.3 或更新版本 (將 AndroidManifest.xml 中的 android:minSdkVersion 至少設為 9) 的執行階段。也就是說,您可以使用最新版本的 Android SDK 進行開發,而您的應用程式仍然可以在較早的 Android 版本 (至少 2.3 版) 上運作。


整合 SDK
將 Google 行動廣告整合進應用程式相當簡單:

1. 在 Eclipse 工作區中新增並參照 Google Play 服務程式庫專案。
2. 在 AndroidManifest.xml 加入 meta-data 標記。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.company"
          android:versionCode="1" android:versionName="1.0">
  <application android:icon="@drawable/icon" android:label="@string/app_name"
               android:debuggable="true">
    <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/>
    <activity android:label="@string/app_name" android:name="BannerExample">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
  </application>
</manifest>


3. 在資訊清單中宣告 com.google.android.gms.ads.AdActivity。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.company"
          android:versionCode="1" android:versionName="1.0">
  <application android:icon="@drawable/icon" android:label="@string/app_name"
               android:debuggable="true">
    <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/>
    <activity android:label="@string/app_name" android:name="BannerExample">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
    <activity android:name="com.google.android.gms.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
  </application>
</manifest>

4. 在資訊清單中設定網路權限。
             INTERNET
                 必要。用來存取網路,以發出廣告請求。
             ACCESS_NETWORK_STATE
                 選用。用來在發出廣告請求前,先行檢查是否有可用的網路連結。


【Reference】
https://developers.google.com/mobile-ads-sdk/docs/