精华内容
下载资源
问答
  • 命令行编译APK

    2013-06-05 10:41:42
    手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。 你可以在以下目录发现ant脚本: /platforms/android-1.5/templates/android-rules.xml 第一步: 产生R文件以及包资源 aapt package...

    手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。

    你可以在以下目录发现ant脚本: <SDK_HOME>/platforms/android-1.5/templates/android-rules.xml

    第一步: 产生R文件以及包资源
    aapt  package -f -M ${manifest.file} -F ${packaged.resource.file} -I ${path.to.android-jar.library} -S ${android-resource-directory} [-m -J ${folder.to.output.the.R.java}]


    第二步:编译java源文件以及R.java文件
    use javac


    第三步:将classes文件转化成Dalvik自节码
    use dx.bat
    dx.bat  –dex  –output=${output.dex.file}  ${compiled.classes.directory}  ${jar files..}

    第四步:创建未签名的apk
    use apkbuilder

    apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}

    or

    apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}  -rf  ${source.dir}  -rj  ${libraries.dir}

    -rf = resources required for compiled source files?
    -rj = resources required for jar files

    第六步: 产生一个key
    use keytool

    第七步骤: 对APK进行签名
    use jarsigner

    jarsigner  -keystore ${keystore} -storepass  ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}


    第八步: 发布
    use adb
    adb -d install -r ${signed.apk}

    Inspecting your APK file:

    aapt list -v latest.apk

    Open questions:
    1. Can you include more than one dex file in the apk?
    2. Can you have dex file named other than classes.dex in the apk?
    3. Does an apk have to have a packaged resource?

    展开全文
  • 命令行编译apk

    2012-03-23 17:43:56
    六:使用android SDK提供的dx.bat命令行脚本生成classes.dex文件。 dx --dex --output=bin/classes.dex bin/classes 其中classes.dex为生成的目标文件,bin/classes为class文件所在目录。 七:使用Android SDK提供的...
    [color=green][size=large]一:首先必须配置jvm的path,sdk的path(这样运行各种可执行文件时就不必显示的添加可执行文件的路径了,如javac,aapt等)。
    vim ~/.bashrc
    根据自己软件的安装情况在.bashrc文件的末行添加如下:
    export JAVA_HOME=/usr/lib/jvm/default-java:/usr/lib/jvm/java-6-openjdk
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:JAVA_HOME/lib.tools.jar
    export JAVA_HOME CLASSPATH PATH
    export PATH=${PATH}:/home/huangqin/android-sdks/platform-tools
    export PATH=${PATH}:/home/huangqin/android-sdks/tools
    export PATH=~/bin:$PATH

    二:进入上层应用的根目录。如:
    cd ~/android-sdks/samples/android-15/WiFiDirectDemo

    三:使用aapt生成R.java类文件
    aapt package -f -m -J gen/ -S res -I ../../../platforms/android-14/android.jar -M AndroidManifest.xml
    其中:-f -m -J gen/代表按覆盖的形式在gen目录下生成带包路径的R.java,-S res指定资源文件 ,-I ../../../platforms/android-14/android.jar指定使用的android类,-M AndroidManifest.xml指定程序的配置文件。

    四:2使用android SDK提供的aidl.exe把.aidl转成.java文件。
    usage: aidl OPTIONS INPUT [OUTPUT]
    aidl --preprocess OUTPUT INPUT...


    OPTIONS:
    -I<DIR> search path for import statements.
    -d<FILE> generate dependency file.
    -p<FILE> file created by --preprocess to import.
    -o<FOLDER> base output folder for generated files.
    -b fail when trying to compile a parcelable.

    INPUT:
    An aidl interface file.

    OUTPUT:
    The generated interface files.


    五:编译.java类文件生成class文件。
    javac -encoding GB18030 -target 1.6 -bootclasspath ../../../platforms/android-14/android.jar -d bin src/com/example/android/wifidirect/*.java gen/com/example/android/wifidirect/R.java
    其中-target 1.6 为jdk的版本号

    附:javac用法
    用法:javac <选项> <源文件>
    其中,可能的选项包括:
    -g 生成所有调试信息
    -g:none 不生成任何调试信息
    -g:{lines,vars,source} 只生成某些调试信息
    -nowarn 不生成任何警告
    -verbose 输出有关编译器正在执行的操作的消息
    -deprecation 输出使用已过时的 API 的源位置
    -classpath <路径> 指定查找用户类文件和注释处理程序的位置
    -cp <路径> 指定查找用户类文件和注释处理程序的位置
    -sourcepath <路径> 指定查找输入源文件的位置
    -bootclasspath <路径> 覆盖引导类文件的位置
    -extdirs <目录> 覆盖安装的扩展目录的位置
    -endorseddirs <目录> 覆盖签名的标准路径的位置
    -proc:{none,only} 控制是否执行注释处理和/或编译。
    -processor <class1>[,<class2>,<class3>...]要运行的注释处理程序的名称;绕过默认的搜索进程
    -processorpath <路径> 指定查找注释处理程序的位置
    -d <目录> 指定存放生成的类文件的位置
    -s <目录> 指定存放生成的源文件的位置
    -implicit:{none,class} 指定是否为隐式引用文件生成类文件
    -encoding <编码> 指定源文件使用的字符编码
    -source <版本> 提供与指定版本的源兼容性
    -target <版本> 生成特定 VM 版本的类文件
    -version 版本信息
    -help 输出标准选项的提要
    -Akey[=value] 传递给注释处理程序的选项
    -X 输出非标准选项的提要
    -J<标志> 直接将 <标志> 传递给运行时系统
    -Werror Terminate compilation if warnings occur


    六:使用android SDK提供的dx.bat命令行脚本生成classes.dex文件。
    dx --dex --output=bin/classes.dex bin/classes
    其中classes.dex为生成的目标文件,bin/classes为class文件所在目录。

    七:使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等)
    aapt package -f -M AndroidManifest.xml -S res -A assets -I ../../../platforms/android-14/android.jar -F bin/WifiDirectDemo
    将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成WifiDirectDemo

    八:生成未签名的apk安装文件。
    apkbuilder WifiDirectDemo.apk -v -u -z bin/WifiDirectDemo -f bin/classes.dex -rf src/
    其中:WifiDirectDemo.apk为生成的apk ,-z bin/WifiDirectDemo为资源包,bin/classes.dex为类文件包

    详细信息:
    THIS TOOL IS DEPRECATED. See --help for more information.

    Packaging WifiDirectDemo.apk
    bin/WifiDirectDemo:
    => assets/sample_file.txt
    => res/drawable/details_view.xml
    => res/drawable/machine.png
    => res/drawable/section_header.xml
    => res/layout/device_detail.xml
    => res/layout/device_list.xml
    => res/layout/main.xml
    => res/layout/row_devices.xml
    => res/menu/action_items.xml
    => AndroidManifest.xml
    => resources.arsc
    => res/drawable-hdpi/ic_action_discover.png
    => res/drawable-hdpi/ic_action_on_off.png
    => res/drawable-hdpi/ic_launcher.png
    => res/drawable-hdpi/icon.png
    => res/drawable-ldpi/ic_action_discover.png
    => res/drawable-ldpi/ic_action_on_off.png
    => res/drawable-ldpi/ic_launcher.png
    => res/drawable-ldpi/icon.png
    => res/drawable-mdpi/ic_action_discover.png
    => res/drawable-mdpi/ic_action_on_off.png
    => res/drawable-mdpi/ic_launcher.png
    => res/drawable-mdpi/icon.png
    => res/drawable-xhdpi/ic_action_discover.png
    => res/drawable-xhdpi/ic_action_on_off.png
    => res/drawable-xhdpi/ic_launcher.png
    => res/layout-land/main.xml
    => res/layout-large/main.xml
    bin/classes.dex => classes.dex

    九:使用jdk的jarsigner对未签名的包进行apk签名。


    十:编写共用的.sh文件。[/size][/color]
    展开全文
  • 手动命令行编译APK

    2020-01-08 09:17:33
    平时开发为了提高效率,我们都喜欢使用集成开发工具,如Android Studios、Eclipse 等等。效率是提高了,但往往会忽略一些基本原理。现在我们抛开这些工具,自己通过打包命令,手动编译APK

    平时开发为了提高效率,我们都喜欢使用集成开发工具,如Android Studios、Eclipse 等等。效率是提高了,但往往会忽略一些基本原理。现在我们抛开这些工具,自己通过打包命令,手动编译APK。

    APK解压

    不知道大家有没有了解,APK其实是一个zip格式文件。我们将一个app.apk 后缀名改成app.zip,然后用unzip 解压它。
    如图所示:

    app.zip.jpg

    解压后的得到了以下几个重要的文件。

    • resources.arsc :通过AAPT编译后的资源索引表文件。
    • AndroidMainfest.xml:编译后的压缩文件,包括了一些应用的信息如包名、版本号、权限、组件注册等等。
    • res目录: 存放APP的资源,包括图片,字符串、布局等等文件。
    • classes.dex:java 源码编译后生成的java 字节码文件。
    • META-INF目录:存放的是签名信息,用来保证apk包的完整性和系统的安全。

    unzip.jpg

    通过以上简单的解压,简单了了解最终得到的文件,大家可以带着疑惑往下看,这些文件是怎么来的。

    编译流程

    我们都知道,一个基本的Android工程是由 Mainifest、Resources、Assets、Sourcescode、Libraries、等组成。那么他们是怎么构建起来的呢?看以下这张来自google官方经典的流程图。

    build.png

    1. 打包资源文件,生成R.java。 Application Resources 通过aapt工具生成 Compiled Resources 和R.java。
    2. 编译aidl,转成java Interfaces文件。如果项目中没有aidl文件,这一步忽略。
    3. 编译所有的.java 源码文件,生成.class 字节码文件。java编译器将应用源码文件 、aapt 生成的R.java、aidl编译后的 java
      编译成.class Files.
    4. 转换所有class 文件,生成 .dex 文件。将工程中的编译好的.class 文件 和 第三方 类库 通过 dex 工具生成 .dex 文件。
    5. 生成无签名的.apk文件。将 编译好的资源文件 、.dex 文件、通过 apkbuider 生成 .apk
    6. 生成签名的.apk文件。将 无签名的apk 通过jarsigner 命令生成有签名的apk
    7. 优化签名apk文件。通过zipalign 工具 将所有资源文件距离调整为4字节的整数倍,这样访问文件会更快。

    手动打包

    了解打包流程后,我们通过例子手动验证一下。手动建立以下几个文件。结构如下:

    1. android-project/
    2. ├── AndroidManifest.xml
    3. ├── gen/
    4. ├── lib/
    5. │ └── android-support-v4.jar
    6. ├── out/
    7. ├── res/
    8. │ ├── drawable-xhdpi/
    9. │ │ └── icon.png
    10. │ ├── drawable-xxhdpi/
    11. │ │ └── icon.png
    12. │ ├── drawable-xxxhdpi/
    13. │ │ └── icon.png
    14. │ └── layout/
    15. │ └── activity_main.xml
    16. └── src/
    17. └── cn/
    18. └── androidblog/
    19. └── testbuild/
    20. └── MainActivity.java

    第一步:资源编译

    使用aapt工具。aapt命令网上很多,我就不说了。

    1. jomeslu@jomeslu:~$ aapt package -f
    2. -M AndroidManifest.xml
    3. -I "$ANDROID_HOME/platforms/android-N/android.jar"
    4. -S res/
    5. -J gen/
    6. -m

    然后生成的R.java 在gen/cn/androidblog/testbuild/R.java文件

    1. /* AUTO-GENERATED FILE. DO NOT MODIFY.
    2. *
    3. * This class was automatically generated by the
    4. * aapt tool from the resource data it found. It
    5. * should not be modified by hand.
    6. */
    7. package com.androidblog.testbuild;
    8. public final class R {
    9. public static final class attr {
    10. }
    11. public static final class drawable {
    12. public static final int ic_launcher=0x7f020000;
    13. }
    14. public static final class layout {
    15. public static final int activity_main=0x7f030000;
    16. }
    17. }

    aapt 参数的
    -f 如果编译出来的文件已经存在,强制覆盖。
    -m 使生成的包的目录放在-J参数指定的目录。
    -J 指定生成的R.java的输出目录
    -S res文件夹路径
    -A assert文件夹的路径
    -M AndroidManifest.xml的路径
    -I 某个版本平台的android.jar的路径
    -F 具体指定apk文件的输出

    关于资源编译这块涉及很多很有趣的地方。比如打包的时候,资源冲突的解决,动态修改资源的ID等等。插件化需要用到这个技术,所以我会单独写一篇文章详细介绍,本文先不讲。

    第二步:代码编译

    通过javac 将java文件编译成.class 文件 命令如下:

    1. jomeslu@jomeslu:~$ javac
    2. -encoding GBK
    3. -bootclasspath /home/jomeslu/Android/Sdk/platforms/android-22/android.jar
    4. -d ./testBuild/out/
    5. ./testBuild/src/com/androidblog/testbuild/*.java
    6. ./testBuild/gen/com/androidblog/testbuild/*.java
    7. -classpath ./testBuild/libs/android-support-v4.jar

    在.class 在out/cn/androidblog/testbuild/目录下

    class.png

    备注:javac 的参数

    1. -g 生成所有调试信息
    2. -g:none 不生成任何调试信息
    3. -g:{lines,vars,source} 只生成某些调试信息
    4. -nowarn 不生成任何警告
    5. -verbose 输出有关编译器正在执行的操作的消息
    6. -deprecation 输出使用已过时的 API 的源位置
    7. -classpath <路径> 指定查找用户类文件和注释处理程序的位置
    8. -cp <路径> 指定查找用户类文件和注释处理程序的位置
    9. -sourcepath <路径> 指定查找输入源文件的位置
    10. -bootclasspath <路径> 覆盖引导类文件的位置
    11. -extdirs <目录> 覆盖所安装扩展的位置
    12. -endorseddirs <目录> 覆盖签名的标准路径的位置
    13. -proc:{none,only} 控制是否执行注释处理和/或编译。
    14. -processor <class1>[,<class2>,...] 绕过默认的搜索进程
    15. -processorpath <路径> 指定查找注释处理程序的位置
    16. -parameters 生成元数据以用于方法参数的反射
    17. -d <目录> 指定放置生成的类文件的位置
    18. -s <目录> 指定放置生成的源文件的位置
    19. -h <目录> 指定放置生成的本机标头文件的位置
    20. -implicit:{none,class} 指定是否为隐式引用文件生成类文件
    21. -encoding <编码> 指定源文件使用的字符编码
    22. -source <发行版> 提供与指定发行版的源兼容性
    23. -target <发行版> 生成特定 VM 版本的类文件
    24. -profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
    25. -version 版本信息
    26. -help 输出标准选项的提要
    27. -A关键字[=值] 传递给注释处理程序的选项
    28. -X 输出非标准选项的提要
    29. -J<标记> 直接将 <标记> 传递给运行时系统
    30. -Werror 出现警告时终止编译
    31. @<文件名> 从文件读取选项和文件名

    第三步:生成.dex文件

    将工程out目录下的所有文件编译成classes.dex文件。通过dex工具编译,详细的dx命令去网上查查。

    1. jomeslu@jomeslu:~$ ./dx
    2. --dex --output=./testBuild/out/classes.dex
    3. ./testBuild/out/cn/androidblog/testbuild/

    第四步:生成APK文件

    这个阶段要分两步走 :1.资源文件初始包 2.加入classes.dex

    1. 资源文件初始包
    1. jomeslu@jomeslu:~$ aapt package -f
    2. -M AndroidManifest.xml
    3. -I /home/jomeslu/Android/Sdk/platforms/android-22/android.jar
    4. -S res/
    5. -F out/testbuildresc.apk
    1. 用apkbuilder工具 将testbuildresc.apk加入classes.dex文件
    1. jomeslu@jomeslu:~$ apkbuilder ./testbuild/out/testbuild_unsinger.apk
    2. -v
    3. -u
    4. -z ./testbuild/out/testbuildresc.apk
    5. -f ./testbuild/out/classes.dex
    6. -rf ./testbuild/src
    7. -nf ./testbuild/libs
    8. -rj ./testbuild/libs

    第五步:加入签名

    大家都知道apk都是必须加入签名的,不管是debug的签名还是公开版的签名,都需要安装,否者是不能安装使用的。SDK 提供了一个的debug key,路径在~/.android/debug.keystore.
    默认的签名信息如下

    1. Key password: android
    2. Keystore password: android
    3. Key alias: androiddebugkey

    所以用JDK提供的工具jarsigner 进行签名

    1. jomeslu@jomeslu:~$ jarsigner -verbose
    2. -keystore ~/.android/debug.keystore
    3. -storepass android
    4. -keypass android
    5. ./testbuild/out/testbuild.apk
    6. androiddebugkey

    这样,APK就已经完成了签名。

    第六步:对签名的APK优化

    这是最后一步了,APK签名完成后,需要对未压缩的数据进行4个字节的边界对齐。这样提高了APK的性能,主要体现在文件的操作、资源的读取等等。使用Zipalign工具帮我们处理这样的事情。

    1. jomeslu@jomeslu:~$ zipalign
    2. -f 4 ./testbuild/out/testbuild.apk ./testbuild/out/testbuild-optimizated.apk

    总结

    打包过程是很好理解的。总结以下的3个部分

    1. 资源的编译
    2. 编译java源码,生成.class
    3. 打包和优化APK

    好了,打包就先介绍道这里,希望对大家有帮助

    展开全文
  • 手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。  你可以在以下目录发现ant脚本: /platforms/android-1.5/templates/android-rules.xml  第一步: 产生R文件以及包资源  aapt ...
    手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。 

    你可以在以下目录发现ant脚本: <SDK_HOME>/platforms/android-1.5/templates/android-rules.xml 

    第一步: 产生R文件以及包资源 
    aapt  package -f -M ${manifest.file} -F ${packaged.resource.file} -I ${path.to.android-jar.library} -S ${android-resource-directory} [-m -J ${folder.to.output.the.R.java}] 


    第二步:编译java源文件以及R.java文件 
    use javac 


    第三步:将classes文件转化成Dalvik自节码 
    use dx.bat 
    dx.bat  –dex  –output=${output.dex.file}  ${compiled.classes.directory}  ${jar files..} 

    第四步:创建未签名的apk 
    use apkbuilder 

    apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file} 

    or 

    apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}  -rf  ${source.dir}  -rj  ${libraries.dir} 

    -rf = resources required for compiled source files? 
    -rj = resources required for jar files 

    第六步: 产生一个key 
    use keytool 

    第七步骤: 对APK进行签名 
    use jarsigner 

    jarsigner  -keystore ${keystore} -storepass  ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias} 


    第八步: 发布 
    use adb 
    adb -d install -r ${signed.apk} 

    Inspecting your APK file: 

    aapt list -v latest.apk 

    Open questions: 
    1. Can you include more than one dex file in the apk? 
    2. Can you have dex file named other than classes.dex in the apk? 
    3. Does an apk have to have a packaged resource?

    展开全文
  • 手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。你可以在以下目录发现ant脚本: <SDK_HOME>/platforms/android-1.5/templates/android-rules.xml第一步: 产生R文件以及包资源aapt ...
  • How to build Android application package (.apk) from the command line using the SDK tools Hello all android developers, I just want to share my experience building android apk manually using sdk too...
  • 六:使用android SDK提供的dx.bat命令行脚本生成classes.dex文件。 dx --dex --output=bin/classes.dex bin/classes 其中classes.dex为生成的目标文件,bin/classes为class文件所在目录。 七:使用Android SDK...
  • 转载自此篇博客 需要下载的:(Windows 64位...2.cocos compile -p android //编译apk cocos compile/run -p android -m debug/release –ap android-23(指定api版本) 注意: 不要忘记像Android.mk中添加cpp
  • 2.然后我们就可以在项目目录下使用 cocos compile -p android方式编译APK文件了。 3.注意:在打包apk之前需要修改proj.android/jni文件夹下的Android.mk文件 添加自己新增的CPP文件 最后我们来看看编译好的APK...
  • """ call ant debug """ ant_command = "ant debug" os.system(ant_command ) #copy apk file to required dest shutil.copy( os.path.join( directory, "bin/", "rust-android-debug.apk"), output) def find_...
  • 命令行编译android apk

    千次阅读 2013-10-06 03:04:58
    4、使用android SDK提供的dx.bat命令行脚本生成classes.dex文件:    例:  F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\dx.bat --dex --output=F:\...
  • """ call ant debug """ ant_command = "ant debug" os.system(ant_command ) #copy apk file to required dest shutil.copy( os.path.join( directory, "bin/", "rust-android-debug.apk"), output) def find_...
  • 最近在做Android开发时,需要引用第三方的...因而只能使用命令行方式对代码进行编译。具体方法如下:1.安装编译用的Java,安装Android Platform-tools,安装Ant,设置好各种环境变量。部分Linux下Ant已经默认集成,W
  •  当你用发布模拟编译时,apk文件是没有被签名的,你必须使用你的私有key用keytool和jarsigner签名。这些都在gradle.build文件。 manually sign it with your own private key, using Keytool and Jarsigner ...
  • ndk-build编译so瞬间通过。。 HelloJniTest.java怎么用javac编译,编译时老是报找不到符合? 编译后怎么打包? [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img]
  • 总结记录下这两天的主要学习成果,其中借鉴了网上很多资料,终于成功打包出测试apk文件并运行。 准备知识挺多的(也是自己太菜了): 1.Android中apk与dex的区别 1. *.apk文件 APK是Android Package的...
  • 一、搭建搭建环境1. 安装JDK 和 Android SDK2. 配置环境变量 D:\android-sdk-windows\tools C:... 例子信息 项目目录:D:\ProjectDemo SDK目录 :D:\android-sdk-windows\platforms\android-8\二、命令行编译Android...
  • android apk javac 命令行 编译
  • 这里详细的介绍了如何使用命令编译apk 签名 打包,很实用,如果你是Android开发者一定要知道如何编译签名apk
  • 一、搭建搭建环境 安装JDK 和 Android SDK 配置环境变量 D:\android-sdk-windows\tools C:\Program Files\Java\jdk1.6.0_20\bin 例子信息 项目目录:D:\ProjectDemo SDK目录 :D:\android-...二、命令行编译Androi
  • 对于cocos2dx的命令行编译打包安卓apk,网上很多教程都是这样说的: 编译命令:cocos compile -p android --ap 20 (最后的数字是要编译生成的版本) 但是我编译的时候打了这条命令,无论把最后的版本号改成多少...
  • 一、搭建搭建环境1. 安装JDK 和 Android SDK2. 配置环境变量D:\android-sdk-windows\... 例子信息项目目录:D:\ProjectDemoSDK目录 :D:\android-sdk-windows\platforms\android-8\二、命令行编译Android项目1. 生...
  • 使用SOOT命令行APK文件进行解码及包装 SOOT对APK解包 SOOT将JIMPLE文件转为dex文件 apk的重压缩 加密SOOT对APK解包android-platform 是用于soot编译对android平台jar包,每个版本下各有一个android.jar文件,soot...
  • 如何通过命令行或者使用代码打开一个apk文件 2011-07-18 17:30?1669人阅读? 评论(0? \o "收藏" 收藏? \o "举报" 举报 android null eclipse path string tools版权文档请勿用做商业用途 命令行打开方式 1首先你要...
  • 在windows平台,找到打包命令目录info 运行发布debug版批处理文件 开始打包过程 正在生成文件md5 开始编译安卓工程 正在通过NDK编译C++文件 编译成功 成功打包APK

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 702
精华内容 280
关键字:

命令行编译apk