Android Proguard returned with error code 1. See consoleエラー

Android Proguard returned with error code 1. See consoleエラー

ProGuardを使うことによって、Androidアプリを難読化することができます。
しかし、エラーが発生し解決に手間取ったので情報をシェアできたらと思います。

 

ProGuard新旧バージョンの違い

 

まず、Android Development Tools(ADT)のバージョンによって、ProGuard使用に必要なファイルが違ってくるので注意が必要です。

ProGuardのファイル
proguard.cfg・project.properties

ProGuardのファイル(ADT18以降)
proguard-project.txt・project.properties

新ProGuardのファイルを使うためには、ADTをアップデートする必要があります。

Eclipseの「ヘルプ」→「更新の確認」で全てのファイルを更新します。

ファイルを更新後、「ファイル」→「新規」→「その他」→「Android」→「Android application project」を新規作成します。
その後、パッケージエクスプローラを確認すると、proguard-project.txt・project.propertiesの2つのファイルが生成されていると思います。

 

ProGuardのアップグレード

古いプロジェクトでは、旧ProGuardのファイルになっています。
これを、新ProGuardのファイル2つに差し替えるだけで、ProGuardをアップグレードすることができます。

 

ProGuardの有効化

project.properties内、以下の行を有効化するだけで、ProGuardを使用できます。

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
(文頭の#を外す)

 

ProGuardのエラー

ProGuardを有効化し、パッケージ名で右クリック→「Androidツール」→「export signed application package」を選択しAPKを生成します。

しかし、この時ProGuardで以下のエラーが発生しました。

Proguard returned with error code 1. See console
proguard.ParseException: Unknown option ‘(‘ in argument number 12
at proguard.ConfigurationParser.parse(ConfigurationParser.java:191)
at proguard.ProGuard.main(ProGuard.java:484)

これは、Windowsフォルダの「Program Files (x86)」の括弧が原因ではないかと思い、以下の点を変更してみました。

●SDKロケーションの変更
「ウィンドウ」→「設定」→「Android」で「SDKロケーション」を変更します。

これまでは、
D:\Program Files (x86)\Android\android-sdk-windows
でしたが、括弧をなくし
D:\Progra~2\Android\android-sdk-windows
に変更しました。

「Program Files (x86)」と「Progra~2」は同じ場所を指しています。

●プロジェクトロケーション設定

プロジェクトのワークスペースに含まれる「Program Files (x86)」の括弧を取り除きます。

パッケージエクスプローラで変更したいプロジェクトを右クリックし、「リファクタリング」→「移動」を選択します。

初期状態では「Program Files (x86)」が含まれていると思います。

例えばロケーションが「D:\Program Files (x86)\eclipse\workspace\sampleapps」であれば、「D:\Progra~2\eclipse\workspace\sampleapps」に変更します。

しかし、このままだと「ロケーションは現在のロケーションです」となり、変更できません。(同じフォルダのため)

そこで、一旦フォルダ名を変更します。
「D:\Program Files (x86)\eclipse\workspace\sampleapps」を、
「D:\Program Files (x86)\eclipse\workspace\sampleapps_temp」などに一旦変更します。

その後、「リファクタリング」→「移動」で、
「D:\Program Files (x86)\eclipse\workspace\sampleapps_temp」を、
「D:\Progra~2\eclipse\workspace\sampleapps」に変更(戻す)します。

これで、同じフォルダですがパスの括弧を取り除くことができます。

 

●find_java.batの変更

「AndroidSDKのインストールフォルダ」→「tools」→「lib」フォルダ内になる、「find_java.bat」を開きます。

「find_java.bat」の26行目と32行目を変更します。
(各自のJavaパスに合わせます)

26行目
for /f %%a in (‘%~dps0\find_java.exe -s’) do set java_exe=%%a

set java_exe=”C:\Progra~2\JAVA\jdk 1.60_27\bin\java.exe”

32行目
for /f %%a in (‘%~dps0\find_java.exe -s -w’) do set javaw_exe=%%a

set javaw_exe=”C:\Progra~2\JAVA\jdk 1.60_27\bin\javaw.exe”

このように、各フォルダの括弧を取り除くことによって、エラーをなくすことができました。

Androidアプリ開発の先人たちの知恵に感謝です!