Android Studio 开发(二)问题

匿名 (未验证) 提交于 2019-12-03 00:26:01

Ŀ¼

一、Mac下de的java路径

二、android studio的编译命令

三、在cocos3.1.5中 android-studio中的build-cfg.json找不到了

四、导入第三方jar包:

五、文件同步Synchronize

六、找不到libs文件夹

七、android studio打包不同cpu架构的so文件

八 、

九、Android Could not find method ndk

十、Your project contains C++ files but it is not using a supported native build system

十一、

十二、








十四、自动导入包名


十五、用AS直接连接到手机上能运行,安装apk就运行报错?

十六、更改版本号

十七、在cocos中 用 android studio调试 c++

十八、Manifest中使用${applicationId}写法

十九、android studio更改applicationId 和更改 包名package name

二十、关闭 Android Studio 新特性Instant Run

下面是正文


一、mac下JDK的安装路径

二、android studio的编译命令

cocos compile -p android --android-studio



三、在cocos3.1.5中 android-studio中的build-cfg.json找不到了

gradle supports copy assets & compile scripts from engine 3.15

在android项目的app文件夹下面的build.gradle文件中配置 原来的build-cfg.json文件中的copy_resource,请看下面代码中的红色部分

android.applicationVariants.all { variant ->     // delete previous files first     delete "${buildDir}/intermediates/assets/${variant.dirName}"      variant.mergeAssets.doLast {         copy {            from "${buildDir}/../../../../../res"            into "${buildDir}/intermediates/assets/${variant.dirName}/res"         }          copy {             from "${buildDir}/../../../../../src"             into "${buildDir}/intermediates/assets/${variant.dirName}/src"         }          copy {             from "${buildDir}/../../../../../res"             into "${buildDir}/intermediates/assets/${variant.dirName}/restsss"         }           // copy {         //     from "${buildDir}/../../../../cocos2d-x/cocos/scripting/lua-bindings/script"         //     into  "${buildDir}/intermediates/assets/${variant.dirName}/src/cocos"         // }        省略..... }
 

四、导入第三方jar包:

eclipse中导入jar包是先将jar包复制到工程文件中,然后add to build path,但是在Android studio中可不是这样的。在Android studio中导入jar包的方法是:(以谷歌的gjson.jar为例)

将gson-2.3.jar文件拷贝到工程文件的libs目录下:

导入之后,选中jar包,然后点击下图中箭头处的按钮:(synchronize:同步,可以理解为刷新)

搞定。


五、文件同步Synchronize

操作步骤同步

点击同步),它将从文件系统中加载文件,,


六、找不到libs文件夹

1、在app目录下新建libs文件夹

2.在app目录下的build.gradle的android结点中,填写上以下代码

sourceSets.main {     java.srcDir "src"     res.srcDir "res"     jniLibs.srcDir "libs"     manifest.srcFile "AndroidManifest.xml" }

七、android studio打包不同cpu架构的so文件

关于打cpu架构的so包的配置是在build.gradle文件中,就是下面的代码

