Edit:
Мой новый способ сделать это - использовать мой плагин Eclipse: https://github.com/banshee/AndroidProguardScala (файл readme содержит инструкции по установке и указатель на обычный сайт обновлений Eclipse).
Старый ответ все еще работает, но новый способ просто лучше.
[Старый путь]
Мой подход:
- Используйте обычные инструменты Android / eclipse для создания проекта Java.
- Добавить второй проект, содержащий код Scala. Таким образом, я могу сохранить сгенерированный код для дальнейшего использования (я новичок в Android и Scala). Этот проект может ссылаться на android.jar.
- Проект scala создает файл jar, который используется в проекте java
- Используйте proguard, чтобы раздеть библиотеку. Я считаю, что это избавляет от необходимости scala-android.jar, который использовался в 2.7
Хотя я не использовал это для чего-то более амбициозного, чем привет, мир, так что воспринимай это как набор подсказок.
В проекте scala я добавляю строитель (Builder> New), который представляет собой просто сценарий оболочки с именем pguard в корневой директории проекта, содержащий:
#!/bin/sh
cd $1
PROGUARD=$HOME/dev/proguard/lib/proguard.jar
LIBS=
OUTPUT=lib/proguard.jar
rm -f $OUTPUT
AJAR=/Users/jamesmoore/dev/android-sdk-mac_86/platforms/android-7/android.jar
# java -jar $PROGUARD -injars 'bin:lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)' -outjar $OUTPUT -libraryjars @proguard.txt
java -Xmx1g -jar $PROGUARD -injars 'bin:lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)' -outjar $OUTPUT -libraryjars $AJAR @proguard.txt
Местоположение строителя установлено на:
${build_project}/pguard
И рабочий каталог, и аргументы установлены на
${build_project}
Также в корне проекта scala есть файл аргументов proguard @ proguard.txt:
-dontwarn
-dontoptimize
-dontobfuscate
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class com.banshee.** {
public protected *;
}
Вы, конечно, захотите изменить аргументы -keep, чтобы сохранить свой собственный код.
В проекте java я добавляю файл jar, созданный проектом scala (я использую lib / proguard.jar в приведенном выше сценарии).
Не добавляйте проект scala как необходимый проект в путь сборки проекта java. Это добавит файлы классов scala в дополнение к файлу jar и запутает dex (поскольку он получит как файлы .class, так и те же вещи в jar). Насколько я могу судить, Eclipse построит все в рабочей области, поэтому, когда вы нажмете кнопку «Перейти», оба проекта будут собраны.