Android 如何从源代码构建股票安卓4.3浏览器?
类似于,如何从源代码构建股票Android 4.3浏览器应用程序 当我在Eclipse中导入源代码()的签出时,我无法构建它,因为依赖内部和隐藏的Android API会导致很多错误。我第一次尝试使用另一个问题()链接到的Ievgenii Nazaruk的指令,但我陷入了第二部分,因为我的Nexus 7(2013)平板电脑的Android 如何从源代码构建股票安卓4.3浏览器?,android,browser,android-source,Android,Browser,Android Source,类似于,如何从源代码构建股票Android 4.3浏览器应用程序 当我在Eclipse中导入源代码()的签出时,我无法构建它,因为依赖内部和隐藏的Android API会导致很多错误。我第一次尝试使用另一个问题()链接到的Ievgenii Nazaruk的指令,但我陷入了第二部分,因为我的Nexus 7(2013)平板电脑的framework.jar不包含classes.dex条目。Ievgenii Nazaruk解决了大部分问题()。我只是更新了他关于运行安卓4.3的Nexus7(2013)平
framework.jar
不包含classes.dex
条目。Ievgenii Nazaruk解决了大部分问题()。我只是更新了他关于运行安卓4.3的Nexus7(2013)平板电脑的说明,以及最新版本的
要开始,请执行以下操作:
- 确保您已经安装了带有最新ADT插件和最新Android SDK的Eclipse。在撰写本文时,最新的Android SDK版本是22.3
Mac用户提示:有一个Android SDK软件包,可以安装:
brew安装android sdk
- 在Eclipse中,打开Android SDK管理器并安装Android 4.3(API 18)SDK平台。还可以在“Extras”下安装Android支持库
- 使用USB电缆将Android 4.3设备连接到您的计算机上,如果尚未安装,请进行设置。通过运行:
adb设备
- 安装。在撰写本文时,
/smali
的当前版本是2.0.2baksmali
- 安装。自制用户:
brew安装dex2jar
- 安装。自制用户:
brew安装bbe
$ANDROID_HOME
来引用ANDROID SDK的位置
访问Android的内部/隐藏API
$android\u HOME/platforms/android-18/
中的android.jar
去掉了所有内部android类和隐藏API,其中一些是构建浏览器所需的。我们将按照Ievgenii-Nazaruk的说明创建一个定制的Android SDK平台,该平台包含所有内部/隐藏的API
cd
放入其中framework
文件夹,并从设备的/system/framework
文件夹中复制bouncycastle.odex
、core.odex
、ext.odex
和framework.odex
:
mkdir framework && cd framework
adb pull /system/framework/bouncycastle.odex
adb pull /system/framework/core-junit.odex
adb pull /system/framework/core.odex
adb pull /system/framework/ext.odex
adb pull /system/framework/framework.odex
cd ..
这些命令将在临时文件夹中创建一个out/
文件夹smali
创建一个DEX文件,但首先我们需要删除out/
目录中生成的一些smali文件,因为smali要处理的文件太多(“意外的顶级异常:org.jf.util.ExceptionWithContext:未签名的短值超出范围”):
Android.jar
。要做到这一点,我们需要一些来自真实Android 4.3平台的Android.jar
:
mkdir android_jar && cd android_jar
unzip $ANDROID_HOME/platforms/android-18/android.jar resources.arsc
unzip $ANDROID_HOME/platforms/android-18/android.jar 'com/google/common/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'java/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/net/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/security/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/sql/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/xml/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'org/apache/http/*'
unzip $ANDROID_HOME/platforms/android-18/android.jar 'res/*'
unzip ../android-dex2jar.jar
$ANDROID\u HOME/platforms/ANDROID-18-custom/build.prop
。您需要更改两行:
ro.build.version.sdk=-18
ro.build.version.release=4.3-custom
跑步
现在来看有趣的部分。首先清理项目,然后作为->Android应用程序运行。你现在应该在你的Android 4.3设备上有一个功能齐全的股票浏览器应用程序 如果你要引用某人的话,那么你可能应该链接到原来的帖子:) d2j-dex2jar android.dex mkdir android_jar && cd android_jar unzip $ANDROID_HOME/platforms/android-18/android.jar resources.arsc unzip $ANDROID_HOME/platforms/android-18/android.jar 'com/google/common/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'java/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/net/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/security/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/sql/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/xml/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'org/apache/http/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'res/*' unzip ../android-dex2jar.jar cp -R $ANDROID_HOME/platforms/android-18 $ANDROID_HOME/platforms/android-18-custom unlink $ANDROID_HOME/platforms/android-18-custom/android.jar jar cf $ANDROID_HOME/platforms/android-18-custom/android.jar * ro.build.version.sdk=-18 ro.build.version.release=4.3-custom unzip com.android.ide.eclipse.adt_*.jar mv com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class.bak bbe -e 's~internal/**~Internal/**~' -o com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class.bak jar uf com.android.ide.eclipse.adt_*.jar com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class