externalNativeBuild {     ndkBuild {         if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {             // skip the NDK Build step if PROP_NDK_MODE is none             targets 'cocos2dlua'             arguments 'NDK_TOOLCHAIN_VERSION=4.9'             arguments 'APP_PLATFORM=android-'+PROP_TARGET_SDK_VERSION              def module_paths = [project.file("../../../cocos2d-x").absolutePath,                                 project.file("../../../cocos2d-x/cocos").absolutePath,                                 project.file("../../../cocos2d-x/external").absolutePath]             if (Os.isFamily(Os.FAMILY_WINDOWS)) {                 // should use '/'                 module_paths = module_paths.collect {it.replaceAll('\\\\', '/')}                 arguments 'NDK_MODULE_PATH=' + module_paths.join(";")             }             else {                 arguments 'NDK_MODULE_PATH=' + module_paths.join(':')             }              arguments '-j' + Runtime.runtime.availableProcessors()             abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})         }     } }
关键要看这行

abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})

其中PROP_APP_ABI定义在cradle.property文件中,不同的cpu用“:”分割,如下

//选择要添加的对应cpu类型的.so库。   // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'

PROP_APP_ABI=armeabi:armeabi-v7a:armeabi-v8a

其中的abiFilters,是cpu 过滤,最后打完的包智慧包含在abiFilters中定义的cpu架构

app目录下的build.gradle的defaultConfig对象中加入下面的代码

defaultConfig { 
 ndk {         //选择要添加的对应cpu类型的.so库。   // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'         abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'         moduleName "app"     }

}


八 、


九、Android Could not find method ndk

把 ndk 放在 defaultConfig 里面

十、Your project contains C++ files but it is not using a supported native build system




然后再在文件build.gradle(Module:app)里面的buildTypes类中添加一个这样的方法

sourceSets {     main {         jni.srcDirs = []     } }



这样就可以编译成功了

十一、

LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/../../Classes \



LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/../../../Classes \

十二、

今天在用Android Studio开发时,遇到一个问题,建了一个项目,依赖了一个自己写的库,在编译时报了这个错误,大致的原因是资源与库在清单文件里引用了相同的资源文件,Gradle插件默认会启用Manifest Merger Tool,就会发生冲突。

错误提示:

Error:Execution failed for task ':loggertest:processDebugManifest'. Manifest merger failed : Attribute application@icon value=(@mipmap/iclauncher) from AndroidManifest.xml:7:9-43 is also present at [TuringOSLoggerAPI:app:unspecified] AndroidManifest.xml:16:9-45 value=(@drawable/ic

解决方法

  1. 将依赖库中清单文件,引用的依赖库的清单文件中的,冲突部分删除掉,我这里主要删除了<android:icon="@drawable/ic_launcher">,删除过后,编译正常,程序编译通过
  2. 根据IDE提示修改,首先在项目的清单文件的根标签下引入xmlns:tools="http://schemas.android.com/tools",注意不是依赖库的的清单文件里,已测试不可行,之后在application里的标签里加入tools:replace="android:icon"之后重新build,即可通过编译,theme问题同样这样解决:tools:replace=”android:icon, android:theme”,如下:注意红色部分的位置

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.smallhut.dd"       android:versionCode="1"       android:versionName="1.1.0"       android:installLocation="auto"       xmlns:tools="http://schemas.android.com/tools">      <uses-sdk android:minSdkVersion="9"  android:targetSdkVersion="25"/>     <uses-feature android:glEsVersion="0x00020000" />      <application                  android:name="org.cocos2dx.lua.tst"                 android:allowBackup="true"               android:label="@string/app_name"                 android:icon="@drawable/icon"                 tools:replace="android:name">


Android

项目右键->

Open Module Settings->

点选Modules下面的app->

点击进入Dependencies->

点击右上角+ ->

点选Library dependency ,在其中选择你需要的support包版本添加即可


十四、自动导入包名

因为as默认是不会自动导包的,所以导包需要设置。




自动导入就是把

1. insert imports on paste 选项改为All。

3.勾上Add umambiguous imports on the fly


如下图



十五、用AS直接连接到手机上能运行,安装apk就运行报错?

取消instantRun



十六、更改版本号

eclipse里面在AndroidManifest.xml文件里面修改版本号

android:versionCode="5" android:versionName="1.1.0"

androidstudio里面在build.gradle文件里面修改版本号

versionCode 5 versionName "1.1.0"

十七、在cocos中 用 android studio调试 c++

在设置页面 Appearance & Behavior ,打开System Settings->Android SDK 中,选中CMake,LLDB,NDK,下载成功之后,在项目设置页面,ndk要设置为刚才下载的NDK,目录在sdk->ndk build 目录中,这样就可以调试c++了。



十八、Manifest中使用${applicationId}写法

Manifest中使用${applicationId}

  • Provider在声明android:authorities(该值必须唯一)时,如前缀为写死的包名字符串,当出现需要同一工程分包、分渠道打包时,安装在同一androidINSTALL FAILED CONFLICTING PROVIDERadb安装会有提示),这时可以使用${applicationId},这将避免android:authorities值非唯一的问题。

    <provider     android:name="xxxx.xxxx.xxx.xxxProvider"     android:authorities="${applicationId}.xxxx"     android:grantUriPermissions="true"     android:exported="false"/>
  • ${applicationId}也可以用在Manifest中其他需要唯一的取值情况,这种使用方式很灵活




    十九、android studio更改applicationId 和更改 包名package name

    更改applicationId,在build.gradle 文件中,更改applicationId,然后同步build.gradle

    更改package name ,在androidManifest.xml文件中,选中

    package="com.small.xxx"

    然后右键选择refractor -> rename ,然后填写需要更改的包名,然后点击refactor按钮,开始查找,会在find页面中弹出来找到的相关文件,然后点击do refactor 就可以修改包名了


二十、关闭 Android Studio 新特性Instant Run

1.打开项目,左上角的Android Studio preferences(注意:一定要在这里打开,欢迎页面里面的Setting是不可勾选的!!!!!)

2、点击 instant Run

3、取消勾选所有选项

转载自:https://blog.csdn.net/u010693827/article/details/80059902

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!